34.muduo学习笔记之net_TcpServer.{h&cc}

1. 说明

  1. 一个TcpServer类,这个需要配合TcPConnection类理解
  2. 使用了Acceptor,EventLoop,EventLoopThreadPool,原子类
  3. noncopyable

2. 变量

  1. 类型定义

    • ThreadInitCallback
    • ConnectionMap
  2. 枚举类型

    • kNoReusePort
    • kReusePort
  3. EventLoop* loop_; // the acceptor loop

    • 一个线程一个EventLoop
  4. const string ipPort_;

    • 服务端口
  5. const string name_;

    • 服务名
  6. std::unique_ptr acceptor_; // avoid revealing Acceptor

    • 提供监听套接字创建绑定功能
  7. std::shared_ptr threadPool_;

    • 线程池指针
  8. ConnectionCallback connectionCallback_;

    • 连接到来的回调函数
  9. MessageCallback messageCallback_;

    • 消息到来的回调函数,以上两个都在Callback.h中定义
  10. WriteCompleteCallback writeCompleteCallback_;

    • 写完成回调函数
  11. ThreadInitCallback threadInitCallback_;

    • 线程初始回调函数
  12. AtomicInt32 started_;

    • 判断是否开始,一开始为0,在start()函数中判断
  13. int nextConnId_;

    • 下一个连接ID
  14. ConnectionMap connections_

    • 连接列表,实际是TcpConnection指针列表

3. 函数

1. 私有

  1. void newConnection(int sockfd, const InetAddress& peerAddr);

    • 该函数作为acceptor_的新连接建立回调函数
    • 新建一个TcpConnectionPtr连接对象,设置一些回调函数,最后运行TcpConnection::connectEstablished函数,这个函数就是把通道加入到Poller进行关注
  2. void removeConnection(const TcpConnectionPtr& conn);

    • 连接的关闭回调函数,调用removeConnectionInLoop
  3. void removeConnectionInLoop(const TcpConnectionPtr& conn);

    • 从连接列表中移除这个连接,获得该连接的loop事件.把TcpConnection的connectDestroyed()函数加入到loop事件中

2. 公有

  1. 构造

    • 需要传参EventLoop*,InetAddress&,服务名称字符串和枚举option
    • 各变量的初始化,新建Acceptor和EventLoopThreadPool,设置Acceptor的连接回调函数为newConnection.
  2. 析构

    • 释放资源,把每一个连接的析构函数加入到每个连接的loop事件中
  3. const string& ipPort() const

    • 返回服务端口
  4. const string& name() const

    • 返回服务名
  5. EventLoop* getLoop() const

    • 返回loop_,EventLoop
  6. void setThreadNum(int numThreads)

    • 调用threadPool_->setThreadNum()设置线程池的数量
  7. void setThreadInitCallback(const ThreadInitCallback& cb)

    • 设置线程初始化回调函数
  8. std::shared_ptr threadPool()

    • 返回线程池指针
  9. void start()

    • 该函数可以多次调用,可以跨线程调用
    • 线程池start(),开启acceptor_的listen()函数,get_pointer()是muduo的获得智能指针的裸指针的函数
  10. void setConnectionCallback(const ConnectionCallback& cb)

    • 设置连接到来时的回调函数
  11. void setMessageCallback(const MessageCallback& cb)

    • 设置消息到来时的回调函数
  12. void setWriteCompleteCallback(const WriteCompleteCallback& cb)

    • 设置写完成的回调函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值