TUdpBufferObj* CUdpServer::GetFreeBufferObj(int iLen) { ASSERT(iLen >= -1 && iLen <= (int)m_dwMaxDatagramSize); TUdpBufferObj* pBufferObj = nullptr; if(m_lsFreeBuffer.size() > 0) { CCriSecLock locallock(m_csFreeBuffer); if(m_lsFreeBuffer.size() > 0) { pBufferObj = m_lsFreeBuffer.front(); m_lsFreeBuffer.pop_front(); } } if(!pBufferObj) pBufferObj = CreateBufferObj(); if(iLen < 0) iLen = m_dwMaxDatagramSize; pBufferObj->addrLen = sizeof(SOCKADDR_IN); pBufferObj->buff.len = iLen; return pBufferObj; }
TBufferObj* CTcpServer::GetFreeBufferObj(int iLen) { ASSERT(iLen >= 0 && iLen <= (int)m_dwSocketBufferSize); TBufferObj* pBufferObj = nullptr; if(!m_lsFreeBuffer.TryGet(&pBufferObj)) pBufferObj = CreateBufferObj(); if(iLen <= 0) iLen = m_dwSocketBufferSize; pBufferObj->buff.len = iLen; return pBufferObj; }
TBufferObj* CIocpServer::GetFreeBufferObj(int iLen) { if(iLen <= 0) iLen = m_dwIocpBufferSize; CCriSecLock locallock(m_csFreeBuffer); TBufferObj* pBufferObj = NULL; if(m_lsFreeBuffer.size() > 0) { pBufferObj = m_lsFreeBuffer.front(); m_lsFreeBuffer.pop_front(); } else pBufferObj = CreateBufferObj(); pBufferObj->buff.len = iLen; return pBufferObj; }
TBufferObj* CTcpAgent::GetFreeBufferObj(int iLen) { ASSERT(iLen >= 0 && iLen <= (int)m_dwSocketBufferSize); TBufferObj* pBufferObj = nullptr; if(m_lsFreeBuffer.size() > 0) { CCriSecLock locallock(m_csFreeBuffer); if(m_lsFreeBuffer.size() > 0) { pBufferObj = m_lsFreeBuffer.front(); m_lsFreeBuffer.pop_front(); } } if(!pBufferObj) pBufferObj = CreateBufferObj(); if(iLen <= 0) iLen = m_dwSocketBufferSize; pBufferObj->buff.len = iLen; return pBufferObj; }