UC故事2012/05/03 Server
来源:互联网 发布:php网络验证系统源码 编辑:程序博客网 时间:2024/05/19 03:43
1. 总结
* message bus
是否有一个中心的注册机制保存所有注册的server相关信息?或者是分布在所有server上的?
* ServerConnect
里面有一个handler的列表,根据pdu的type调用相关handler的OnNewConnection处理方法。
Ping Request只是其中一种。
* 关于MCS与Port
## Port的概念是以MCS为中心来说的
SendData,意味着从MCS往Port代表的通讯end point发信息,对于User,则意味着向client side发信息
OnReceiveData,意味着通过port接收信息到MCS,对于User,意味着将由client发过来的音视频接收进来,然后直接调用mcs->SendData就发送出去了,以后的事由mcs处理,无论最终目的是local port,或远方很远另一个服务器上的一个user port。
Q:在client代码里,肯定没有对port的处理,只有对ID的处理,对吧?
Q:client code在向远方发送信息,到底通过什么接口?Connection.SendData?如何到达UserPort::OnReceiveData()的?
Q:所有不同user之间的信息传递,都要经过MCS instance中转?
## MCS之数据转发
Port把所有需要传给第三方的东东都扔给MCS的SendData
SendData取名ForwardData更好。
Q:如果Channel是一种特殊port,why特殊处理(MCS有不少关于Channel的方法)?
A:Channel是一种特殊port,只是站在它和所有port一样,都有SendData()方法,但Channel本身在业务上有独特含义,
故MCS的接口中会出现Channel的东东 2012/07/15
Q:SendData与EvtSendData的区别?
A:前者供MCS层对象在net thread中调用,后者提供给GCC在user thread中调用(通过event queue)2012/07/15
* Channel
Q:Channel的存在就是为了处理1:N通讯?
Q:一个client向另一个client发chat消息,中间要通过类似Chat Channel一样的东东吗?或者private chat不需要,但public chat需要?
Q:为什么同时存在Channel与ChannelPort?
Q:客户端真地需要有区别地处理不同种类的Channel吗?都向all Channel发信息,server如何处理的?
* Bind and Function
在其它线程执行异步动作的关键
Functor是一种Event,最终通过EventQueue来执行的相关动作。
Q:细节需要仔细研究!
* 再议MCS 与 Proxy
proxy只有SendData一个方法,供gcc层对象调用;转换成对mcs::evtSendData的调用(异步、异线程)
^ 因为是通过event queue来调用的,故名为evtSendData() 2012/07/15
mcs中有两个方法,一个是SendData,另一个是evtSendData;前者用于mcs层内的forward操作,后者仅供gcc层对象通过proxy调用
Q:mcs::SendData到底什么时候被什么对象调用了?
A:我的理解是被port实例在SendData()或OnRecvData()调用 2012/07/15
Q:Why evtSendData不直接调mcs -> SendData而要单独实现?
A:我以为evtSendData()只是简单实现对一个dest port id发送数据,并没有转发的语义,而后者有在mcs层内部转发的语义,
要实现的功能不一样的。在evtSendData()的某个调用链上,可能会用上SendData(). 2012/07/15
* Port与data direction
Port的有意义的public biz method只有一个SendData(),而OnRecvData未定义
LocalPort定义了Private的OnRecvData方法,被SendData在另一个thread中调用,这样,SendData/OnRecvData是一个方向的数据流动。
补充:SendData()通过在user thread异步调用了OnRecvData();
OnRecvData()通过ILocalPortSink()向上层(Session, conference)传递数据。2012/07/15
Q:LocalPort只有向gcc端的流动?若gcc向mcs方向流动如何处理?应该是通过thread proxy!(这样的话,Port的语义就不单纯了)
总结下:
* user port:双向
* local port:单向
* master server port(S2SSerevr?):单向,仅仅slave -> master?
* slave server port(S2SClientPort?):单向,仅仅 master -> slave ?
另:user port / master server port / slave serve port都继承自NetMiddleLayer,故有很多共同行为(不同的行为在哪里定义的???)
* conference and Local port
Q:有多少种不同种类的数据会通过lcoal port到达conference?
CONF_ENROLL_RQST
SESS_ENROLL_RQST
CONF_LEAVE_RQST
NET_DISCONNECT_CALLBACK_REQUEST
CONF_INVITEH323_RQST
TYPE_TOP_KICK_USER
* 一个client向另一个不同info server上的client发消息的过程
对一个特定的client user port(非local port),执行OnRecvData只是简单地把数据扔给mcs(mcs->SendData()),由mcs视情况转发到ocal port、另一个user port、上线server或下级server的port。
Q:中转的info server中,数据如何到达当前conference的mcs中的?
A:通过master / slave server port接收(OnReceive),再通过SendData发给mcs,传播出去!应该是这样 3:00 PM,05/03/2012
* mcs与thread
Q:如果只有一个net thread,这些不同的conference的mcs层是如何协调执行的?
Q:info svr启动后,main thread与net thread一直在执行什么?就是event queue循环吗?
* Channel与ChannelPort
Channel Port是MCS的概念,故只存在于server的mcs层
A:我以为ChannePort存在的原因是在多个physical server之间建立一个统一的Channel的概念,是为了辅助Channel概念的实现而存在的技术类 2012/07/15
Q:Channel是一个业务概念,存在于client/server中???
2. 杂想杂问
Q:GC向Info发消息以及Info向GC发消息,总是通过message bus吗?具体说,GeneralControl::OnConfCreat如何被调用的?
A:Yes, I think so. 2012/07/15
Q:SvrConfProxy的职责:一句话?
Q:是否通过PDU传的东东都是通过MB或MCS的?或者两者没有任何关联?
Q:列一个表,各种不同的信息在各种不同的port之间传递?
- UC故事2012/05/03 Server
- UC故事2012/05/03 - 2 Server 文档
- UC故事2012/05/02 Server
- UC故事2012/05/04 Server 文档
- UC故事2012/05/06 Server
- UC故事 2012/05/07 Server文档
- UC故事2012/05/08 Server 文档
- UC故事 Server 2012/04/11
- UC故事 Server 2012/04/12
- UC故事 2012/04/19 Server
- UC故事 2012/05/20
- UC故事 2012/04/07 build server/client
- UC故事 回顾 2012/04/05
- UC故事/iPhone音频 2012/05/11
- UC故事 - 回顾 2012/04/03
- UC故事 05/09/2011
- UC故事2012/04/23
- UC故事 2012/04/26
- 今天准备去拜访一下师弟们。
- hibernate 集合(set, list, array,bag, map)
- ShareOpint service学习笔记之代码创建公告Announcement----------1
- sed命令详解
- Apophysis 渲染日志对比
- UC故事2012/05/03 Server
- OEM报错:ORA-12541: TNS:no listener (DBD ERROR: OCIServerAttach)
- linux 消息队列
- linux之cut用法
- 【LGame入门学堂001.初章】 LGame是谁?
- 快速查找指定字符
- iOS开发之多媒体播放
- 关于对dw cs3和dw cs4的一些看法!
- screen命令