home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga 14 / MA_Cover_14.iso / source / c / q1source_amy / qw / client / net.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-12-21  |  3.3 KB  |  113 lines

  1. /*
  2. Copyright (C) 1996-1997 Id Software, Inc.
  3.  
  4. This program is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU General Public License
  6. as published by the Free Software Foundation; either version 2
  7. of the License, or (at your option) any later version.
  8.  
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
  12.  
  13. See the GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18.  
  19. */
  20. // net.h -- quake's interface to the networking layer
  21.  
  22. #define    PORT_ANY    -1
  23.  
  24. typedef struct
  25. {
  26.     byte    ip[4];
  27.     unsigned short    port;
  28.     unsigned short    pad;
  29. } netadr_t;
  30.  
  31. extern    netadr_t    net_local_adr;
  32. extern    netadr_t    net_from;        // address of who sent the packet
  33. extern    sizebuf_t    net_message;
  34.  
  35. extern    cvar_t    hostname;
  36.  
  37. extern    int        net_socket;
  38.  
  39. void        NET_Init (int port);
  40. void        NET_Shutdown (void);
  41. qboolean    NET_GetPacket (void);
  42. void        NET_SendPacket (int length, void *data, netadr_t to);
  43.  
  44. qboolean    NET_CompareAdr (netadr_t a, netadr_t b);
  45. qboolean    NET_CompareBaseAdr (netadr_t a, netadr_t b);
  46. char        *NET_AdrToString (netadr_t a);
  47. char        *NET_BaseAdrToString (netadr_t a);
  48. qboolean    NET_StringToAdr (char *s, netadr_t *a);
  49. qboolean NET_IsClientLegal(netadr_t *adr);
  50.  
  51. //============================================================================
  52.  
  53. #define    OLD_AVG        0.99        // total = oldtotal*OLD_AVG + new*(1-OLD_AVG)
  54.  
  55. #define    MAX_LATENT    32
  56.  
  57. typedef struct
  58. {
  59.     qboolean    fatal_error;
  60.  
  61.     float        last_received;        // for timeouts
  62.  
  63. // the statistics are cleared at each client begin, because
  64. // the server connecting process gives a bogus picture of the data
  65.     float        frame_latency;        // rolling average
  66.     float        frame_rate;
  67.  
  68.     int            drop_count;            // dropped packets, cleared each level
  69.     int            good_count;            // cleared each level
  70.  
  71.     netadr_t    remote_address;
  72.     int            qport;
  73.  
  74. // bandwidth estimator
  75.     double        cleartime;            // if realtime > nc->cleartime, free to go
  76.     double        rate;                // seconds / byte
  77.  
  78. // sequencing variables
  79.     int            incoming_sequence;
  80.     int            incoming_acknowledged;
  81.     int            incoming_reliable_acknowledged;    // single bit
  82.  
  83.     int            incoming_reliable_sequence;        // single bit, maintained local
  84.  
  85.     int            outgoing_sequence;
  86.     int            reliable_sequence;            // single bit
  87.     int            last_reliable_sequence;        // sequence number of last send
  88.  
  89. // reliable staging and holding areas
  90.     sizebuf_t    message;        // writing buffer to send to server
  91.     byte        message_buf[MAX_MSGLEN];
  92.  
  93.     int            reliable_length;
  94.     byte        reliable_buf[MAX_MSGLEN];    // unacked reliable message
  95.  
  96. // time and size data to calculate bandwidth
  97.     int            outgoing_size[MAX_LATENT];
  98.     double        outgoing_time[MAX_LATENT];
  99. } netchan_t;
  100.  
  101. extern    int    net_drop;        // packets dropped before this one
  102.  
  103. void Netchan_Init (void);
  104. void Netchan_Transmit (netchan_t *chan, int length, byte *data);
  105. void Netchan_OutOfBand (netadr_t adr, int length, byte *data);
  106. void Netchan_OutOfBandPrint (netadr_t adr, char *format, ...);
  107. qboolean Netchan_Process (netchan_t *chan);
  108. void Netchan_Setup (netchan_t *chan, netadr_t adr, int qport);
  109.  
  110. qboolean Netchan_CanPacket (netchan_t *chan);
  111. qboolean Netchan_CanReliable (netchan_t *chan);
  112.  
  113.