void OnReadEvent() { ScheduleReading(); struct sockaddr_in ClientAddress; socklen_t addrlen = sizeof(ClientAddress); SOCKET client_sock = INVALID_SOCKET; if ((client_sock = accept(m_SocketHandle, (sockaddr*)&ClientAddress, &addrlen)) == INVALID_SOCKET) { sLog.outError(" Couldn't accept connection. Some error. Skipped.", m_SocketHandle); return; } sLog.outString(" Accepted new connection. Socket %u", m_SocketHandle, client_sock); T* pSocket = new T(client_sock); pSocket->Accept(&ClientAddress); }