1 / 11
文档名称:

客户端分拆设计方案_精品.ppt

格式:ppt   页数:11
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

客户端分拆设计方案_精品.ppt

上传人:wxb163 2012/6/25 文件大小:0 KB

下载得到文件列表

客户端分拆设计方案_精品.ppt

文档介绍

文档介绍:客户端分拆方案
各个模块
播放插件(workProxy)
workStub读取数据交给ChaosFilter播放
workProxy控制本地进程
本地进程(workStub)
NetworkStub从Layer1读取数据,workProxy
LocalServer负责给用户显示信息
LocalServer支持同时与多个播放插件进行交互
Layer1
负责下载数据并存储到缓冲文件
多语言
独立的DLL,提供从ID到String的查找
升级程序
负责检查程序版本是否最新
负责下载最新程序并解压,同时显示下载进度
安装过程中能够提示用户关闭占用目标文件的进程,给出列表
workStub通信使用Socket或者Windows Message
Layer1
播放插件
客户端各个模块关系图
->开始下载
->停止下载
->获取数据
->显示讯息
-> 获取讯息
->初始化
->开始下载
->停止下载
->获取数据
->此次缓冲结束
->获取缓冲进度
->获取传输信息
->获取频道名称
->获取频道码率
<-显示讯息
中转调用(Message)
本地进程
->开始下载
->停止下载
->获取数据
->显示讯息
<-请求下载
->创建
Update
->启动升级进程并等待升级完成
<-创建
-> 获取讯息
简单流程
ChaosFilter workProxy::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 workStub, and pass socket_from_proxy workStub.
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初始化一个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显示信息。
Layer1下载过程中发生致命错误,通知Stub,Stub通知Proxy停止播放,交给LS显示信息。
不允许同时打开一个以上的player播放同一个频道。
每个Proxy有一个接收消息的Window(随机名字),Local Server有一个接收消息的Window(固定名字),都可以通过FindWindow查找。
例外情况
播放插件进程被突然中止
本地进程每隔一段时间检查每个播放插件的线程是否还存在。
本地进程进程被突然中止
播放插件每隔一段时间检查网络程序是否存在。如果不存在,则重复启动过程,并且准备接受新的播放位置(可能有些难度)。
播放插件内部结构
The Filter
Video Pin
读取Socket播放
Audio Pin
读取Socket播放
NetworkProxy
检查网络程序是否存在
(准备好重新启动播放的流程)
根据播放状态控制网络程序
多语言切换
本地进程结构
The EXE
显示信息
(托盘图标/菜单/气泡)
(类QQ的通知窗口)
NetworkStub A
多语言切换
定时启动自动升级
定时检查每个播放
插件是否存在
检查缓冲进度
NetworkStub B
检查缓冲进度
Layer1结构
The EXE
TrackServer通讯
管理P2P