*/
// net.h -- quake's interface to the networking layer
+#ifndef NET_H
+#define NET_H
+
struct qsockaddr
{
short sa_family;
#define NET_NAMELEN 64
-#define NET_MAXMESSAGE 16384
+#define NET_MAXMESSAGE (MAX_DATAGRAM + 64)
#define NET_HEADERSIZE (2 * sizeof(unsigned int))
#define NET_DATAGRAMSIZE (MAX_DATAGRAM + NET_HEADERSIZE)
qboolean disconnected;
qboolean canSend;
qboolean sendNext;
-
+
int driver;
int landriver;
int socket;
unsigned int sendSequence;
unsigned int unreliableSendSequence;
int sendMessageLength;
- byte sendMessage [NET_MAXMESSAGE];
+ qbyte sendMessage [NET_MAXMESSAGE];
unsigned int receiveSequence;
unsigned int unreliableReceiveSequence;
int receiveMessageLength;
- byte receiveMessage [NET_MAXMESSAGE];
+ qbyte receiveMessage [NET_MAXMESSAGE];
struct qsockaddr addr;
char address[NET_NAMELEN];
-
} qsocket_t;
extern qsocket_t *net_activeSockets;
-extern qsocket_t *net_freeSockets;
-extern int net_numsockets;
+extern mempool_t *net_mempool;
typedef struct
{
int (*CloseSocket) (int socket);
int (*Connect) (int socket, struct qsockaddr *addr);
int (*CheckNewConnections) (void);
- int (*Read) (int socket, byte *buf, int len, struct qsockaddr *addr);
- int (*Write) (int socket, byte *buf, int len, struct qsockaddr *addr);
- int (*Broadcast) (int socket, byte *buf, int len);
- char * (*AddrToString) (struct qsockaddr *addr);
- int (*StringToAddr) (char *string, struct qsockaddr *addr);
+ int (*Recv) (qbyte *buf, int len, struct qsockaddr *addr);
+ int (*Send) (qbyte *buf, int len, struct qsockaddr *addr);
+ int (*Read) (int socket, qbyte *buf, int len, struct qsockaddr *addr);
+ int (*Write) (int socket, qbyte *buf, int len, struct qsockaddr *addr);
+ int (*Broadcast) (int socket, qbyte *buf, int len);
+ char * (*AddrToString) (const struct qsockaddr *addr);
+ int (*StringToAddr) (const char *string, struct qsockaddr *addr);
int (*GetSocketAddr) (int socket, struct qsockaddr *addr);
- int (*GetNameFromAddr) (struct qsockaddr *addr, char *name);
- int (*GetAddrFromName) (char *name, struct qsockaddr *addr);
- int (*AddrCompare) (struct qsockaddr *addr1, struct qsockaddr *addr2);
+ int (*GetNameFromAddr) (const struct qsockaddr *addr, char *name);
+ int (*GetAddrFromName) (const char *name, struct qsockaddr *addr);
+ int (*AddrCompare) (const struct qsockaddr *addr1, const struct qsockaddr *addr2);
int (*GetSocketPort) (struct qsockaddr *addr);
int (*SetSocketPort) (struct qsockaddr *addr, int port);
} net_landriver_t;
int (*Init) (void);
void (*Listen) (qboolean state);
void (*SearchForHosts) (qboolean xmit);
- qsocket_t *(*Connect) (char *host);
+ qboolean (*SearchForInetHosts) (const char *master);
+ qsocket_t *(*Connect) (const char *host);
qsocket_t *(*CheckNewConnections) (void);
int (*QGetMessage) (qsocket_t *sock);
int (*QSendMessage) (qsocket_t *sock, sizebuf_t *data);
qboolean (*CanSendUnreliableMessage) (qsocket_t *sock);
void (*Close) (qsocket_t *sock);
void (*Shutdown) (void);
+ void (*Heartbeat) (const char *host);
int controlSock;
} net_driver_t;
struct qsocket_s *NET_Connect (char *host);
// called by client to connect to a host. Returns -1 if not able to
+void NET_Heartbeat (int priority);
+// Send an heartbeat to the master server(s). priority: 0 = lowest, 1 = state change, 2 = force
+
qboolean NET_CanSendMessage (qsocket_t *sock);
// Returns true or false if the given qsocket can currently accept a
// message to be transmitted.
void SchedulePollProcedure(PollProcedure *pp, double timeOffset);
-extern qboolean serialAvailable;
extern qboolean ipxAvailable;
extern qboolean tcpipAvailable;
extern char my_ipx_address[NET_NAMELEN];
extern char my_tcpip_address[NET_NAMELEN];
-extern void (*GetComPortConfig) (int portNumber, int *port, int *irq, int *baud, qboolean *useModem);
-extern void (*SetComPortConfig) (int portNumber, int port, int irq, int baud, qboolean useModem);
-extern void (*GetModemConfig) (int portNumber, char *dialType, char *clear, char *init, char *hangup);
-extern void (*SetModemConfig) (int portNumber, char *dialType, char *clear, char *init, char *hangup);
extern qboolean slistInProgress;
extern qboolean slistSilent;
extern qboolean slistLocal;
void NET_Slist_f (void);
+void NET_InetSlist_f (void);
+
+#endif
+