YAPOG  0.0.1
Yet Another Pokemon Online Game
PacketHandler.hpp
Go to the documentation of this file.
1 #ifndef YAPOG_PACKETHANDLER_HPP
2 # define YAPOG_PACKETHANDLER_HPP
3 
4 # include <functional>
5 
6 # include "YAPOG/Macros.hpp"
8 # include "YAPOG/Collection/Map.hpp"
11 
12 # define ADD_HANDLER(TYPE, HANDLER) \
13  packetHandler_.AddHandler ( \
14  yap::PacketType::TYPE, \
15  std::bind (&HANDLER, this, std::placeholders::_1))
16 
17 namespace yap
18 {
19  struct IPacket;
20  struct ISocket;
21 
23  {
25 
26  public:
27 
28  typedef std::function<void (IPacket&)> HandlerType;
29 
30  PacketHandler ();
31  virtual ~PacketHandler ();
32 
33  void AddHandler (PacketType packetType, HandlerType action);
34 
37  virtual bool HandlePacket (IPacket& packet);
38  virtual bool SendPacket (IPacket& packet);
39 
40  virtual void AddRelay (IPacketHandler* relay);
41  virtual void RemoveRelay (IPacketHandler* relay);
42  virtual void SetParent (IPacketHandler* parent);
44 
45  private:
46 
48 
51  };
52 } // namespace yap
53 
54 #endif // YAPOG_PACKETHANDLER_HPP