ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/newclient.h
(Generate patch)

Comparing deliantra/server/include/newclient.h (file contents):
Revision 1.16 by root, Thu Dec 14 02:07:49 2006 UTC vs.
Revision 1.18 by root, Thu Dec 14 20:39:54 2006 UTC

234#define SOUND_NORMAL 0 234#define SOUND_NORMAL 0
235#define SOUND_SPELL 1 235#define SOUND_SPELL 1
236 236
237struct data 237struct data
238{ 238{
239 unsigned int len;
239 const void *ptr; 240 const void *ptr;
240 unsigned int len;
241 241
242 data (const void *ptr, int len) : len (len), ptr (ptr) { } 242 data (const void *ptr, int len) : len (len), ptr (ptr) { }
243 data (const char *str) : len (strlen (str ? str : 0)), ptr ((void *)str) { } 243 data (const char *str) : len (strlen (str ? str : 0)), ptr ((void *)str) { }
244 data (const shstr &sh) : len (sh.length ()), ptr ((void *)&sh) { } 244 data (const shstr &sh) : len (sh.length ()), ptr ((void *)&sh) { }
245}; 245};
246 246
247struct data8 247struct data8
248{ 248{
249 unsigned int len;
249 const void *ptr; 250 const void *ptr;
250 unsigned int len;
251 251
252 data8 (const void *ptr, int len) : len (len), ptr (ptr) { } 252 data8 (const void *ptr, int len) : len (len), ptr (ptr) { }
253 data8 (const char *str) : len (strlen (str ? str : 0)), ptr ((void *)str) { } 253 data8 (const char *str) : len (strlen (str ? str : 0)), ptr ((void *)str) { }
254 data8 (const shstr &sh) : len (sh.length ()), ptr ((void *)&sh) { } 254 data8 (const shstr &sh) : len (sh.length ()), ptr ((void *)&sh) { }
255}; 255};
256 256
257struct data16 257struct data16
258{ 258{
259 unsigned int len;
259 const void *ptr; 260 const void *ptr;
260 unsigned int len;
261 261
262 data16 (const void *ptr, int len) : len (len), ptr (ptr) { } 262 data16 (const void *ptr, int len) : len (len), ptr (ptr) { }
263 data16 (const char *str) : len (strlen (str ? str : 0)), ptr ((void *)str) { } 263 data16 (const char *str) : len (strlen (str ? str : 0)), ptr ((void *)str) { }
264 data16 (const shstr &sh) : len (sh.length ()), ptr ((void *)&sh) { } 264 data16 (const shstr &sh) : len (sh.length ()), ptr ((void *)&sh) { }
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. */
268struct packet 268struct packet
269{ 269{
270 enum { bufsize = MAXSOCKBUF }; 270 enum { bufsize = MAXSOCKBUF };
271 enum { hdrlen = 2 }; // keep this many bytes free at the front
271 272
272 // strategy: only check on variable-length adds 273 // strategy: only check on variable-length adds
273 // and allow 256 bytes for any headers. 274 // and allow 256 bytes for any headers.
274 uint8 *cur; 275 uint8 *cur;
275 uint8 buf [bufsize + 256]; 276 uint8 buf_ [hdrlen + bufsize + 256];
276 277
277 packet () { reset (); } 278 packet () { reset (); }
278 279
280 uint8 operator [](unsigned int i) const { return buf_ [i + hdrlen]; }
281 uint8 &operator [](unsigned int i) { return buf_ [i + hdrlen]; }
282
283 uint8 *buf () { return buf_ + hdrlen; }
284 const uint8 *buf () const { return buf_ + hdrlen; }
285
279 void reset (int offset = 0) { cur = buf + offset; } 286 void reset (int offset = 0) { cur = buf () + offset; }
280 int length () const { return cur - buf; } 287 int length () const { return cur - buf (); }
281 int room () { return bufsize - (cur - buf); } 288 int room () { return bufsize - (cur - buf ()); }
282 289
283 // unchecked 290 // unchecked
284 packet &operator <<(uint8 v) { *cur++ = v; return *this; } 291 packet &operator <<(uint8 v) { *cur++ = v; return *this; }
285 292
286 packet &operator <<(uint16 v) { return *this << uint8 (v >> 8) << uint8 (v); } 293 packet &operator <<(uint16 v) { return *this << uint8 (v >> 8) << uint8 (v); }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines