summaryrefslogtreecommitdiff
path: root/source/net_chan.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/net_chan.h')
-rw-r--r--source/net_chan.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/source/net_chan.h b/source/net_chan.h
index 64d57fa..05bde3e 100644
--- a/source/net_chan.h
+++ b/source/net_chan.h
@@ -19,6 +19,62 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
// net_chan.h
+typedef enum netchan_type_e {
+ NETCHAN_OLD,
+ NETCHAN_NEW
+} netchan_type_t;
+
+typedef struct netchan_s {
+ netchan_type_t type;
+ int protocol;
+ size_t maxpacketlen;
+
+ qboolean fatal_error;
+
+ netsrc_t sock;
+
+ int dropped; // between last packet and previous
+
+ unsigned last_received; // for timeouts
+ unsigned last_sent; // for retransmits
+
+ netadr_t remote_address;
+ int qport; // qport value to write when transmitting
+
+ sizebuf_t message; // writing buffer for reliable data
+
+ size_t reliable_length;
+
+ qboolean reliable_ack_pending; // set to qtrue each time reliable is received
+ qboolean fragment_pending;
+
+ // sequencing variables
+ int incoming_sequence;
+ int incoming_acknowledged;
+ int outgoing_sequence;
+
+ size_t (*Transmit)( struct netchan_s *, size_t, const void * );
+ size_t (*TransmitNextFragment)( struct netchan_s * );
+ qboolean (*Process)( struct netchan_s * );
+ qboolean (*ShouldUpdate)( struct netchan_s * );
+} netchan_t;
+
+extern cvar_t *net_qport;
+extern cvar_t *net_maxmsglen;
+extern cvar_t *net_chantype;
+
+void Netchan_Init( void );
+neterr_t Netchan_OutOfBandPrint( netsrc_t sock, const netadr_t *adr,
+ const char *format, ... );
+netchan_t *Netchan_Setup( netsrc_t sock, netchan_type_t type,
+ const netadr_t *adr, int qport, size_t maxpacketlen, int protocol );
+void Netchan_Close( netchan_t *netchan );
+
+#define OOB_PRINT( sock, addr, string ) \
+ NET_SendPacket( sock, addr, sizeof( "\xff\xff\xff\xff" string ) - 1, "\xff\xff\xff\xff" string )
+
+//============================================================================
+
typedef struct netchan_old_s {
netchan_t pub;