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

Comparing deliantra/server/include/network.h (file contents):
Revision 1.2 by root, Fri Dec 15 20:07:02 2006 UTC vs.
Revision 1.6 by root, Fri Dec 22 02:04:20 2006 UTC

17 17
18 You should have received a copy of the GNU General Public License 18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software 19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 21
22 The authors can be reached via e-mail at crossfire.de 22 The authors can be reached via e-mail at crossfire@schmorp.de
23*/ 23*/
24 24
25/* This file defines various flags that both the new client and 25/* This file defines various flags that both the new client and
26 * newserver uses. These should never be changed, only expanded. 26 * newserver uses. These should never be changed, only expanded.
27 * Changing them will likely cause all old clients to not work properly. 27 * Changing them will likely cause all old clients to not work properly.
39 * more reliable, as both the client and server will definately be 39 * more reliable, as both the client and server will definately be
40 * talking about the same values. 40 * talking about the same values.
41 */ 41 */
42 42
43 43
44#ifndef NEWCLIENT_H 44#ifndef NETWORK_H
45#define NEWCLIENT_H 45#define NETWORK_H
46 46
47/* Maximum size of any packet we expect. Using this makes it so we don't need to 47#include <cstdarg>
48 * allocated and deallocated the same buffer over and over again and the price 48
49 * of using a bit of extra memory. It also makes the code simpler. 49/* Maximum size of any packet we expect.
50 * 50 *
51 * The size must be the same in the server and the client (stupid), and its also NOT 51 * The size must be the same in the server and the client (stupid), and its also NOT
52 * the maximum buffer size as one would expect, but the maximum buffer size + 1. 52 * the maximum buffer size as one would expect, but the maximum buffer size + 1.
53 */ 53 */
54#define MAXSOCKBUF 10240 54#define MAXSOCKBUF 10240
55 55
56
57#define CS_QUERY_YESNO 0x1 /* Yes/no question */ 56#define CS_QUERY_YESNO 0x1 /* Yes/no question */
58#define CS_QUERY_SINGLECHAR 0x2 /* Single character response expected */ 57#define CS_QUERY_SINGLECHAR 0x2 /* Single character response expected */
59#define CS_QUERY_HIDEINPUT 0x4 /* Hide input being entered */ 58#define CS_QUERY_HIDEINPUT 0x4 /* Hide input being entered */
60
61#define CS_SAY_NORMAL 0x1 /* Normal say command */
62#define CS_SAY_SHOUT 0x2 /* Text is shouted. */
63#define CS_SAY_GSAY 0x4 /* Text is group say command */
64 59
65/* These are multiplication values that should be used when changing 60/* These are multiplication values that should be used when changing
66 * floats to ints, and vice version. MULTI is integer representatin 61 * floats to ints, and vice version. MULTI is integer representatin
67 * (float to int), MULTF is float, for going from int to float. 62 * (float to int), MULTF is float, for going from int to float.
68 */ 63 */
274 // strategy: only check on variable-length adds 269 // strategy: only check on variable-length adds
275 // and allow 256 bytes for any headers. 270 // and allow 256 bytes for any headers.
276 uint8 *cur; 271 uint8 *cur;
277 uint8 buf_ [hdrlen + bufsize + 256]; 272 uint8 buf_ [hdrlen + bufsize + 256];
278 273
279 packet () { reset (); } 274 packet ()
275 {
276 reset ();
277 }
278
279 packet (const char *name);
280 280
281 uint8 operator [](unsigned int i) const { return buf_ [i + hdrlen]; } 281 uint8 operator [](unsigned int i) const { return buf_ [i + hdrlen]; }
282 uint8 &operator [](unsigned int i) { return buf_ [i + hdrlen]; } 282 uint8 &operator [](unsigned int i) { return buf_ [i + hdrlen]; }
283 283
284 uint8 *buf () { return buf_ + hdrlen; } 284 uint8 *buf () { return buf_ + hdrlen; }
306 packet &operator <<(const data16 &v); 306 packet &operator <<(const data16 &v);
307 307
308 packet &operator <<(const char *v); 308 packet &operator <<(const char *v);
309 packet &operator <<(const shstr &sh) { return *this << data (&sh, sh.length ()); } 309 packet &operator <<(const shstr &sh) { return *this << data (&sh, sh.length ()); }
310 310
311 void vprintf (const char *format, va_list ap);
312
311 void printf (const char *format, ...); 313 void printf (const char *format, ...)
314 {
315 va_list ap;
316 va_start (ap, format);
317 vprintf (format, ap);
318 va_end (ap);
319 }
312}; 320};
313 321
314inline uint16 net_uint16 (uint8 *data) { return (data [0] << 8) | data [1]; } 322inline uint16 net_uint16 (uint8 *data) { return (data [0] << 8) | data [1]; }
315inline uint32 net_uint32 (uint8 *data) { return (net_uint16 (data) << 16) | net_uint16 (data + 2); } 323inline uint32 net_uint32 (uint8 *data) { return (net_uint16 (data) << 16) | net_uint16 (data + 2); }
316inline sint16 net_sint16 (uint8 *data) { return sint16 (net_uint16 (data)); } 324inline sint16 net_sint16 (uint8 *data) { return sint16 (net_uint16 (data)); }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines