server端代码分析
主要类简介
-
Application
- 我们实现的helloServer需要继承自这个类。主要承载配置的解析、epollser的初始化、消息的处理和分发、servant的创建和管理。
- 其中最主要的两个成员: EpollServer、ServantHelperManager
-
TC_EpollServer
- 接收新的连接
- 负载所有io
- 消息分发到servant
-
ServantHelperManager
- helloServer初始化的时候会通过addServant添加特例话的helloServant。servantHelper的主要工作就是提供create接口方便创建helloServant实例。ServantHelperManager就是通过ServantName管理这些ServantHelper。
-
BindAdapter
- 监听适配器。每个bindAdaper对应一个监听的端口,并且维护一个消息队列。用于支撑不同的端口不同的协议。
- 提供Handler的初始化能力。
-
NetThread
- 承载分配到本线程的connection的io。内部依靠epoller来驱动。所谓的one sthread one looper。
-
Connection
- 维护连接的属性,是udp还是tcp
-
TC_Transceiver
- 处理数据的收发和socket的链接,这样可以排除平台的差异。具体的协议协议介系需要通过回调支持。
-
Handle
- 负责对消息的处理,分发到不同的servatn。servant在分发到不同的method。
初始化流程
-
application初始化
-
配置解析::parseConfig
这里没什么需要特别说明的,就是从服务器的配置文件中解析配置。初始化单利配置实例,并进行托管。
-
客户端部分初始化::initializeClient
由于我们的服务节点需要同nodeServer进行通信,回报自己的状态。所以,需要初始化客户端部分,也就是Communicator(详情见tars源码分析-客户端部分)。
-
服务器部分初始化::initializeServer
- 初始
-