darwin之socket与Task关联
来源:互联网 发布:鹏博士云计算业务中心 编辑:程序博客网 时间:2024/06/07 22:27
要想让task与socket关联起来,从而让socket以task的方式工作。
class HTTPSession : public HTTPSessionInterface;
class RTSPSession : public RTSPSessionInterface;
无论是HTTPSessionInterface还是RTSPSessionInterface,都派生于task,而内部均有TCPSocket fSocket成员,将fSocket与之际的socket关联即可。
因为TCPSocket内的ProcessEvent都是基类EventContext的方法,所以当收到客户端请求后,都是调用其关联的task的sinal方法,
class RTSPListenerSocket : public TCPListenerSocket
class HTTPListenerSocket : public TCPListenerSocket
class TCPListenerSocket : public TCPSocket, public IdleTask。
RTSPListenerSocket和HTTPListenerSocket均是派生于TCPListenerSocket。而它又是如何让task与socket关联起来的呢?
同时继承了TCPSocket和IdleTask,并且将TCPSocket内部的task直接设置成NULL。因TCPListenerSocket改写了虚函数:ProcessEvent,
因此当有客户端连接上时,直接触发Run函数,其内调用TCPListenerSocket::ProcessEvent,其内部调用GetSessionTask产生新的TCPSocket并将其内部的task与
class HTTPSession : public HTTPSessionInterface;
class RTSPSession : public RTSPSessionInterface;
无论是HTTPSessionInterface还是RTSPSessionInterface,都派生于task,而内部均有TCPSocket fSocket成员,将fSocket与之际的socket关联即可。
因为TCPSocket内的ProcessEvent都是基类EventContext的方法,所以当收到客户端请求后,都是调用其关联的task的sinal方法,
因此HTTPSession和RTSPSession在其Run函数中就能够获取到socket消息。
class RTSPListenerSocket : public TCPListenerSocket
class HTTPListenerSocket : public TCPListenerSocket
class TCPListenerSocket : public TCPSocket, public IdleTask。
RTSPListenerSocket和HTTPListenerSocket均是派生于TCPListenerSocket。而它又是如何让task与socket关联起来的呢?
同时继承了TCPSocket和IdleTask,并且将TCPSocket内部的task直接设置成NULL。因TCPListenerSocket改写了虚函数:ProcessEvent,
因此当有客户端连接上时,直接触发Run函数,其内调用TCPListenerSocket::ProcessEvent,其内部调用GetSessionTask产生新的TCPSocket并将其内部的task与
accpet后的socket关联上。最后在调用theSocket->RequestEvent(EV_RE),等待该socket事件发生。
总结:
socket事件分成两类,分别是建立RTSP连接请求的到达和RTSP请求的到达。
对于RTSP连接请求的事件,EventThread建立一个RTSPSession,并启动针对相应的socket的侦听。
对于RTSP请求的事件,EventThread把对应的RTSPSession类型的Task加入到TaskThread的队列中,等待RTSP请求被处理
阅读全文
0 0
- darwin之socket与Task关联
- darwin之socket消息获取与处理
- darwin之task线程分类
- darwin之复制字符串(Task)
- darwin之枚举值得组合使用(Task)
- darwin之socket消息处理性能问题研究
- darwin之OSRefTable使用
- darwin之解析字符串
- darwin之角色管理
- darwin之回调
- darwin之RTPSession
- darwin之数据包管理
- darwin之数据包管理
- darwin之ClientSession
- android之activity与task
- Darwin
- Darwin
- 【Darwin学习笔记】之EventThread
- Linux_Python2_Python3 并存安装笔记
- 服务器运维及部署
- QSettings 中文问题
- 压缩dp的位运算
- Observable详解
- darwin之socket与Task关联
- lua 获取某个数精确到小数点后n位的结果
- Json的增删查改
- 浮点数计算后,强制转换成整型的问题
- hashMap和hashTable
- Intent意图打开电话、邮件、短信、地图、上网
- 文件字节输出流--FileOutputStream
- (0070)iOS开发之AVFoundation枚举属性注解
- SQL Server(MSSQLSERVER) 请求失败或服务未及时响应,有关详细信息,请参见事件日志或其他的适用的错误日志。