Loading src/event/iocp.cpp +22 −16 Original line number Diff line number Diff line Loading @@ -329,7 +329,7 @@ namespace netplus { return(sdSocket); } bool CreateAcceptSocket(BOOL fUpdateIOCP) { bool CreateAcceptSocket(bool fUpdateIOCP) { int nRet = 0; DWORD dwRecvNumBytes = 0; Loading @@ -345,11 +345,12 @@ namespace netplus { //socket for client connection. // if (fUpdateIOCP) { try { g_pCtxtListenSocket = UpdateCompletionPort(g_serversocket->fd(), ClientIoAccept, false); if (g_pCtxtListenSocket == nullptr) { } catch (NetException &e) { std::cerr << "UpdateCompletionPort: " << e.what() << std::endl; return false; } // Load the AcceptEx extension function from the provider for this socket nRet = WSAIoctl( g_serversocket->fd(), Loading @@ -363,25 +364,28 @@ namespace netplus { NULL ); if (nRet == SOCKET_ERROR){ return (FALSE); return false; } } try{ g_pCtxtListenSocket->pIOContext->SocketAccept = CreateSocket(); if (g_pCtxtListenSocket->pIOContext->SocketAccept == INVALID_SOCKET) { } catch (NetException& e) { std::cerr << "CreateSocket: " << e.what() << std::endl; return false; } // // pay close attention to these parameters and buffer lengths // try { nRet = g_pCtxtListenSocket->fnAcceptEx(g_serversocket->fd(), g_pCtxtListenSocket->pIOContext->SocketAccept, (LPVOID)(g_pCtxtListenSocket->pIOContext->Buffer), BLOCKSIZE - (2 * (sizeof(SOCKADDR_STORAGE) + 16)), sizeof(SOCKADDR_STORAGE) + 16, sizeof(SOCKADDR_STORAGE) + 16, &dwRecvNumBytes, (LPOVERLAPPED) & (g_pCtxtListenSocket->pIOContext->Overlapped)); if (nRet == SOCKET_ERROR && (ERROR_IO_PENDING != WSAGetLastError())) { } catch (NetException& e) { std::cerr << "fnAcceptEx" << e.what() << std::endl; return false; } Loading Loading @@ -719,7 +723,7 @@ namespace netplus { void event::runEventloop(void* args) { NetException exception; HANDLE iocp = ::CreateIoCompletionPort((HANDLE)_ServerSocket->fd(),nullptr,0, threads); HANDLE iocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0); if (!iocp) { NetException exp; Loading Loading @@ -769,6 +773,8 @@ namespace netplus { } } _ServerSocket->listen(); if (!evpoll.CreateAcceptSocket(true)) { NetException exp; exp[NetException::Critical] << "event: CreateAcceptSocket couldn't create socket !"; Loading Loading
src/event/iocp.cpp +22 −16 Original line number Diff line number Diff line Loading @@ -329,7 +329,7 @@ namespace netplus { return(sdSocket); } bool CreateAcceptSocket(BOOL fUpdateIOCP) { bool CreateAcceptSocket(bool fUpdateIOCP) { int nRet = 0; DWORD dwRecvNumBytes = 0; Loading @@ -345,11 +345,12 @@ namespace netplus { //socket for client connection. // if (fUpdateIOCP) { try { g_pCtxtListenSocket = UpdateCompletionPort(g_serversocket->fd(), ClientIoAccept, false); if (g_pCtxtListenSocket == nullptr) { } catch (NetException &e) { std::cerr << "UpdateCompletionPort: " << e.what() << std::endl; return false; } // Load the AcceptEx extension function from the provider for this socket nRet = WSAIoctl( g_serversocket->fd(), Loading @@ -363,25 +364,28 @@ namespace netplus { NULL ); if (nRet == SOCKET_ERROR){ return (FALSE); return false; } } try{ g_pCtxtListenSocket->pIOContext->SocketAccept = CreateSocket(); if (g_pCtxtListenSocket->pIOContext->SocketAccept == INVALID_SOCKET) { } catch (NetException& e) { std::cerr << "CreateSocket: " << e.what() << std::endl; return false; } // // pay close attention to these parameters and buffer lengths // try { nRet = g_pCtxtListenSocket->fnAcceptEx(g_serversocket->fd(), g_pCtxtListenSocket->pIOContext->SocketAccept, (LPVOID)(g_pCtxtListenSocket->pIOContext->Buffer), BLOCKSIZE - (2 * (sizeof(SOCKADDR_STORAGE) + 16)), sizeof(SOCKADDR_STORAGE) + 16, sizeof(SOCKADDR_STORAGE) + 16, &dwRecvNumBytes, (LPOVERLAPPED) & (g_pCtxtListenSocket->pIOContext->Overlapped)); if (nRet == SOCKET_ERROR && (ERROR_IO_PENDING != WSAGetLastError())) { } catch (NetException& e) { std::cerr << "fnAcceptEx" << e.what() << std::endl; return false; } Loading Loading @@ -719,7 +723,7 @@ namespace netplus { void event::runEventloop(void* args) { NetException exception; HANDLE iocp = ::CreateIoCompletionPort((HANDLE)_ServerSocket->fd(),nullptr,0, threads); HANDLE iocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0); if (!iocp) { NetException exp; Loading Loading @@ -769,6 +773,8 @@ namespace netplus { } } _ServerSocket->listen(); if (!evpoll.CreateAcceptSocket(true)) { NetException exp; exp[NetException::Critical] << "event: CreateAcceptSocket couldn't create socket !"; Loading