YAPOG  0.0.1
Yet Another Pokemon Online Game
PacketHandler.cpp
Go to the documentation of this file.
5 
6 namespace yap
7 {
9  : handlers_ ()
10  , relays_ ()
11  , parent_ (nullptr)
12  {
13  }
14 
16  {
17  }
18 
20  {
21  handlers_.Add (packetType, handler);
22  }
23 
25  {
26  if (handlers_.Contains (packet.GetType ()))
27  {
28  handlers_[packet.GetType ()] (packet);
29 
30  return true;
31  }
32 
33  for (IPacketHandler* relay : relays_)
34  if (relay->HandlePacket (packet))
35  return true;
36 
37  return false;
38  }
39 
41  {
42  if (parent_ == nullptr)
43  return false;
44 
45  return parent_->SendPacket (packet);
46  }
47 
49  {
50  relays_.Add (relay);
51  }
52 
54  {
55  relays_.Remove (relay);
56  }
57 
59  {
60  if (parent != nullptr && parent_ != nullptr)
61  YAPOG_THROW("Parent already exists.");
62 
63  parent_ = parent;
64  }
65 } // namespace yap