这里不说muduo 的架构模式,只介绍TcpServer的函数调用关系
EventLoop : 事件循环器,底层通过IO复用实现,用于监听所有的文件描述符
Acceptor:用于接收一个新的连接,
Channel : 用于事件的分发
(当检测到有事件发生的时候,事件循环器通知相应的Channel,由Channel 进行事件的分发,
一个文件描述符对应一个Channel。所以,Channel 分发的是对应文件描述符上到达的事件)
这里罗列几个关键的函数
TcpServer的构造函数
TcpServer::TcpServer(EventLoop* loop,
const InetAddress& listenAddr,
const string& nameArg,
Option option)
: loop_(CHECK_NOTNULL(loop)),
//获取端口
ipPort_(listenAddr.toIpPort()),
name_(nameArg),
//创建一个acceptor对象 用于操作新的连接
acceptor_(new Acceptor(loop, listenAddr, option == kReusePort)