4 #include "NetworkConfig.hh" |
4 #include "NetworkConfig.hh" |
5 |
5 |
6 class NetworkPacket { |
6 class NetworkPacket { |
7 private: |
7 private: |
8 char buf[NETWORK_PACKET_SIZE]; |
8 char buf[NETWORK_PACKET_SIZE]; |
9 size_t size, offset; |
9 size_t buf_size, data_size, offset; |
|
10 |
|
11 void check_write_size (size_t item_size); |
|
12 void check_read_size (size_t item_size); |
10 |
13 |
11 template <typename T> T read_val (void); |
14 template <typename T> T read_val (void); |
12 template <typename T> void write_val (const T &val); |
15 template <typename T> void write_val (const T &val); |
13 |
16 |
14 public: |
17 public: |
15 NetworkPacket (void); |
18 NetworkPacket (void); |
16 |
19 |
17 char* get_buf (void) { return buf; } |
20 char* get_buf (void) { return buf; } |
18 size_t get_data_size (void) { return offset; } |
21 const char* get_buf (void) const { return buf; } |
19 size_t get_buf_size (void) { return size; } |
22 size_t get_data_size (void) const { return data_size; } |
|
23 size_t get_buf_size (void) const { return buf_size; } |
20 |
24 |
21 void set_data_size (size_t size) { offset = size; } |
25 void set_data_size (size_t size) { offset = 0; data_size = size; } |
22 |
26 |
23 // type-reads, handle network-endianlness |
27 // type-reads, handle network-endianlness |
24 uint32_t read_uint32 (void); |
28 uint32_t read_uint32 (void) const; |
25 uint16_t read_uint16 (void); |
29 uint16_t read_uint16 (void) const; |
26 uint8_t read_uint8 (void); |
30 uint8_t read_uint8 (void) const; |
27 |
31 |
28 int32_t read_int32 (void); |
32 int32_t read_int32 (void) const; |
29 int16_t read_int16 (void); |
33 int16_t read_int16 (void) const; |
30 int8_t read_int8 (void); |
34 int8_t read_int8 (void) const; |
31 |
35 |
32 void write_uint32 (uint32_t val); |
36 void write_uint32 (uint32_t val); |
33 void write_uint16 (uint16_t val); |
37 void write_uint16 (uint16_t val); |
34 void write_uint8 (uint8_t val); |
38 void write_uint8 (uint8_t val); |
35 |
39 |
36 void write_int32 (int32_t val); |
40 void write_int32 (int32_t val); |
37 void write_int16 (int16_t val); |
41 void write_int16 (int16_t val); |
38 void write_int8 (int8_t val); |
42 void write_int8 (int8_t val); |
39 |
43 |
40 |
44 void write_packet (const NetworkPacket &pkt); |
41 }; |
45 }; |
42 |
46 |
43 #endif /* NETWORK_PACKET_HH */ |
47 #endif /* NETWORK_PACKET_HH */ |