ET源码学习(六):TChannel

上篇看完了TService现在看看其中出现的TChannel


先看属性



看看构造函数
这里会发现有2个构造函数:
1、一个传入的IP地址,此时将会设置isConnected = false。也就是未连接,所以调用ConnectAsync异步连接
2、另一个传入socket,此时说明是已经连接的isConnected = true,然后直接开始收发,也就是StartRecv和StartSend



连接

先看ConnectAsync,和TService有点像,同步的话就直接执行,异步的由回调抛到主线程执行



继续往下看OnAcceptComplete,设置连接好了为true,并开始收发



接收信息

看看这两个StartRecv,设置异步套接字缓冲区,也就是CircularBuffer,依然是同步异步方法然后执行HandleRecv来处理接收信息



HandleRecv处理接收信息方法,这个方法在缓冲区不够时自动扩充了缓冲区,并且将缓冲区中数据解析成流,然后设置流的开始位置,最后调用OnRead去读这个流




OnRead方法,最终调用了Service的OnRead方法,这个方法从上篇可知是一个委托

发送信息

StartSend,和上面的很像,发送完会对缓冲区进行一个回收复用




最后看一下public void Send(long actorId, MemoryStream stream)方法,开始就是根据服务器类型不同向sendBuffer写入不同数据,然后并不是立即发送,而是加入到TService下次发送的集合中,并通过上篇TService中的Update调用TChannel的Update





最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容