Exemplo n.º 1
0
BOOL CClientSocket::SendData()
{
	BOOL isOK = TRUE;

	while(TRUE)
	{
		smart_simple_ptr<CBufferPtr> bufferPtr = GetSendBuffer();

		if(bufferPtr.is_valid())
		{
			CBufferPtr& sndData	= *bufferPtr;
			isOK				= DoSendData(sndData);

			if(isOK)
			{
				if(sndData.Size() > 0)
				{
					CCriSecLock locallock(m_scBuffer);
					m_sndBuffers->push_front(bufferPtr.release());
					break;
				}
			}
			else
				break;
		}
		else
			break;
	}

	return isOK;
}
Exemplo n.º 2
0
BOOL CTcpClient::SendData()
{
	BOOL isOK = TRUE;

	while(TRUE)
	{
		TItemPtr itPtr(m_itPool, GetSendBuffer());

		if(itPtr.IsValid())
		{
			ASSERT(!itPtr->IsEmpty());

			isOK = DoSendData(itPtr);

			if(isOK)
			{
				if(!itPtr->IsEmpty())
				{
					CCriSecLock locallock(m_scSend);
					m_lsSend.PushFront(itPtr.Detach());
					
					break;;
				}
			}
			else
				break;
		}
		else
			break;
	}

	return isOK;
}
Exemplo n.º 3
0
BOOL CTcpClient::SendData()
{
	if(m_lsSend.IsEmpty())
		return TRUE;

	CCriSecLock locallock(m_csSend);

	if(m_lsSend.IsEmpty())
		return TRUE;

	BOOL isOK = TRUE;

	while(TRUE)
	{
		TItemPtr itPtr(m_itPool, m_lsSend.PopFront());

		if(!itPtr.IsValid())
			break;

		ASSERT(!itPtr->IsEmpty());

		isOK = DoSendData(itPtr);

		if(!isOK)
			break;

		if(!itPtr->IsEmpty())
		{
			m_lsSend.PushFront(itPtr.Detach());
			break;
		}
	}

	return isOK;
}