BOOL CUdpCast::ReadData() { while(TRUE) { int addrLen = m_remoteAddr.AddrSize(); int rc = recvfrom(m_soClient, (char*)(BYTE*)m_rcBuffer, m_dwMaxDatagramSize, 0, m_remoteAddr.Addr(), &addrLen); if(rc >= 0) { if(FireReceive(m_rcBuffer, rc) == HR_ERROR) { TRACE("<C-CNNID: %Iu> OnReceive() event return 'HR_ERROR', connection will be closed !\n", m_dwConnID); m_ccContext.Reset(TRUE, SO_RECEIVE, ERROR_CANCELLED); return FALSE; } } else if(rc == SOCKET_ERROR) { int code = ::WSAGetLastError(); if(code == WSAEWOULDBLOCK) break; else { m_ccContext.Reset(TRUE, SO_RECEIVE, code); return FALSE; } } else ASSERT(FALSE); } return TRUE; }
void CTcpAgent::HandleReceive(CONNID dwConnID, TSocketObj* pSocketObj, TBufferObj* pBufferObj) { if(FireReceive(dwConnID, (BYTE*)pBufferObj->buff.buf, pBufferObj->buff.len) != HR_ERROR) DoReceive(dwConnID, pSocketObj, pBufferObj); else { TRACE("<A-CNNID: %Iu> OnReceive() event return 'HR_ERROR', connection will be closed !\n", dwConnID); AddFreeSocketObj(dwConnID, SCF_ERROR, SO_RECEIVE, ERROR_FUNCTION_FAILED); AddFreeBufferObj(pBufferObj); } }
void CIocpServer::HandleReceive(TSocketObj* pSocketObj, TBufferObj* pBufferObj) { //处理接收数据 处理完成后重新投递 if(FireReceive(pSocketObj->connID, (BYTE*)pBufferObj->buff.buf, pBufferObj->buff.len) != ISocketListener::HR_ERROR) DoReceive(pSocketObj, pBufferObj); else { TRACE1("<CNNID: %d> FireReceive() return HR_ERROR, connection will be closed", pSocketObj->connID); FireError(pSocketObj->connID, SO_RECEIVE, WSAEPROTOTYPE); AddFreeSocketObj(pSocketObj->connID); AddFreeBufferObj(pBufferObj); } }
EnHandleResult CTcpServer::TriggerFireReceive(TSocketObj* pSocketObj, TBufferObj* pBufferObj) { EnHandleResult rs = (EnHandleResult)HR_CLOSED; if(TSocketObj::IsValid(pSocketObj)) { CReentrantSpinLock locallock(pSocketObj->csRecv); if(TSocketObj::IsValid(pSocketObj)) { rs = FireReceive(pSocketObj, (BYTE*)pBufferObj->buff.buf, pBufferObj->buff.len); } } return rs; }
void CUdpServer::HandleReceive(CONNID dwConnID, TUdpBufferObj* pBufferObj) { if(dwConnID == 0) dwConnID = HandleAccept(pBufferObj); if(dwConnID != 0) { if(FireReceive(dwConnID, (BYTE*)pBufferObj->buff.buf, pBufferObj->buff.len) == ISocketListener::HR_ERROR) { TRACE1("<S-CNNID: %Iu> OnReceive() event return 'HR_ERROR', connection will be closed !\n", dwConnID); AddFreeSocketObj(dwConnID, SCF_ERROR, SO_RECEIVE, ERROR_FUNCTION_FAILED); } } DoReceive(pBufferObj); }
void CTcpServer::HandleReceive(CONNID dwConnID, TSocketObj* pSocketObj, TBufferObj* pBufferObj) { EnHandleResult hr = FireReceive(pSocketObj, (BYTE*)pBufferObj->buff.buf, pBufferObj->buff.len); if(hr == HR_OK || hr == HR_IGNORE) DoReceive(dwConnID, pSocketObj, pBufferObj); else if(hr == HR_CLOSED) { ASSERT(m_enRecvPolicy == RP_SERIAL); AddFreeBufferObj(pBufferObj); } else { TRACE("<S-CNNID: %Iu> OnReceive() event return 'HR_ERROR', connection will be closed !\n", dwConnID); AddFreeSocketObj(pSocketObj, SCF_ERROR, SO_RECEIVE, ERROR_CANCELLED); AddFreeBufferObj(pBufferObj); } }
BOOL CUdpClient::ReadData() { while(TRUE) { int rc = recv(m_soClient, (char*)(BYTE*)m_rcBuffer, m_dwMaxDatagramSize, 0); if(rc > 0) { if(FireReceive(this, m_rcBuffer, rc) == HR_ERROR) { TRACE("<C-CNNID: %Iu> OnReceive() event return 'HR_ERROR', connection will be closed !\n", m_dwConnID); SetLastError(SE_DATA_PROC, __FUNCTION__, ERROR_CANCELLED); FireError(this, SO_RECEIVE, ERROR_CANCELLED); return FALSE; } } else if(rc == SOCKET_ERROR) { int code = ::WSAGetLastError(); if(code == WSAEWOULDBLOCK) break; else { SetLastError(SE_NETWORK, __FUNCTION__, code); FireError(this, SO_RECEIVE, code); return FALSE; } } else if(rc == 0) { m_dwDetectFails = 0; TRACE("<C-CNNID: %Iu> recv 0 bytes (detect package)\n", m_dwConnID); } else ASSERT(FALSE); } return TRUE; }
BOOL CTcpClient::ReadData() { while(TRUE) { int rc = recv(m_soClient, (char*)(BYTE*)m_rcBuffer, m_dwSocketBufferSize, 0); if(rc > 0) { if(FireReceive(m_dwConnID, m_rcBuffer, rc) == HR_ERROR) { TRACE("<C-CNNID: %Iu> OnReceive() event return 'HR_ERROR', connection will be closed !\n", m_dwConnID); SetLastError(SE_DATA_PROC, __FUNCTION__, ERROR_FUNCTION_FAILED); FireError(m_dwConnID, SO_RECEIVE, ERROR_FUNCTION_FAILED); return FALSE; } } else if(rc == SOCKET_ERROR) { int code = ::WSAGetLastError(); if(code == WSAEWOULDBLOCK) break; else { SetLastError(SE_NETWORK, __FUNCTION__, code); FireError(m_dwConnID, SO_RECEIVE, code); return FALSE; } } else if(rc == 0) { FireClose(m_dwConnID); return FALSE; } else ASSERT(FALSE); } return TRUE; }
BOOL CTcpClient::ReadData() { while(TRUE) { int rc = (int)read(m_soClient, (char*)(BYTE*)m_rcBuffer, m_dwSocketBufferSize); if(rc > 0) { if(TRIGGER(FireReceive(m_rcBuffer, rc)) == HR_ERROR) { TRACE("<C-CNNID: %zu> OnReceive() event return 'HR_ERROR', connection will be closed !", m_dwConnID); m_ccContext.Reset(TRUE, SO_RECEIVE, ENSURE_ERROR_CANCELLED); return FALSE; } } else if(rc == SOCKET_ERROR) { int code = ::WSAGetLastError(); if(code == ERROR_WOULDBLOCK) break; else { m_ccContext.Reset(TRUE, SO_RECEIVE, code); return FALSE; } } else if(rc == 0) { m_ccContext.Reset(TRUE, SO_CLOSE, SE_OK); return FALSE; } else ASSERT(FALSE); } return TRUE; }
BOOL CUdpCast::ReadData() { while(TRUE) { int addrLen = sizeof(SOCKADDR_IN); int rc = recvfrom(m_soClient, (char*)(BYTE*)m_rcBuffer, m_dwMaxDatagramSize, 0, (sockaddr*)&m_remoteAddr, &addrLen); if(rc >= 0) { if(FireReceive(this, m_rcBuffer, rc) == HR_ERROR) { TRACE("<C-CNNID: %Iu> OnReceive() event return 'HR_ERROR', connection will be closed !\n", m_dwConnID); SetLastError(SE_DATA_PROC, __FUNCTION__, ERROR_CANCELLED); FireError(this, SO_RECEIVE, ERROR_CANCELLED); return FALSE; } } else if(rc == SOCKET_ERROR) { int code = ::WSAGetLastError(); if(code == WSAEWOULDBLOCK) break; else { SetLastError(SE_NETWORK, __FUNCTION__, code); FireError(this, SO_RECEIVE, code); return FALSE; } } else ASSERT(FALSE); } return TRUE; }