Restructure repository to include all source folders
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>
This commit is contained in:
228
Server/RylServerProject/RylAuthServer/IOBuffer.cpp
Normal file
228
Server/RylServerProject/RylAuthServer/IOBuffer.cpp
Normal file
@@ -0,0 +1,228 @@
|
||||
// IOBuffer.cpp: implementation of the CIOBuffer class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
#include "stdafx.h"
|
||||
#include "IOBuffer.h"
|
||||
#include <string.h>
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Construction/Destruction
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
CIOBuffer::CIOBuffer()
|
||||
{
|
||||
// Head<61><64> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ.
|
||||
// Tail<69><6C> <20><><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>.
|
||||
m_iHead = m_iTail = 0;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
m_iBufSize = 0;
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
m_cBuf = NULL;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̰<EFBFBD><CCB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Over Flow..
|
||||
m_iBuffered = 0;
|
||||
}
|
||||
|
||||
CIOBuffer::~CIOBuffer()
|
||||
{
|
||||
DeleteIOBuf();
|
||||
}
|
||||
|
||||
void CIOBuffer::InitIOBuf()
|
||||
{
|
||||
m_iHead = m_iTail = 0;
|
||||
m_iBuffered = 0;
|
||||
|
||||
if(m_cBuf)
|
||||
memset(m_cBuf, 0, sizeof(m_cBuf));
|
||||
}
|
||||
|
||||
void CIOBuffer::NewIOBuf(int BufSize)
|
||||
{
|
||||
if(BufSize <= 0)
|
||||
BufSize = IOBUF_DEF_SIZE;
|
||||
|
||||
m_cBuf = new char[BufSize];
|
||||
if(m_cBuf == NULL)
|
||||
{
|
||||
// throw "CIOBuffer::NewIOBuf : Memory allocation failure!";
|
||||
return;
|
||||
}
|
||||
|
||||
m_iBufSize = BufSize;
|
||||
|
||||
InitIOBuf();
|
||||
}
|
||||
|
||||
void CIOBuffer::DeleteIOBuf()
|
||||
{
|
||||
if(m_cBuf)
|
||||
{
|
||||
delete []m_cBuf;
|
||||
m_cBuf = NULL;
|
||||
}
|
||||
m_iBufSize = 0;
|
||||
m_iHead = m_iTail = 0;
|
||||
m_iBuffered = 0;
|
||||
}
|
||||
|
||||
// Size <20><>ŭ Buffer<65><72> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
int CIOBuffer::Append(char* Buffer, int Size)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>÷ο찡 <20>ȴ<EFBFBD>.
|
||||
if(m_iBuffered + Size >= m_iBufSize)
|
||||
{
|
||||
// throw "CIOBuffer::Append : Buffer overflow";
|
||||
return -1;
|
||||
}
|
||||
|
||||
int aSize = 0;
|
||||
int Added = 0;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> Size<7A><65> <20>߰<EFBFBD><DFB0>Ҷ<EFBFBD><D2B6><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD>Ѵ<EFBFBD>.
|
||||
while(Size > 0)
|
||||
{
|
||||
if(Size > m_iBufSize-m_iTail)
|
||||
aSize = m_iBufSize-m_iTail;
|
||||
else aSize = Size;
|
||||
|
||||
if(aSize)
|
||||
{
|
||||
memcpy(m_cBuf+m_iTail, Buffer, aSize);
|
||||
|
||||
Added += aSize;
|
||||
Size -= aSize;
|
||||
Buffer += aSize;
|
||||
m_iTail += aSize;
|
||||
if(m_iTail >= m_iBufSize)
|
||||
m_iTail -= m_iBufSize;
|
||||
}
|
||||
}
|
||||
|
||||
CalcBuffered();
|
||||
|
||||
return Added;
|
||||
}
|
||||
|
||||
// Size<7A><65>ŭ <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> <20>о<EFBFBD> Buffer<65><72> <20><><EFBFBD><EFBFBD>.
|
||||
int CIOBuffer::GetData(char* Buffer, int Size)
|
||||
{
|
||||
// <20><><EFBFBD>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> <20>а<EFBFBD> <20>Ѵ<EFBFBD>.
|
||||
if(GetBufferUsed() < Size)
|
||||
Size = GetBufferUsed();
|
||||
|
||||
if(Size <= 0)
|
||||
return 0;
|
||||
|
||||
// <20>߷<EFBFBD><DFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. ó<><C3B3><EFBFBD>Ѵ<EFBFBD>.
|
||||
if(m_iHead+Size >= m_iBufSize)
|
||||
{
|
||||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>װ<EFBFBD> <20>ִ<EFBFBD>.
|
||||
int Size1 = m_iBufSize - m_iHead;
|
||||
memcpy(Buffer, m_cBuf+m_iHead, Size1);
|
||||
memcpy(Buffer+Size1, m_cBuf, Size-Size1);
|
||||
}
|
||||
else // <20><><EFBFBD>߷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
{
|
||||
memcpy(Buffer, m_cBuf+m_iHead, Size);
|
||||
}
|
||||
|
||||
m_iHead += Size;
|
||||
if(m_iHead >= m_iBufSize)
|
||||
m_iHead -= m_iBufSize;
|
||||
|
||||
CalcBuffered();
|
||||
return Size;
|
||||
}
|
||||
|
||||
int CIOBuffer::CheckData(int Size)
|
||||
{
|
||||
// <20><><EFBFBD>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8> <20>а<EFBFBD> <20>Ѵ<EFBFBD>.
|
||||
if(GetBufferUsed() < Size)
|
||||
Size = GetBufferUsed();
|
||||
|
||||
if(Size <= 0)
|
||||
return 0;
|
||||
|
||||
m_iHead += Size;
|
||||
if(m_iHead >= m_iBufSize)
|
||||
m_iHead -= m_iBufSize;
|
||||
|
||||
CalcBuffered();
|
||||
return Size;
|
||||
}
|
||||
|
||||
|
||||
void CIOBuffer::CalcBuffered()
|
||||
{
|
||||
if(m_iHead > m_iTail)
|
||||
m_iBuffered = m_iBufSize - m_iHead + m_iTail;
|
||||
else
|
||||
m_iBuffered = m_iTail-m_iHead;
|
||||
}
|
||||
|
||||
|
||||
CPacketIOBuffer::CPacketIOBuffer()
|
||||
{
|
||||
// <20>ʱ<EFBFBD>ȭ.
|
||||
CIOBuffer::CIOBuffer();
|
||||
}
|
||||
|
||||
CPacketIOBuffer::~CPacketIOBuffer()
|
||||
{
|
||||
DeleteIOBuf();
|
||||
}
|
||||
|
||||
void CPacketIOBuffer::Lock()
|
||||
{
|
||||
LockHead = GetHead();
|
||||
}
|
||||
|
||||
void CPacketIOBuffer::UnLock()
|
||||
{
|
||||
SetHead(LockHead);
|
||||
}
|
||||
|
||||
int CPacketIOBuffer::GetPacket(char* Packet)
|
||||
{
|
||||
if(m_iHead == m_iTail)
|
||||
return 0;
|
||||
|
||||
memset(Packet, 0, MAX_PACKETSIZE);
|
||||
|
||||
int Size = 0;
|
||||
int OldHead = GetHead();
|
||||
|
||||
char End[3] = "\r\n";
|
||||
|
||||
for(int i = 0; i < MAX_PACKETSIZE; ++i)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>
|
||||
Packet[i] = m_cBuf[m_iHead];
|
||||
|
||||
m_iHead++;
|
||||
|
||||
if(m_iHead+1 > m_iBufSize)
|
||||
m_iHead = 0;
|
||||
|
||||
if(m_iHead == m_iTail)
|
||||
break;
|
||||
|
||||
if(i < 1)
|
||||
continue;
|
||||
|
||||
if(strcmp(&Packet[i-1], End)==0)
|
||||
break;
|
||||
}
|
||||
|
||||
Size = (int)strlen(Packet);
|
||||
if(Size == 0)
|
||||
{
|
||||
SetHead(OldHead);
|
||||
return 0;
|
||||
}
|
||||
|
||||
CalcBuffered();
|
||||
return Size;
|
||||
}
|
||||
Reference in New Issue
Block a user