结构
Connector连接成功回调
- 创建TcpConnection,将TcpClient 设置的connectionCallback_, messageCallback_和writeCompleteCallback_传递到TcpConnection,同时设置关闭连接的回调removeConnection
- 执行
connectEstablished
void TcpClient::newConnection(int sockfd)
{
loop_->assertInLoopThread();
InetAddress peerAddr(sockets::getPeerAddr(sockfd));
char buf[32];
snprintf(buf, sizeof buf, ":%s#%d", peerAddr.toIpPort().c_str(), nextConnId_);
++nextConnId_;
string connName = name_ + buf;
InetAddress localAddr(sockets::getLocalAddr(sockfd));
TcpConnectionPtr conn(new TcpConnection(loop_,
connName,
sockfd,
localAddr,
peerAddr));
conn->setConnectionCallback(connectionCallback_);
conn->setMessageCallback(messageCallback_);
conn->setWriteCompleteCallback(writeCompleteCallback_);
conn->setCloseCallback(
std::bind(&TcpClient::removeConnection, this, _1));
{
MutexLockGuard lock(mutex_);
connection_ = conn;
}
conn->connectEstablished();
}