author | terom |
Mon, 08 Dec 2008 17:24:40 +0000 | |
changeset 296 | 4d3ebaa29430 |
parent 284 | 27ce69fd1e06 |
child 300 | 417183866f35 |
permissions | -rw-r--r-- |
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
1 |
#ifndef NETWORK_PACKET_HH |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
2 |
#define NETWORK_PACKET_HH |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
3 |
|
186 | 4 |
#include "Config.hh" |
5 |
#include "../Vector.hh" |
|
6 |
#include "../Error.hh" |
|
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
7 |
|
284 | 8 |
/** |
9 |
* Base class of errors thrown by NetworkPacket* methods |
|
10 |
*/ |
|
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
11 |
class NetworkPacketError : public Error { |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
12 |
public: |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
13 |
NetworkPacketError (const std::string &message) : Error(message) { } |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
14 |
}; |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
15 |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
16 |
// forward-declare for write_packet |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
17 |
class NetworkPacketBuffer; |
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
18 |
|
284 | 19 |
/** |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
20 |
* Read-interface for network packets |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
21 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
22 |
class NetworkPacketInput { |
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
23 |
public: |
284 | 24 |
/** |
25 |
* Abstract method that copies len bytes from the packet to ptr, first testing that they exist |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
26 |
*/ |
284 | 27 |
virtual void read ( |
28 |
void *ptr, //<<< where to copy |
|
29 |
size_t len //<<< number of bytes to copy |
|
30 |
) = 0; |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
31 |
|
284 | 32 |
/** |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
33 |
* Convenience function to read() and return the value of the given type |
284 | 34 |
* |
35 |
* @return T The value |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
36 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
37 |
template <typename T> T read_val (void); |
296
4d3ebaa29430
add separate Types.hh, and fix projectile-worm collisions on network
terom
parents:
284
diff
changeset
|
38 |
|
4d3ebaa29430
add separate Types.hh, and fix projectile-worm collisions on network
terom
parents:
284
diff
changeset
|
39 |
// @{ |
284 | 40 |
/** |
296
4d3ebaa29430
add separate Types.hh, and fix projectile-worm collisions on network
terom
parents:
284
diff
changeset
|
41 |
* Collection of methods to write out simple types, these convert from network-endianness and return the value |
284 | 42 |
*/ |
43 |
||
44 |
/** 32-bit unsigned int */ |
|
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
45 |
uint32_t read_uint32 (void); |
284 | 46 |
|
47 |
/** 16-bit unsigned int */ |
|
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
48 |
uint16_t read_uint16 (void); |
284 | 49 |
|
50 |
/** 8-bit unsigned int */ |
|
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
51 |
uint8_t read_uint8 (void); |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
52 |
|
284 | 53 |
/** 32-bit signed int */ |
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
54 |
int32_t read_int32 (void); |
284 | 55 |
|
56 |
/** 16-bit signed int */ |
|
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
57 |
int16_t read_int16 (void); |
284 | 58 |
|
59 |
/** 8-bit signed int */ |
|
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
60 |
int8_t read_int8 (void); |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
61 |
|
284 | 62 |
/** 32-bit float */ |
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
63 |
float read_float32 (void); |
284 | 64 |
|
296
4d3ebaa29430
add separate Types.hh, and fix projectile-worm collisions on network
terom
parents:
284
diff
changeset
|
65 |
// @} |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
66 |
|
284 | 67 |
/** |
68 |
* Read a Vector from the packet: |
|
69 |
* float32 vec_x |
|
70 |
* float32 vec_y |
|
71 |
* |
|
72 |
* @return Vector (vec_x, vec_y) |
|
73 |
*/ |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
74 |
Vector read_vector (void); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
75 |
}; |
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
76 |
|
284 | 77 |
/** |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
78 |
* Write-interface for network packets |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
79 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
80 |
class NetworkPacketOutput { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
81 |
public: |
284 | 82 |
/** |
83 |
* Abstract method that copies len bytes from ptr to the packet, first testing that they fit |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
84 |
*/ |
284 | 85 |
virtual void write ( |
86 |
const void *ptr, //<<< where to copy from |
|
87 |
size_t len //<<< number of bytes to copy |
|
88 |
) = 0; |
|
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
89 |
|
284 | 90 |
/** |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
91 |
* Convenience function to write() the value of the given type-value |
284 | 92 |
* |
93 |
* @param val The value |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
94 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
95 |
template <typename T> void write_val (const T &val); |
284 | 96 |
|
296
4d3ebaa29430
add separate Types.hh, and fix projectile-worm collisions on network
terom
parents:
284
diff
changeset
|
97 |
// @{ |
284 | 98 |
/** |
296
4d3ebaa29430
add separate Types.hh, and fix projectile-worm collisions on network
terom
parents:
284
diff
changeset
|
99 |
* Collection of methods to write out simple types, these convert the given value to network-byte-order |
284 | 100 |
*/ |
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
101 |
void write_uint32 (uint32_t val); |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
102 |
void write_uint16 (uint16_t val); |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
103 |
void write_uint8 (uint8_t val); |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
104 |
void write_int32 (int32_t val); |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
105 |
void write_int16 (int16_t val); |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
106 |
void write_int8 (int8_t val); |
284 | 107 |
void write_float32 (float val); |
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
108 |
|
296
4d3ebaa29430
add separate Types.hh, and fix projectile-worm collisions on network
terom
parents:
284
diff
changeset
|
109 |
// @{ |
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
110 |
|
284 | 111 |
/** |
112 |
* Write a vector to the packet: |
|
113 |
* float32 vec_x |
|
114 |
* float32 vec_y |
|
115 |
* |
|
116 |
* @param vec a Vector(vec_x, vec_y) |
|
117 |
*/ |
|
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
118 |
void write_vector (const Vector &vec); |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
119 |
|
284 | 120 |
/** |
121 |
* This write()s the contents of the given NetworkPacketBuffer to this packet. |
|
122 |
* |
|
123 |
* @param pkt the sub-packet to write() |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
124 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
125 |
void write_packet (const NetworkPacketBuffer &pkt); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
126 |
}; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
127 |
|
284 | 128 |
/** |
129 |
* Implements an in-memory seekable buffer used by NetworkPackets |
|
130 |
* |
|
131 |
* @see NetworkPacketInput |
|
132 |
* @see NetworkPacketOutput |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
133 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
134 |
class NetworkPacketBuffer : public NetworkPacketInput, public NetworkPacketOutput { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
135 |
protected: |
284 | 136 |
/** |
137 |
* Pointer to the packet data |
|
138 |
*/ |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
139 |
char *buf_ptr; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
140 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
141 |
// the buffer size, the amount of data in the buffer, and the current read/write offset |
284 | 142 |
/** |
143 |
* The size of the memory region pointed to by buf_ptr |
|
144 |
*/ |
|
145 |
size_t buf_size; |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
146 |
|
284 | 147 |
/** |
148 |
* The number of bytes of read()-able data stored at buf_ptr |
|
149 |
*/ |
|
150 |
size_t data_size; |
|
151 |
||
152 |
/** |
|
153 |
* The current offset at which to run the next read/write |
|
154 |
*/ |
|
155 |
size_t offset; |
|
156 |
||
157 |
/** |
|
158 |
* Assert that the given number of bytes fits into the buffer at offset. Throws NetworkPacketError if not. |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
159 |
* |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
160 |
* The default implementation just checks offset and buf_size |
284 | 161 |
* |
162 |
* @param item_size the size of the item that should to be written |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
163 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
164 |
virtual void check_write_size (size_t item_size); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
165 |
|
284 | 166 |
/** |
167 |
* Assert that the given number of bytes is available from the buffer. Throws NetworkPacketError if not |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
168 |
* |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
169 |
* The default implementation just checks offset and data_size |
284 | 170 |
* |
171 |
* @param item_size the size of the item that should be read |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
172 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
173 |
virtual void check_read_size (size_t item_size); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
174 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
175 |
public: |
284 | 176 |
/** |
177 |
* Construct the NetworkPacketBuffer using the given buf_ptr, buf_size and data_size |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
178 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
179 |
NetworkPacketBuffer (char *buf_ptr, size_t buf_size, size_t data_size); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
180 |
|
284 | 181 |
/** |
182 |
* Copy bytes from the packet buffer to ptr using memcpy(), calling check_read_size first. |
|
183 |
* |
|
184 |
* @param ptr where to copy the data to |
|
185 |
* @param len number of bytes to copy |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
186 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
187 |
virtual void read (void *ptr, size_t len); |
284 | 188 |
|
189 |
/** |
|
190 |
* Copy bytes from ptr to the packet buffer using memcpy(), calling check_write_size first |
|
191 |
* |
|
192 |
* @param ptr where to copy the data from |
|
193 |
* @param len number of bytes to copy |
|
194 |
*/ |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
195 |
virtual void write (const void *ptr, size_t len); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
196 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
197 |
/* |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
198 |
* Accessor functions, used by the actual socket code to read/write the buffer |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
199 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
200 |
char* get_buf (void) { return buf_ptr; } |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
201 |
const char* get_buf (void) const { return buf_ptr; } |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
202 |
size_t get_data_size (void) const { return data_size; } |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
203 |
size_t get_buf_size (void) const { return buf_size; } |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
204 |
|
284 | 205 |
/** |
206 |
* If the contents of buf_ptr is replaced with a new packet, call this to update offset/data_size |
|
207 |
* |
|
208 |
* @param size new amount of data in the buffer |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
209 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
210 |
void set_data_size (size_t size) { offset = 0; data_size = size; } |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
211 |
}; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
212 |
|
284 | 213 |
/** |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
214 |
* The common case is a packet that fits in a single UDP packet, so this just uses a static buffer of a fixed size, |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
215 |
* NETWORK_PACKET_SIZE. |
284 | 216 |
* |
217 |
* @see NetworkPacketBuffer |
|
218 |
* @see NETWORK_PACKET_SIZE |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
219 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
220 |
class NetworkPacket : public NetworkPacketBuffer { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
221 |
private: |
284 | 222 |
/** |
223 |
* The static buffer, NETWORK_PACKET_SIZE bytes |
|
224 |
*/ |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
225 |
char _buf[NETWORK_PACKET_SIZE]; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
226 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
227 |
public: |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
228 |
NetworkPacket (void); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
229 |
}; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
230 |
|
284 | 231 |
/** |
232 |
* This is intended for sending bigger packets via TCP; a buffer of the given size is allocated on the heap. |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
233 |
* |
284 | 234 |
* @see NetworkPacketBuffer |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
235 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
236 |
class BigNetworkPacket : public NetworkPacketBuffer { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
237 |
public: |
284 | 238 |
/** |
239 |
* Allocates a buffer of the given size on the heap and uses it for NetworkPacketBuffer |
|
240 |
*/ |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
186
diff
changeset
|
241 |
BigNetworkPacket (size_t size); |
202 | 242 |
|
243 |
private: |
|
284 | 244 |
/** |
245 |
* Object must not be copied |
|
246 |
*/ |
|
202 | 247 |
BigNetworkPacket (const BigNetworkPacket &pkt); |
248 |
BigNetworkPacket& operator= (const BigNetworkPacket &pkt); |
|
249 |
||
203
3ec7ab40755f
send initial terrain data to clients using a new NETCHAN_TERRAIN_ARRAY channel using raw BigNetworkPacket
terom
parents:
202
diff
changeset
|
250 |
public: |
284 | 251 |
/** |
252 |
* Frees the heap buffer |
|
253 |
*/ |
|
202 | 254 |
virtual ~BigNetworkPacket (void); |
185
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
255 |
}; |
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
256 |
|
25becd2cb026
that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff
changeset
|
257 |
#endif /* NETWORK_PACKET_HH */ |