double lastSendTime;
qboolean canSend;
- qboolean sendNext;
+ // writing buffer to send to peer as the next reliable message
+ // can be added to at any time, copied into sendMessage buffer when it is
+ // possible to send a reliable message and then cleared
+ sizebuf_t message;
+ unsigned char messagedata[NET_MAXMESSAGE];
+
+ // reliable message that is currently sending
+ // (for building fragments)
unsigned int ackSequence;
unsigned int sendSequence;
unsigned int unreliableSendSequence;
int sendMessageLength;
- qbyte sendMessage[NET_MAXMESSAGE];
+ unsigned char sendMessage[NET_MAXMESSAGE];
+ // reliable message that is currently being received
+ // (for putting together fragments)
unsigned int receiveSequence;
unsigned int unreliableReceiveSequence;
int receiveMessageLength;
- qbyte receiveMessage[NET_MAXMESSAGE];
+ unsigned char receiveMessage[NET_MAXMESSAGE];
char address[128];
} netconn_t;
extern int playercolor;
#define SERVERLIST_TOTALSIZE 2048
-#define SERVERLIST_VIEWLISTSIZE 128
+#define SERVERLIST_VIEWLISTSIZE SERVERLIST_TOTALSIZE
#define SERVERLIST_ANDMASKCOUNT 5
#define SERVERLIST_ORMASKCOUNT 5
-typedef enum
+typedef enum serverlist_maskop_e
{
// SLMO_CONTAINS is the default for strings
// SLMO_GREATEREQUAL is the default for numbers (also used when OP == CONTAINS or NOTCONTAINS
} serverlist_maskop_t;
// struct with all fields that you can search for or sort by
-typedef struct
+typedef struct serverlist_info_s
{
// address for connecting
char cname[128];
SLIF_COUNT
} serverlist_infofield_t;
-typedef struct
+typedef enum
+{
+ SQS_NONE = 0,
+ SQS_QUERYING,
+ SQS_QUERIED,
+ SQS_TIMEDOUT
+} serverlist_query_state;
+
+typedef struct serverlist_entry_s
{
// used to determine whether this entry should be included into the final view
- qboolean finished;
+ serverlist_query_state query;
+ // used to count the number of times the host has tried to query this server already
+ unsigned querycounter;
// used to calculate ping when update comes in
double querytime;
char line2[128];
} serverlist_entry_t;
-typedef struct
+typedef struct serverlist_mask_s
{
qboolean active;
serverlist_maskop_t tests[SLIF_COUNT];
extern qboolean serverlist_consoleoutput;
-#if !defined(_WIN32 ) && !defined (__linux__) && !defined (__sun__)
+#if !defined(_WIN32) && !defined(__linux__) && !defined(SUNOS)
#ifndef htonl
extern unsigned long htonl (unsigned long hostlong);
#endif
extern cvar_t cl_netlocalping;
-int NetConn_SendReliableMessage(netconn_t *conn, sizebuf_t *data);
-//void NetConn_SendMessageNext(netconn_t *conn);
-//void NetConn_ReSendMessage(netconn_t *conn);
-qboolean NetConn_CanSendMessage(netconn_t *conn);
int NetConn_SendUnreliableMessage(netconn_t *conn, sizebuf_t *data);
void NetConn_CloseClientPorts(void);
void NetConn_OpenClientPorts(void);
void NetConn_CloseServerPorts(void);
void NetConn_OpenServerPorts(int opennetports);
+void NetConn_UpdateSockets(void);
lhnetsocket_t *NetConn_ChooseClientSocketForAddress(lhnetaddress_t *address);
lhnetsocket_t *NetConn_ChooseServerSocketForAddress(lhnetaddress_t *address);
void NetConn_Init(void);
void NetConn_Close(netconn_t *conn);
void NetConn_Listen(qboolean state);
int NetConn_IsLocalGame(void);
-//int NetConn_ReceivedMessage(netconn_t *conn, qbyte *data, int length);
-//int NetConn_ClientParsePacket(lhnetsocket_t *mysocket, qbyte *data, int length, lhnetaddress_t *peeraddress);
-//int NetConn_ServerParsePacket(lhnetsocket_t *mysocket, qbyte *data, int length, lhnetaddress_t *peeraddress);
void NetConn_ClientFrame(void);
void NetConn_ServerFrame(void);
void NetConn_QueryMasters(void);
void NetConn_Heartbeat(int priority);
-int NetConn_SendToAll(sizebuf_t *data, double blocktime);
+void NetConn_QueryQueueFrame(void);
void Net_Stats_f(void);
void Net_Slist_f(void);