38.muduo学习笔记之net_TcpClient.{h&cc}

本文详细解析TcpClient类的结构和功能,包括其内部的Connector对象和EventLoop类的使用,探讨了TcpClient如何实现连接建立、消息处理及数据发送等核心功能。介绍了TcpClient的构造、析构过程,以及连接管理、回调函数设置等关键操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 说明

  1. 一个TcpClient类,包含了一个Connector对象,使用了EventLoop类
  2. noncopyable

2. 变量

  1. 类型定义

    • ConnectorPtr
  2. EventLoop* loop_;

    • 不解释
  3. ConnectorPtr connector_; // avoid revealing Connector

    • 用于主动发起连接
  4. const string name_;

    • 名字
  5. ConnectionCallback connectionCallback_;

    • 连接建立回调函数
  6. MessageCallback messageCallback_;

    • 消息到来回调函数
  7. WriteCompleteCallback writeCompleteCallback_;

    • 数据发送完毕回调函数
  8. bool retry_; // atomic

    • 连接建立成功后意外断开时是否重连
  9. bool connect_; // atomic

    • 是否已连接
  10. int nextConnId_;

    • name_ + nexConId_ 用于标识一个连接
  11. mutable MutexLock mutex_;

  12. TcpConnectionPtr connection_ GUARDED_BY(mutex_);

    • Connector连接成功后,得到一个TcpConnection

3. 函数

1. 私有

  1. void newConnection(int sockfd);

    • 连接建立成功后,建立TcpConnection对象封装这个连接,设置回调函数,这个连接对象赋值给connection_,关注这个连接通道的可读事件
  2. void removeConnection(const TcpConnectionPtr& conn);

    • 把connection_指针重置,并且把连接的销毁函数connectDestroyed()加入事件循环队列
    • 如果retry_的话,也就是建立成功后被断开,就尝试重连

2. 公有

  1. 构造

    • 变量的初始化,新建Connector,并设置它的新连接建立的回调函数
  2. 析构

    • 如果连接建立的话,设置连接关闭的回调函数为detail的removeConnection
    • 否则的话说明connector_处于未连接状态,将connector_停止
  3. void connect();

    • 用connector_发起连接
  4. void disconnect();

    • 用于连接已经建立的情况下断开连接,置connect_为false,调用connect_->shutdown()
  5. void stop();

    • 停止connector_,可能连接尚未建立,停止发起连接
  6. TcpConnectionPtr connection() const

    • 返回connection_,TcpConnection指针
  7. EventLoop* getLoop() const { return loop_; }

    • 返回EventLoop对象loop_
  8. bool retry() const { return retry_; }

    • 返回retry_
  9. void enableRetry() { retry_ = true; }

    • 改变retry_
  10. const string& name() const { return name_; }

    • 返回名字
  11. void setConnectionCallback(ConnectionCallback cb)

  12. void setMessageCallback(MessageCallback cb)

  13. void setWriteCompleteCallback(WriteCompleteCallback cb)

    • 如名,设置回调函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值