Files
Client/Server/AdminTool/CAsyncSockLibrary/Network/Dispatch/AdminToolDispatch.h
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

63 lines
1.9 KiB
C++

#ifndef _ADMIN_TOOL_DISPATCH_H_
#define _ADMIN_TOOL_DISPATCH_H_
struct PktBase;
class CSingleSession;
class CWnd;
class CPacketToolDispatch
{
public:
// Desc: 세션에서 받은 데이터로 패킷을 생성한다.
// Input: const char* lpStream_In : 세션에서 받은 데이터.
// size_t* nStreamSize_InOut : 받은 데이터의 크기.
// Output: size_t* nStreamSize_InOut : 처리된 데이터의 크기.
// 리턴값 : false 리턴 시 접속을 해제한다. (잘못된 패킷 존재 가능성 있음)
virtual bool ParsePacket(char* const lpStream_In, unsigned long* dwStreamSize_InOut) = 0;
// Desc: 생성한 패킷을 단일 스레드에서 처리한다.
// (CSession::Process 에서 매 펄스마다 호출한다.)
virtual bool SingleThreadDispatch(unsigned long dwCurrentTime) = 0;
// Desc: 자기 자신을 생성한다.
// Output: 리턴값 : 생성 실패시 NULL 리턴
virtual CPacketToolDispatch* Clone() = 0;
// Desc: 자기 자신을 소멸시킨다.
virtual void Destroy() = 0;
// Desc: 연결 종료시 처리할 내용을 넣는다.
virtual void Disconnected() = 0;
// Desc: 세션과의 상호참조를 위한 함수들.
inline void SetSession(CSingleSession* lpSession) { m_lpSession = lpSession; }
inline CSingleSession* GetSession() { return m_lpSession; }
virtual ~CPacketToolDispatch() { }
protected:
// Dispatcher의 생성자는 항상 Protected이어야 한다.
CPacketToolDispatch() : m_lpSession(0) { }
CSingleSession* m_lpSession;
};
class CClientMultiThreadDispatch : public CPacketToolDispatch
{
public:
CClientMultiThreadDispatch( ) { m_pDispatchWindow = NULL; }
virtual bool ParsePacket(char* const lpStream_In, unsigned long* dwStreamSize_InOut);
virtual bool SingleThreadDispatch(unsigned long dwCurrentTime) { return true; }
protected:
virtual bool DispatchPacket(PktBase* lpPktBase) = 0;
virtual ~CClientMultiThreadDispatch() { }
CWnd* m_pDispatchWindow;
};
#endif