GameServer
ClientStateBase.h
[詳解]
1 
6 #ifndef __CLIENTSTATEBASE_H__
7 #define __CLIENTSTATEBASE_H__
8 
9 #include <map>
10 #include <boost/function.hpp>
11 #include "Packet/PacketID.h"
12 
13 class Client;
15 
21 {
22 
23 private: // 別名定義.
24 
25  typedef boost::function<bool(Client *, MemoryStreamInterface *)> PacketFunc;
26  typedef std::map<u8, PacketFunc> FunctionMap;
27 
28 public:
29 
34  ClientStateBase(Client *pInParent)
35  : pParent(pInParent) {}
36 
40  virtual ~ClientStateBase() {}
41 
46  virtual void BeginState() {}
47 
54  void AnalyzePacket(u8 ID, MemoryStreamInterface *pStream);
55 
56 protected:
57 
63  Client *GetParent() const { return pParent; }
64 
65  /*
66  * @fn void AddPacketFunction(u8 ID, const PacketFunc &Func)
67  * @brief パケット解析関数を追加
68  * @param[in] ID パケットID
69  * @param[in] Func 解析関数
70  */
71  void AddPacketFunction(u8 ID, const PacketFunc &Func)
72  {
73  PacketFunctions[ID] = Func;
74  }
75 
76 private:
77 
78  // 親.
79  Client *pParent;
80 
81  // パケット解析関数群.
82  FunctionMap PacketFunctions;
83 
84 };
85 
86 #endif // #ifndef __CLIENTSTATEBASE_H__
unsigned char u8
Definition: TypeDefs.h:6
void AddPacketFunction(u8 ID, const PacketFunc &Func)
Definition: ClientStateBase.h:71
ClientStateBase(Client *pInParent)
コンストラクタ
Definition: ClientStateBase.h:34
Client * GetParent() const
親クライアントを取得
Definition: ClientStateBase.h:63
virtual void BeginState()
State開始時の処理
Definition: ClientStateBase.h:46
クライアントステート基底クラス
Definition: ClientStateBase.h:20
virtual ~ClientStateBase()
デストラクタ
Definition: ClientStateBase.h:40
void AnalyzePacket(u8 ID, MemoryStreamInterface *pStream)
パケット解析
Definition: ClientStateBase.cpp:10
クライアントクラス
Definition: Client.h:26
Definition: MemoryStreamInterface.h:8