예제 #1
0
bool CDplusProtocol::IsValidLoginPacket(const CBuffer &Buffer, CCallsign *Callsign)
{
    uint8 Tag[] = { 0x1C,0xC0,0x04,0x00 };
    bool valid = false;
    
    if ( (Buffer.size() == 28) &&(::memcmp(Buffer.data(), Tag, sizeof(Tag)) == 0) )
    {
        Callsign->SetCallsign(&(Buffer.data()[4]), 8);
        valid = Callsign->IsValid();
    }
    return valid;
}
예제 #2
0
파일: cudpsocket.cpp 프로젝트: phl0/xlxd
int CUdpSocket::Send(const CBuffer &Buffer, const CIp &Ip)
{
    CIp temp(Ip);
    return (int)::sendto(m_Socket,
           (void *)Buffer.data(), Buffer.size(),
           0, (struct sockaddr *)temp.GetSockAddr(), sizeof(struct sockaddr_in));
}
예제 #3
0
파일: cbuffer.cpp 프로젝트: ik1whn/xlxd
bool CBuffer::operator ==(const CBuffer &Buffer) const
{
    if ( size() == Buffer.size() )
    {
        return (::memcmp((const char *)data(), (const char *)Buffer.data(), size()) == 0);
    }
    return false;
}
예제 #4
0
bool ZLibUtils::Uncompress(CBuffer& pSrc)
{
	QMutexLocker l(&ZLibUtils::m_oMutex);

	for(ulong nSize = qMax(pSrc.size() * 6u, 1024u); ; nSize *= 2)
	{
		ZLibUtils::m_oCompressBuffer.resize(nSize);

		ulong nCompress = ZLibUtils::m_oCompressBuffer.size();

		int nRet = ::uncompress((Bytef*)ZLibUtils::m_oCompressBuffer.data(), &nCompress, (Bytef*)pSrc.data(), pSrc.size());

		if(nRet == Z_OK)
		{
			ZLibUtils::m_oCompressBuffer.resize(nCompress);
			pSrc.clear();
			pSrc.append(ZLibUtils::m_oCompressBuffer);

			break;
		}

		if(nRet != Z_BUF_ERROR)
		{
			return false;
		}
	}

	return true;

}
예제 #5
0
bool ZLibUtils::Compress(CBuffer& pSrc, bool bIfSmaller)
{
	QMutexLocker l(&ZLibUtils::m_oMutex);

	if(bIfSmaller && pSrc.size() < 64)
	{
		return false;
	}

	ulong nCompress = qMax(ZLibUtils::m_oCompressBuffer.size(), pSrc.size() * 2);

	ZLibUtils::m_oCompressBuffer.resize(nCompress);

	int nRet = ::compress((Bytef*)ZLibUtils::m_oCompressBuffer.data(), &nCompress, (const Bytef*)pSrc.data(), pSrc.size());

	if(nRet != Z_OK)
	{
		Q_ASSERT(nRet != Z_BUF_ERROR);
		return false;
	}

	ZLibUtils::m_oCompressBuffer.resize(nCompress);

	if(bIfSmaller && ZLibUtils::m_oCompressBuffer.size() > pSrc.size())
	{
		return false;
	}

	pSrc.clear();
	pSrc.append(ZLibUtils::m_oCompressBuffer);

	return true;
}
QByteArray CNetworkConnection::Peek(qint64 nMaxLength)
{
	CBuffer* pBuffer = GetInputBuffer();

	return QByteArray::fromRawData(pBuffer->data(), qMin<qint64>(nMaxLength > 0 ? nMaxLength : pBuffer->size(), pBuffer->size()));
}