--- deliantra/server/include/client.h 2007/07/30 02:03:02 1.66 +++ deliantra/server/include/client.h 2008/04/21 21:32:32 1.74 @@ -1,11 +1,11 @@ /* - * This file is part of Crossfire TRT, the Roguelike Realtime MORPG. + * This file is part of Deliantra, the Roguelike Realtime MMORPG. * - * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team + * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Deliantra team * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team * Copyright (©) 1992,2007 Frank Tore Johansen * - * Crossfire TRT is free software: you can redistribute it and/or modify + * Deliantra is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. @@ -18,7 +18,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . * - * The authors can be reached via e-mail to + * The authors can be reached via e-mail to */ #ifndef CLIENT_H @@ -31,7 +31,7 @@ #if HAVE_TCP_INFO # include #else - struct tcpi_info { + struct tcp_info { // dummy char tcpi_state; char tcpi_ca_state; @@ -146,11 +146,6 @@ const packet_type *handler; char *data; int datalen; - - ~command () - { - sfree (data, datalen + 1); - } }; /* how many times we are allowed to give the wrong password before being kicked. */ @@ -244,38 +239,11 @@ struct tcp_info tcpi; tstamp next_rate_adjust; -#if FOR_PERL - // unfortunately, this emans that we *require* tcp_info now... - ACC (RW, tcpi.tcpi_state); - ACC (RW, tcpi.tcpi_ca_state); - ACC (RW, tcpi.tcpi_retransmits); - ACC (RW, tcpi.tcpi_probes); - ACC (RW, tcpi.tcpi_backoff); - ACC (RW, tcpi.tcpi_options); - ACC (RO, tcpi.tcpi_snd_wscale); - ACC (RO, tcpi.tcpi_rcv_wscale); - ACC (RW, tcpi.tcpi_rto); - ACC (RW, tcpi.tcpi_ato); - ACC (RW, tcpi.tcpi_snd_mss); - ACC (RW, tcpi.tcpi_rcv_mss); - ACC (RW, tcpi.tcpi_unacked); - ACC (RW, tcpi.tcpi_sacked); - ACC (RW, tcpi.tcpi_lost); - ACC (RW, tcpi.tcpi_retrans); - ACC (RW, tcpi.tcpi_fackets); - ACC (RW, tcpi.tcpi_last_data_sent); - ACC (RW, tcpi.tcpi_last_ack_sent); - ACC (RW, tcpi.tcpi_last_data_recv); - ACC (RW, tcpi.tcpi_last_ack_recv); - ACC (RW, tcpi.tcpi_pmtu); - ACC (RW, tcpi.tcpi_rcv_ssthresh); - ACC (RW, tcpi.tcpi_rtt); - ACC (RW, tcpi.tcpi_rttvar); - ACC (RW, tcpi.tcpi_snd_ssthresh); - ACC (RW, tcpi.tcpi_snd_cwnd); - ACC (RW, tcpi.tcpi_advmss); - ACC (RW, tcpi.tcpi_reordering); -#endif + + unordered_vector mapinfo_queue; + void mapinfo_queue_clear (); + void mapinfo_queue_run (); + bool mapinfo_try (char *buf); struct ixsend { int16_t pri; // unused @@ -290,8 +258,7 @@ void do_destroy (); void gather_callbacks (AV *&callbacks, event_type event) const; - iow socket_ev; void socket_cb (iow &w, int got); - iw cmd_ev; void cmd_cb (iw &w); + iow socket_ev; void socket_cb (iow &w, int revents); std::deque< command, slice_allocator > cmd_queue; @@ -365,6 +332,38 @@ ~client (); }; +#if FOR_PERL + ACC (RW, tcpi.tcpi_state); + ACC (RW, tcpi.tcpi_ca_state); + ACC (RW, tcpi.tcpi_retransmits); + ACC (RW, tcpi.tcpi_probes); + ACC (RW, tcpi.tcpi_backoff); + ACC (RW, tcpi.tcpi_options); + ACC (RO, tcpi.tcpi_snd_wscale); + ACC (RO, tcpi.tcpi_rcv_wscale); + ACC (RW, tcpi.tcpi_rto); + ACC (RW, tcpi.tcpi_ato); + ACC (RW, tcpi.tcpi_snd_mss); + ACC (RW, tcpi.tcpi_rcv_mss); + ACC (RW, tcpi.tcpi_unacked); + ACC (RW, tcpi.tcpi_sacked); + ACC (RW, tcpi.tcpi_lost); + ACC (RW, tcpi.tcpi_retrans); + ACC (RW, tcpi.tcpi_fackets); + ACC (RW, tcpi.tcpi_last_data_sent); + ACC (RW, tcpi.tcpi_last_ack_sent); + ACC (RW, tcpi.tcpi_last_data_recv); + ACC (RW, tcpi.tcpi_last_ack_recv); + ACC (RW, tcpi.tcpi_pmtu); + ACC (RW, tcpi.tcpi_rcv_ssthresh); + ACC (RW, tcpi.tcpi_rtt); + ACC (RW, tcpi.tcpi_rttvar); + ACC (RW, tcpi.tcpi_snd_ssthresh); + ACC (RW, tcpi.tcpi_snd_cwnd); + ACC (RW, tcpi.tcpi_advmss); + ACC (RW, tcpi.tcpi_reordering); +#endif + #define CLIENT_SUPPORT_READABLES(__sockPtr,__type)\ ( ((__type)>0) &&\ ((__sockPtr)->has_readable_type) && \ @@ -402,7 +401,7 @@ #define VERSION_CS 1023 /* version >= 1023 understand setup cmd */ #define VERSION_SC 1026 //#define VERSION_SC 1027 // requestinfo image_info and image_sums, makes extending faces on the fly impossible -#define VERSION_INFO "Crossfire TRT Server" +#define VERSION_INFO "Deliantra Server" typedef object_vector sockvec;