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; }
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)); }
bool CBuffer::operator ==(const CBuffer &Buffer) const { if ( size() == Buffer.size() ) { return (::memcmp((const char *)data(), (const char *)Buffer.data(), size()) == 0); } return false; }
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; }
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())); }