YAPOG  0.0.1
Yet Another Pokemon Online Game
Packet.hpp
Go to the documentation of this file.
1 #ifndef YAPOG_PACKET_HPP
2 # define YAPOG_PACKET_HPP
3 
4 # include <SFML/Network/Packet.hpp>
5 
6 # include "YAPOG/Macros.hpp"
8 
9 namespace yap
10 {
11  class ClientSocket;
12 
13  class YAPOG_LIB Packet : public IPacket
14  {
16 
17  public:
18 
19  Packet ();
20  virtual ~Packet ();
21 
22  void CreateFromType (PacketType type);
23  bool CreateFromSocket (ClientSocket& socket);
24 
27  virtual const PacketType& GetType () const;
28 
29  virtual sf::Packet& GetInnerPacket ();
31 
34  virtual void Accept (IWriterVisitor& visitor);
35  virtual void Accept (IWriterConstVisitor& visitor) const;
36 
37  virtual void Write (const String& value);
38  virtual void Write (const String& name, const String& value);
39 
40  virtual void Write (const bool& value);
41  virtual void Write (const String& name, const bool& value);
42 
43  virtual void Write (const char& value);
44  virtual void Write (const String& name, const char& value);
45 
46  virtual void Write (const uchar& value);
47  virtual void Write (const String& name, const uchar& value);
48 
49  virtual void Write (const Int16& value);
50  virtual void Write (const String& name, const Int16& value);
51 
52  virtual void Write (const UInt16& value);
53  virtual void Write (const String& name, const UInt16& value);
54 
55  virtual void Write (const int& value);
56  virtual void Write (const String& name, const int& value);
57 
58  virtual void Write (const uint& value);
59  virtual void Write (const String& name, const uint& value);
60 
63  virtual void Write (const Int64& value);
64  virtual void Write (const String& name, const Int64& value);
65 
68  virtual void Write (const UInt64& value);
69  virtual void Write (const String& name, const UInt64& value);
70 
71  virtual void Write (const float& value);
72  virtual void Write (const String& name, const float& value);
73 
74  virtual void Write (const double& value);
75  virtual void Write (const String& name, const double& value);
76 
77  virtual void Write (const Vector2& value);
78  virtual void Write (const String& name, const Vector2& value);
79 
80  virtual void Write (const ID& value);
81  virtual void Write (const String& name, const ID& value);
83 
86  virtual void Accept (IReaderVisitor& visitor);
87  virtual void Accept (IReaderConstVisitor& visitor) const;
88 
89  virtual String ReadString ();
90  virtual String ReadString (const String& name);
91 
92  virtual bool ReadBool ();
93  virtual bool ReadBool (const String& name);
94 
95  virtual char ReadChar ();
96  virtual char ReadChar (const String& name);
97 
98  virtual uchar ReadUChar ();
99  virtual uchar ReadUChar (const String& name);
100 
101  virtual Int16 ReadInt16 ();
102  virtual Int16 ReadInt16 (const String& name);
103 
104  virtual UInt16 ReadUInt16 ();
105  virtual UInt16 ReadUInt16 (const String& name);
106 
107  virtual int ReadInt ();
108  virtual int ReadInt (const String& name);
109 
110  virtual uint ReadUInt ();
111  virtual uint ReadUInt (const String& name);
112 
115  virtual Int64 ReadInt64 ();
116  virtual Int64 ReadInt64 (const String& name);
117 
120  virtual UInt64 ReadUInt64 ();
121  virtual UInt64 ReadUInt64 (const String& name);
122 
123  virtual float ReadFloat ();
124  virtual float ReadFloat (const String& name);
125 
126  virtual double ReadDouble ();
127  virtual double ReadDouble (const String& name);
128 
129  virtual Vector2 ReadVector2 ();
130  virtual Vector2 ReadVector2 (const String& name);
131 
132  virtual ID ReadID ();
133  virtual ID ReadID (const String& name);
135 
136  private:
137 
138  void Write (PacketType packetType);
139  PacketType ReadPacketType ();
140 
141  template <typename T>
142  void WriteData (const T& data);
143 
144  template <typename T>
145  T ReadData ();
146 
147  static const PacketType DEFAULT_TYPE;
148 
150  sf::Packet packet_;
151  };
152 } // namespace yap
153 
155 
156 #endif // YAPOG_PACKET_HPP