Server类,管理整个服务器,创建两个TcpServer,一个内部一个外部,接收新连接,接收数据 ---- ==== run(InetAddress& ext_ipport,InetAddress& int_port,int threadNum) ==== 启动函数 * ext_ipport 外部IP 端口 * int_port 内部IP 端口 * threadNum TcpServer运行时线程数 1.创建内部TcpServer int_server,同时绑定onConnection、onMessage 2.创建外部TcpServer ext_server,同时绑定onConnection、onMessage 3.构建终端处理器(运行时接收外部命令) ==== onConnection(const TcpConnectionPtr& conn,conntype t) ==== 新连接处理 * TcpConnectionPtr 连接对象 * conntype 连接类型(内部or外部) 1.总的连接数加1 2.创建上下文context对象 conn_ctx(外部连接)或session_ctx(内部连接) 3.把全部context对象放到base_ctxs_,外部连接单独放到server_conns_ 4.context初始化 ==== onMessage(const TcpConnectionPtr& conn, Buffer* buf) ==== 接收数据 * conn发送过来数据的连接 * buf 发送过来的数据 1.conn找到对应的context 2.送入数据 ==== Create(conntype conn_type,const char* ip ,uint16_t port) ==== 创建新连接对应context * conn_type 连接类型-内部或者外部连接 * ip 连接IP * port 端口 1.根据连接类型创建conn_ctx或session_ctx 2.连接初始化分配cid ==== newConnID() ==== 获取新的连接ID号 1.从map中找到最新ID ==== Find(uint32_t connid) ==== 根据connid获取对应的context ==== insert(const EntryPtr& entry) ==== 把新的连接放入到系统容器中 1.所有连接放入base_ctxs_ 2.内部连接放入server_conns_ ==== remove() ==== 把已关闭连接从系统容器中移除 ==== OnTimerTick() ==== 30s一次遍历,将已失效连接关闭