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:
2025-11-29 20:17:20 +09:00
parent 5d3cd64a25
commit dd97ddec92
11602 changed files with 1446576 additions and 0 deletions

View File

@@ -0,0 +1,243 @@
/**
* @file NFMemPool.h
* @brief Packet Memory <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü
* @remarks
* @author <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(edith2580@gmail.com)
* @date 2009-05-09
*/
#pragma once
#include <Nave/NFSync.h>
#include <Nave/NFLog.h>
namespace NaveServer {
#pragma pack(push, struct_packing_before)
#pragma pack(1)
/**
* @class NFMemPool
* @brief IOCP<43><50><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ <20><><EFBFBD>۸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>޸<EFBFBD><DEB8><EFBFBD>Pool Ŭ<><C5AC><EFBFBD><EFBFBD>
* @remarks
*
* @par
* @author Edith
* @date 2009-08-28
*/
template <class TYPE>
class NFMemPool
{
public:
/// <20>Ҵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Է<EFBFBD>
NFMemPool(INT nTotalCnt, INT nAllocBufferSize=0);
/// <20>Ҵ<EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3>
~NFMemPool();
/**
* @brief <09>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
* @param strLogTitle <20>α<EFBFBD><CEB1><EFBFBD> <20≯<EFBFBD>
*/
VOID SetLogTitle(WCHAR* strLogTitle)
{
wcscpy(m_strLogTitle, strLogTitle);
}
/// <20><><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
INT GetCount();
/// <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><>Ŷ <20><>
INT GetEmpty();
/// <20><><EFBFBD>ۿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD>
INT GetIndex( TYPE *ptr );
/// <20>Ҵ<EFBFBD><D2B4><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> <20><> <20><>Ŷ <20><>ȯ
TYPE* Alloc();
/// <20>Ҵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>޸𸮸<DEB8> <20><><EFBFBD><EFBFBD>
BOOL Free( TYPE *ptr );
private:
/// INDEX Structure
struct INDEX
{
/// <20><><EFBFBD><EFBFBD> Index <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INDEX* pNext;
/// <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD> <20><>ȣ
INT nIndex;
/// Structure constructure
INDEX(){
pNext = NULL;
nIndex = 0;
}
};
private:
/// <20><><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
INT m_nCount;
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD> <20><>Ŷ <20><>
INT m_nTotalCnt;
/// <20><> <20><>Ŷ<EFBFBD><C5B6> <20>Ҵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INT m_nAllocBufferSize;
/// <20><> <20><>Ŷ<EFBFBD><C5B6> <20><>ü <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INT m_nPerPacketSize;
/// <20>α<EFBFBD><CEB1><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD>
WCHAR m_strLogTitle[32];
/// <20><>ü <20>Ҵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PVOID m_pPakets;
/// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD> ó<><C3B3> <20>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INDEX* m_pFreeRoom;
Nave::NFSync m_Sync;
};
#pragma pack( pop, struct_packing_before )
template <class TYPE>
NFMemPool<TYPE>::NFMemPool( INT nTotalCnt, INT nAllocBufferSize )
{
assert( nTotalCnt > 0 );
m_nCount = 0;
m_pFreeRoom = NULL;
m_pPakets = NULL;
m_nTotalCnt = nTotalCnt; // MAXUSER * 2
m_nAllocBufferSize = nAllocBufferSize; // 1024 + 64
m_nPerPacketSize = sizeof(INDEX) + sizeof(TYPE) + m_nAllocBufferSize;
m_pPakets = VirtualAlloc( NULL,
m_nTotalCnt * m_nPerPacketSize,
MEM_RESERVE | MEM_COMMIT, // reserve and commit
PAGE_READWRITE );
//////////////////////////////////////////////////////////
// < <20>Ҵ<EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> > //
// //
// ----------------------------------------------- //
// | INDEX | TYPE | m_nExBlockSize | //
// ----------------------------------------------- //
//////////////////////////////////////////////////////////
assert( m_pPakets );
INDEX* pIndex = (INDEX*) m_pPakets;
assert( pIndex );
//////////////////////////////////////////
// init linear linked list for buffer pool
// <20>Ҵ<EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
pIndex = (INDEX*) ((DWORD)pIndex + (m_nTotalCnt - 1) * m_nPerPacketSize);
// <20>Ҵ<EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Linked List<73><74> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>
for( INT i = m_nTotalCnt-1; i >= 0; i-- )
{
pIndex->pNext = m_pFreeRoom; // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pNext = NULL<4C>̴<EFBFBD>
pIndex->nIndex = i; // INDEX <20>۾<EFBFBD>
m_pFreeRoom = pIndex; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
#ifdef _DEBUG
// <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ExBlockSize<7A><65> <20>κп<CEBA> <20><><EFBFBD><EFBFBD>Ÿ <20><><EFBFBD><EFBFBD> <20>۾<EFBFBD>
if( m_nAllocBufferSize )
memset((PVOID)( (DWORD)pIndex+sizeof(INDEX)+sizeof(TYPE)),
(i%10+'0'),
m_nAllocBufferSize );
#endif
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> C8List <20><><EFBFBD><EFBFBD>Ʈ <20>̵<EFBFBD>
pIndex = (INDEX*)((DWORD)pIndex - m_nPerPacketSize);
}
}
template <class TYPE>
NFMemPool<TYPE>::~NFMemPool()
{
if(NULL != m_pPakets) VirtualFree( m_pPakets, 0, MEM_RELEASE );
}
template <class TYPE>
TYPE* NFMemPool<TYPE>::Alloc()
{
// <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
INDEX* pIndex = NULL;
TYPE* pType = NULL;
Nave::NFSyncLock CL(&m_Sync);
pIndex = m_pFreeRoom;
if( pIndex != NULL )
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD> <20>̵<EFBFBD>
m_pFreeRoom = m_pFreeRoom->pNext;
m_nCount++; // ī<><C4AB>Ʈ <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD> <20><><EFBFBD>ø<EFBFBD> Ÿ<><C5B8> <20><>Ƽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ
pType = (TYPE*)(pIndex+1);
///////////////////////////////////////////
// ġ<><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD>
// assert( m_nCount > 0 ); // make sure we don't overflow
if(m_nCount > m_nTotalCnt)
{
LOG_ERROR((L"[%s] MemPool Alloc Overflow Count(%d) >= %d", m_strLogTitle, m_nCount, m_nTotalCnt));
return NULL;
}
}
else
LOG_ERROR((L"[%s] MemPool Alloc m_pFreeRoom = NULL, Count(%d)", m_strLogTitle, m_nCount));
return pType; // <20><><EFBFBD>ø<EFBFBD> Ÿ<><C5B8> <20><>ȯ
}
template <class TYPE>
BOOL NFMemPool<TYPE>::Free( TYPE *ptr )
{
Nave::NFSyncLock CL(&m_Sync);
BOOL bRet = FALSE;
INDEX* pIndex = ((INDEX*)(ptr))-1; // <20><><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> <20>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> <20>ִٸ<D6B4>
if( m_nCount > 0 )
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ƾ
pIndex->pNext = m_pFreeRoom;
m_pFreeRoom = pIndex;
m_nCount--; // <20><><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> 1 <20><><EFBFBD><EFBFBD>
bRet = TRUE; // <20><><EFBFBD><EFBFBD> ó<><C3B3> <20>˸<EFBFBD>
}
else
LOG_ERROR((L"[%s] MemPool Free Faild Count(%d) <= 0", m_strLogTitle, m_nCount));
return bRet; // <20><><EFBFBD><EFBFBD> ó<><C3B3> <20><><EFBFBD><EFBFBD> <20><>ȯ
}
template <class TYPE>
INT NFMemPool<TYPE>::GetCount()
{
Nave::NFSyncLock CL(&m_Sync);
INT nRet = m_nCount; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
return nRet; // <20><>ȯ
}
template <class TYPE>
INT NFMemPool<TYPE>::GetEmpty()
{
Nave::NFSyncLock CL(&m_Sync);
INT nRet = m_nTotalCnt - m_nCount; // <20><><EFBFBD><EFBFBD>
return nRet; // <20><>ȯ
}
template <class TYPE>
INT NFMemPool<TYPE>::GetIndex( TYPE *ptr )
{
Nave::NFSyncLock CL(&m_Sync);
INT nRet = 0; // <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
INDEX* pIndex = ((INDEX*)(ptr))-1; // <20>ε<EFBFBD><CEB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
nRet = pIndex->nIndex; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
return nRet; // <20><>ȯ
}
}