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>
63 lines
1.9 KiB
C++
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 |