int CTcpServer::SendInternal(TSocketObj* pSocketObj, const WSABUF pBuffers[], int iCount) { int result = NO_ERROR; for(int i = 0; i < iCount; i++) { int iBufLen = pBuffers[i].len; if(iBufLen > 0) { BYTE* pBuffer = (BYTE*)pBuffers[i].buf; ASSERT(pBuffer); switch(m_enSendPolicy) { case SP_PACK: result = SendPack(pSocketObj, pBuffer, iBufLen); break; case SP_SAFE: result = SendSafe(pSocketObj, pBuffer, iBufLen); break; case SP_DIRECT: result = SendDirect(pSocketObj, pBuffer, iBufLen); break; default: ASSERT(FALSE); result = ERROR_INVALID_INDEX; break; } if(result != NO_ERROR) break; } } return result; }
BOOL CTcpAgent::Send(CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset) { ASSERT(pBuffer && iLength > 0); if(iOffset != 0) pBuffer += iOffset; int result = NO_ERROR; TSocketObj* pSocketObj = FindSocketObj(dwConnID); if(!TSocketObj::IsValid(pSocketObj)) result = ERROR_OBJECT_NOT_FOUND; else { CCriSecLock locallock(pSocketObj->crisec); if(!TSocketObj::IsValid(pSocketObj)) result = ERROR_OBJECT_NOT_FOUND; else { switch(m_enSendPolicy) { case SP_PACK: result = SendPack(pSocketObj, pBuffer, iLength); break; case SP_SAFE: result = SendSafe(pSocketObj, pBuffer, iLength); break; case SP_DIRECT: result = SendDirect(pSocketObj, pBuffer, iLength); break; default: ASSERT(FALSE); result = ERROR_INVALID_INDEX; break; } } } if(result != NO_ERROR) ::SetLastError(result); return (result == NO_ERROR); }
BOOL CUdpServer::Send(CONNID dwConnID, const BYTE* pBuffer, int iLength, int iOffset) { ASSERT(pBuffer && iLength > 0 && iLength <= (int)m_dwMaxDatagramSize); if(iOffset != 0) pBuffer += iOffset; if(!pBuffer || iLength <= 0 || iLength > (int)m_dwMaxDatagramSize) { ::SetLastError(ERROR_INVALID_PARAMETER); return FALSE; } int result = ERROR_OBJECT_NOT_FOUND; TUdpSocketObj* pSocketObj = FindSocketObj(dwConnID); if(TUdpSocketObj::IsValid(pSocketObj)) { CCriSecLock locallock(pSocketObj->crisec); if(TUdpSocketObj::IsValid(pSocketObj)) { switch(m_enSendPolicy) { case SP_PACK: result = SendPack(pSocketObj, pBuffer, iLength); break; case SP_SAFE: result = SendSafe(pSocketObj, pBuffer, iLength); break; case SP_DIRECT: result = SendDirect(pSocketObj, pBuffer, iLength); break; default: ASSERT(FALSE); result = ERROR_INVALID_INDEX; break; } } } if(result != NO_ERROR) ::SetLastError(result); return (result == NO_ERROR); }