void CSocketServer::PostAbortiveClose( Socket *pSocket ) { CIOBuffer *pBuffer = Allocate(); pBuffer->SetUserData( IO_Close ); pSocket->AddRef(); m_iocp.PostStatus( (ULONG_PTR)pSocket, 0, pBuffer ); }
void CSocketServer::Write( Socket *pSocket, const char *pData, size_t dataLength, bool thenShutdown) { if ( !pSocket || !pData || dataLength <= 0 ) { return; } /* * Post a write request to the iocp so that the actual socket write gets performed by * one of our IO threads... */ CIOBuffer *pBuffer = Allocate(); /* * Call to unqualified virtual function */ #ifdef NETWORK_DEBUG //{ PreWrite( pSocket, pBuffer, pData, dataLength + PACK_HEADER_LEN + sizeof(BYTE) ); //} #else //{ PreWrite( pSocket, pBuffer, pData, dataLength ); //} #endif // NETWORK_DEBUG pBuffer->AddData( pData, dataLength ); #ifdef NETWORK_DEBUG //{ const BYTE *pPackData = pBuffer->GetBuffer(); PACK_HEADER ph = {0}; memcpy( (BYTE *)&ph, pPackData, PACK_HEADER_LEN ); pBuffer->AddData( (BYTE *)&ph, PACK_HEADER_LEN ); pBuffer->AddData( 0xAA ); //} #endif // NETWORK_DEBUG pBuffer->SetUserData( IO_Write_Request ); pSocket->AddRef(); m_iocp.PostStatus( (ULONG_PTR)pSocket, thenShutdown, pBuffer ); }