《客户端分拆方案.ppt》由会员分享,可在线阅读,更多相关《客户端分拆方案.ppt(11页珍藏版)》请在三一文库上搜索。
1、客户端分拆方案,jarjar 2005.10,各个模块,播放插件(ChaosFilter和NetworkProxy) NetworkProxy从NetworkStub读取数据交给ChaosFilter播放 ChaosFilter根据播放状态调用NetworkProxy控制本地进程 本地进程(LocalServer和NetworkStub) NetworkStub从Layer1读取数据,然后Push给NetworkProxy LocalServer负责给用户显示信息 LocalServer支持同时与多个播放插件进行交互 Layer1 负责下载数据并存储到缓冲文件 多语言 独立的DLL,提供从ID
2、到String的查找 升级程序 负责检查程序版本是否最新 负责下载最新程序并解压,同时显示下载进度 安装过程中能够提示用户关闭占用目标文件的进程,给出列表 其他 NetworkProxy和NetworkStub通信使用Socket或者Windows Message,Layer1,播放插件,客户端各个模块关系图,-开始下载 -停止下载 -获取数据 -显示讯息,- 获取讯息,-初始化 -开始下载 -停止下载 -获取数据 -此次缓冲结束 -获取缓冲进度 -获取传输信息 -获取频道名称 -获取频道码率 -显示讯息,中转调用(Message),本地进程,-开始下载 -停止下载 -获取数据 -显示讯息,-
3、请求下载,-创建,Update,-启动升级进程并等待升级完成,-创建,- 获取讯息,简单流程,ChaosFilter call NetworkProxy:Request() NetworkProxy execute update process and wait until update finished. NetworkProxy connect to LocalServer LocalServer new ChannelMgr, and pass socket_from_proxy and ChaosUI to ChannelMgr. ChannelMgr new NetworkStub,
4、 and pass socket_from_proxy to NetworkStub. Stub Read call from socket. Stub call ChannelMgr:Request(),Proxy & Stub,Proxy,Stub,Message,Audio,Video,声音和视频要分开传输,因为数据不是严格同步的。分开之后,使用阻塞的Socket更加方便。,流程: (Local Server = LS) Proxy启动升级程序,等待升级程序退出(升级完毕)。 Proxy发送MSG(包含gtv url和Proxy接收消息的窗口名)给LS。 LS初始化一个Stub,Stub
5、初始化一个Layer1。Stub发送MSG告知Proxy初始化失败或者成功。 Proxy连接上LS,说明自己属于某个Stub。LS将连接交给Stub。 Stub从Layer1读取数据,分视频/音频通过Socket发送给Proxy。Proxy开始播放。 Proxy发送MSG通知Stub停止播放。Stub释放Layer1及自身。 辅助: Proxy和Layer1将要显示的消息发送给Stub, Stub交给LS显示。 Stub发现Layer1的数据不足,开始循环检查缓冲进度(同时交给LS显示),缓冲结束后通知Layer1。 异常: Stub初始化Layer1失败,通知Proxy停止播放,交给LS显示
6、信息。 Layer1下载过程中发生致命错误,通知Stub,Stub通知Proxy停止播放,交给LS显示信息。,不允许同时打开一个以上的player播放同一个频道。,每个Proxy有一个接收消息的Window(随机名字),Local Server有一个接收消息的Window(固定名字),都可以通过FindWindow查找。,例外情况,播放插件进程被突然中止 本地进程每隔一段时间检查每个播放插件的线程是否还存在。 本地进程进程被突然中止 播放插件每隔一段时间检查网络程序是否存在。如果不存在,则重复启动过程,并且准备接受新的播放位置(可能有些难度)。,播放插件内部结构,The Filter,Vide
7、o Pin 读取Socket播放,Audio Pin 读取Socket播放,NetworkProxy,检查网络程序是否存在 (准备好重新启动播放的流程),根据播放状态控制网络程序,多语言切换,本地进程结构,The EXE,显示信息 (托盘图标/菜单/气泡) (类QQ的通知窗口),NetworkStub A,多语言切换,定时启动自动升级 定时检查每个播放 插件是否存在,检查缓冲进度,NetworkStub B,检查缓冲进度,Layer1结构,The EXE,TrackServer通讯,管理P2P连接 下载数据并存储到缓冲文件,对外接口,多语言切换,升级程序,The Updater,检查是否最新版本,下载并解压最新版本,提示用户关闭占用目标文件的进程,覆盖目标文件,安装完成,等待目标进程退出,覆盖目标文件,关闭,不关闭,多语言切换,多语言,使用类似ini文件的格式 比如 Jpn.ini IDE_1=“ ” Eng.ini IDE_1=“good good” Chn.ini IDE_1=“好好” 自动检测操作系统使用的语言调用相应的ini文件,如果没有,则使用默认的ini文件。,
链接地址:https://www.31doc.com/p-3123682.html