… | |
… | |
265 | }; |
265 | }; |
266 | |
266 | |
267 | /* Contains the base information we use to make up a packet we want to send. */ |
267 | /* Contains the base information we use to make up a packet we want to send. */ |
268 | struct packet |
268 | struct packet |
269 | { |
269 | { |
270 | packet () : buf ((uint8 *)malloc (MAXSOCKBUF)), len (0) { } |
270 | packet () : len (0) { } |
271 | ~packet () { free (buf); } |
|
|
272 | |
271 | |
273 | void reset () { len = 0; } |
272 | void reset () { len = 0; } |
274 | int length () const { return len; } |
273 | int length () const { return len; } |
275 | |
274 | |
276 | packet &operator <<(uint8 v) { buf [len++] = v; return *this; } |
275 | packet &operator <<(uint8 v) { buf [len++] = v; return *this; } |
… | |
… | |
292 | packet &operator <<(const shstr &sh) { return *this << data (&sh, sh.length ()); } |
291 | packet &operator <<(const shstr &sh) { return *this << data (&sh, sh.length ()); } |
293 | |
292 | |
294 | void printf (const char *format, ...); |
293 | void printf (const char *format, ...); |
295 | |
294 | |
296 | public: |
295 | public: |
297 | uint8 *buf; |
296 | uint8 buf [MAXSOCKBUF]; |
298 | int len; |
297 | int len; |
299 | }; |
298 | }; |
300 | |
299 | |
301 | inline uint16 net_uint16 (uint8 *data) { return (data [0] << 8) | data [1]; } |
300 | inline uint16 net_uint16 (uint8 *data) { return (data [0] << 8) | data [1]; } |
302 | inline uint32 net_uint32 (uint8 *data) { return (net_uint16 (data) << 16) | net_uint16 (data + 2); } |
301 | inline uint32 net_uint32 (uint8 *data) { return (net_uint16 (data) << 16) | net_uint16 (data + 2); } |