예제 #1
0
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;
}
예제 #2
0
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;
}
예제 #3
0
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;
}
예제 #4
0
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;
}