--- deliantra/server/include/client.h 2007/07/28 00:15:03 1.65 +++ deliantra/server/include/client.h 2007/11/14 08:09:46 1.70 @@ -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 @@ -244,38 +244,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 +263,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; @@ -357,12 +329,46 @@ MTH void tick (); // called every server tick to do housekeeping etc. MTH static client *create (int fd, const char *peername); + MTH static void clock (); + MTH static void flush_sockets (); protected: client (int fd, const char *from_ip); ~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) && \ @@ -400,7 +406,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;