Files
LGram16 dd97ddec92 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>
2025-11-29 20:17:20 +09:00

84 lines
1.7 KiB
C++

#ifndef _CBUFFER_FACTORY_H_
#define _CBUFFER_FACTORY_H_
#include <vector>
#include <boost/pool/poolfwd.hpp>
#include "../../Thread/Lock.h"
//#define DEBUG_BUFFERFACTORY
#ifdef DEBUG_BUFFERFACTORY
#define BUFFER_ARGUMENT __FUNCTION__, __FILE__, __LINE__,
#define CREATE_METHOD CreateTracking
#define RELEASE_METHOD ReleaseTracking
#else
#define BUFFER_ARGUMENT
#define CREATE_METHOD Create
#define RELEASE_METHOD Release
#endif
#define CREATE_BUFFER(instance, size) (instance).CREATE_METHOD(BUFFER_ARGUMENT size)
#define SAFE_RELEASE_BUFFER(ptr) if(ptr) { (ptr)->GetBufferFactory().RELEASE_METHOD(BUFFER_ARGUMENT (ptr)); (ptr) = 0; }
// Àü¹æ ÂüÁ¶
class CBuffer;
class CBufferFactory
{
public:
virtual ~CBufferFactory() { }
virtual CBuffer* Create(size_t size) = 0;
virtual void Release(CBuffer* lpBuffer) = 0;
CBuffer* CreateTracking(const char* szRoutine, const char* szFileName, const int nLine, size_t size);
void ReleaseTracking(const char* szRoutine, const char* szFileName, const int nLine, CBuffer* lpBuffer);
};
class CDefaultBufferFactory : public CBufferFactory
{
public:
virtual CBuffer* Create(size_t size);
virtual void Release(CBuffer* lpBuffer);
};
class CPoolBufferFactory : public CBufferFactory
{
public:
CPoolBufferFactory();
virtual ~CPoolBufferFactory();
virtual CBuffer* Create(size_t size);
virtual void Release(CBuffer* lpBuffer);
void Destroy();
protected:
bool Initialize();
typedef boost::pool<> MemoryPool;
typedef std::vector<MemoryPool*> PoolArray;
typedef CCSLock BufferLock;
BufferLock m_BufferLock;
MemoryPool* m_lpBufferPool;
PoolArray m_PoolArray;
};
class CBufferFactoryTest
{
public:
void DoTest();
};
#endif