SpiecsEngine
 
Loading...
Searching...
No Matches

◆ NewConnection()

void Spices::Net::TcpServer::NewConnection ( SOCKET socketFd,
const InetAddress & peerAddress )
private

Handle New Connection to Acceptor.

Parameters
socketFdAccept return SOCKET.
peerAddressAccept return Address.

Definition at line 57 of file TcpServer.cpp.

58 {
60
61 EventLoop* ioLoop = m_ThreadPool->GetNextLoop();
62 char buf[64] = {};
63 snprintf(buf, sizeof(buf), "-%s#%d", m_IpPort.c_str(), m_NextConnectedId);
65 std::string connName = buf;
66
67 sockaddr_in local = {};
68 socklen_t addrLen = sizeof(local);
69 if (::getsockname(socketFd, (sockaddr*)&local, &addrLen) < 0)
70 {
71 std::stringstream ss;
72 ss << "TcpServer::NewConnection::getsockname error, fd: " << socketFd << ", Error: " << WSAGetLastError();
73
74 SPICES_CORE_ERROR(ss.str())
75 }
76 InetAddress localAddress(local);
77
78 const TcpConnectionPtr connectionPtr = std::make_shared<TcpConnection>(ioLoop, connName, socketFd, localAddress, peerAddress);
79 m_Connections[connName] = connectionPtr;
80
81 connectionPtr->SetConnectionCallback(m_ConnectionCallback);
82 connectionPtr->SetMessageCallback(m_MessageCallback);
83 connectionPtr->SetWriteCompleteCallback(m_WriteCompleteCallback);
84
85 DelegateCloseCallback closeCallback;
86 closeCallback.Bind([=](const TcpConnectionPtr& connection) { RemoveConnection(connection); });
87 connectionPtr->SetCloseCallback(closeCallback);
88
89 ioLoop->RunInLoop([=]() { connectionPtr->ConnectEstablished(); });
90 }
#define SPICES_PROFILE_ZONE
std::shared_ptr< EventLoopThreadPool > m_ThreadPool
ThreadPool.
Definition TcpServer.h:145
ConnectionMap m_Connections
All TcpConnections.
Definition TcpServer.h:175
DelegateWriteCompleteCallback m_WriteCompleteCallback
WriteCompleteCallback.
Definition TcpServer.h:160
void RemoveConnection(const TcpConnectionPtr &connection)
Remove a TcpConnection.
Definition TcpServer.cpp:92
std::string m_IpPort
TcpServer Ip and Port.
Definition TcpServer.h:135
DelegateConnectionCallback m_ConnectionCallback
ConnectionCallback.
Definition TcpServer.h:150
int m_NextConnectedId
Next Connection id.
Definition TcpServer.h:170
DelegateMessageCallback m_MessageCallback
MessageCallback.
Definition TcpServer.h:155
std::shared_ptr< TcpConnection > TcpConnectionPtr
Definition Callbacks.h:18

References m_IpPort, m_NextConnectedId, and RemoveConnection().