1. 说明
- 一个TcpClient类,包含了一个Connector对象,使用了EventLoop类
- noncopyable
2. 变量
-
类型定义
- ConnectorPtr
-
EventLoop* loop_;
- 不解释
-
ConnectorPtr connector_; // avoid revealing Connector
- 用于主动发起连接
-
const string name_;
- 名字
-
ConnectionCallback connectionCallback_;
- 连接建立回调函数
-
MessageCallback messageCallback_;
- 消息到来回调函数
-
WriteCompleteCallback writeCompleteCallback_;
- 数据发送完毕回调函数
-
bool retry_; // atomic
- 连接建立成功后意外断开时是否重连
-
bool connect_; // atomic
- 是否已连接
-
int nextConnId_;
- name_ + nexConId_ 用于标识一个连接
-
mutable MutexLock mutex_;
- 锁
-
TcpConnectionPtr connection_ GUARDED_BY(mutex_);
- Connector连接成功后,得到一个TcpConnection
3. 函数
1. 私有
-
void newConnection(int sockfd);
- 连接建立成功后,建立TcpConnection对象封装这个连接,设置回调函数,这个连接对象赋值给connection_,关注这个连接通道的可读事件
-
void removeConnection(const TcpConnectionPtr& conn);
- 把connection_指针重置,并且把连接的销毁函数connectDestroyed()加入事件循环队列
- 如果retry_的话,也就是建立成功后被断开,就尝试重连
2. 公有
-
构造
- 变量的初始化,新建Connector,并设置它的新连接建立的回调函数
-
析构
- 如果连接建立的话,设置连接关闭的回调函数为detail的removeConnection
- 否则的话说明connector_处于未连接状态,将connector_停止
-
void connect();
- 用connector_发起连接
-
void disconnect();
- 用于连接已经建立的情况下断开连接,置connect_为false,调用connect_->shutdown()
-
void stop();
- 停止connector_,可能连接尚未建立,停止发起连接
-
TcpConnectionPtr connection() const
- 返回connection_,TcpConnection指针
-
EventLoop* getLoop() const { return loop_; }
- 返回EventLoop对象loop_
-
bool retry() const { return retry_; }
- 返回retry_
-
void enableRetry() { retry_ = true; }
- 改变retry_
-
const string& name() const { return name_; }
- 返回名字
-
void setConnectionCallback(ConnectionCallback cb)
-
void setMessageCallback(MessageCallback cb)
-
void setWriteCompleteCallback(WriteCompleteCallback cb)
- 如名,设置回调函数