void TcpServer::onConnection(int connfd, const SockAddr& peerAddr) { EventLoop* ioLoop = loopThreadPool_.getNextLoop(); if (!ioLoop) ioLoop = loop_; TcpConnectionPtr conn(new TcpConnection(ioLoop, connfd, peerAddr, ++connectionId_)); conn->setCloseCallback(simex::bind(&TcpServer::onClose, this, _1)); conn->setMessageCallback(messageCallback_); LOG_TRACE("new client|ip=%s|port=%u", peerAddr.ip().c_str(), peerAddr.port()); connectionManager_->Add(conn->id(), conn); conn->run(); if (connectionCallback_) connectionCallback_(conn); }