Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
61 lines
1.4 KiB
C++
61 lines
1.4 KiB
C++
#include "stdafx.h"
|
|
#include "Serializer.h"
|
|
#include "SendStream.h"
|
|
|
|
CSerializer::CSerializer(char* szBuffer, unsigned long nBufferSize)
|
|
: m_szBuffer(szBuffer), m_nBufferSize(nBufferSize),
|
|
m_nReadSize(0), m_nWriteSize(0)
|
|
{
|
|
|
|
}
|
|
|
|
CSerializer::CSerializer(CSendStream& SendStream, unsigned long nBufferSize)
|
|
: m_szBuffer(SendStream.GetBuffer(nBufferSize)),
|
|
m_nBufferSize(nBufferSize),
|
|
m_nReadSize(0), m_nWriteSize(0)
|
|
{
|
|
|
|
}
|
|
|
|
CSerializer::CSerializer(unsigned long nBufferSize)
|
|
: m_szBuffer(new char[nBufferSize]), m_nBufferSize(nBufferSize),
|
|
m_nReadSize(0), m_nWriteSize(0)
|
|
{
|
|
m_Flags[ALLOC_INTERNAL_BUFFER] = true;
|
|
}
|
|
|
|
CSerializer::~CSerializer()
|
|
{
|
|
if(m_Flags[ALLOC_INTERNAL_BUFFER])
|
|
{
|
|
delete [] m_szBuffer;
|
|
}
|
|
}
|
|
|
|
|
|
bool CSerializer::PutBuffer(const void* Data, unsigned long nLength)
|
|
{
|
|
if(NULL != m_szBuffer && m_nWriteSize + nLength <= m_nBufferSize)
|
|
{
|
|
memcpy(m_szBuffer + m_nWriteSize, &Data, nLength);
|
|
m_nWriteSize += nLength;
|
|
return true;
|
|
}
|
|
|
|
m_Flags[INVALID_WRITE] = true;
|
|
return false;
|
|
}
|
|
|
|
bool CSerializer::GetBuffer(const void* Data, unsigned long nLength)
|
|
{
|
|
if(NULL != m_szBuffer && m_nReadSize + nLength <= m_nBufferSize)
|
|
{
|
|
memcpy(m_szBuffer + m_nReadSize, &Data, nLength);
|
|
m_nReadSize += nLength;
|
|
return true;
|
|
}
|
|
|
|
m_Flags[INVALID_READ] = true;
|
|
return false;
|
|
}
|