1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
/*
* PARSEC HEADER: net_glob.h
*/
#ifndef _NET_GLOB_H_
#define _NET_GLOB_H_
// ----------------------------------------------------------------------------
// NETWORKING SUBSYSTEM (NET) related global declarations and definitions -
// ----------------------------------------------------------------------------
// forward declarations -------------------------------------------------------
//
struct node_t;
struct RE_Header;
struct RE_KillStats;
struct NetPacket;
struct NetPacketExternal;
struct ShipRemInfo;
class NET_Stream;
extern int LocalPlayerId;
extern char LocalPlayerName[];
extern int NetAvailable;
extern int NetworkGameMask;
extern int NetConnected;
extern int NetJoined;
extern int EntryMode;
extern int ShipDowned;
extern int Packet_Send_Frametime;
extern int Packet_Send_Frequency;
extern int Packet_Recv_Rate;
extern int HaveFullPlayerState; // indicates whether we have received a full playerstate from the server
extern refframe_t ServerTimeoutFrames; // # of refframes the server times out
extern int NetInterfaceSelect;
extern char* CurServerToResolve;
extern int CurServerID;
extern char* CurServerName;
extern int CurServerPing;
extern node_t* CurJumpServerNode;
extern int CurMaxPlayers;
extern int CurMaxDataLength;
extern int CurKillUpdate;
extern int CurKiller;
extern int MyUniverse;
extern int NumRemPlayers;
extern int CurSendMessageId_PEER;
extern int CurGameTime;
extern int ServerPingTime;
extern int RE_List_Avail;
extern char* RE_List_CurPos;
extern int Player_Status[];
extern GenObject* Player_Ship[];
extern int Player_ShipId[];
extern int Player_AliveCounter[];
extern int Player_UpToDate[];
extern int Player_KillStat[];
extern int Player_LastMsgId[];
extern int Player_LastUpdateGameStateMsgId[];
extern char Player_Name[][ MAX_PLAYER_NAME + 1 ];
extern char* Masters[];
// NETWORKING subsystem jump table for dynamic function binding ---------------
//
struct net_subsys_jtab_s {
// PROTOCOL API
int (* Connect ) ();
int (* Disconnect ) ();
int (* Join ) ();
int (* Unjoin ) ( byte flag );
int (* UpdateName ) ();
void (* MaintainNet ) ();
// PROTOCOL API - GAME
size_t (* RmEvList_GetMaxSize) ();
void (* UpdateKillStats) ( RE_KillStats* killstats );
// PROTOCOL API - PACKET HANDLING
size_t (* HandleOutPacket) ( const NetPacket* int_gamepacket, NetPacketExternal* ext_gamepacket );
size_t (* HandleOutPacket_DEMO ) ( const NetPacket* int_gamepacket, NetPacketExternal* ext_gamepacket );
int (* HandleInPacket) ( const NetPacketExternal* ext_gamepacket, const int ext_pktsize, NetPacket* int_gamepacket );
int (* HandleInPacket_DEMO ) ( const NetPacketExternal* ext_gamepacket, NetPacket* int_gamepacket, size_t* psize_external );
void (* StdGameHeader) ( byte command, NetPacket* gampacket );
size_t (* NetPacketExternal_DEMO_GetSize ) ( const NetPacketExternal* ext_gamepacket );
void (* WritePacketInfo ) ( FILE *fp, NetPacketExternal* ext_gamepacket );
// PACKET API
int (* CompareNodes )( node_t *node1, node_t *node2 );
int (* VirtualNode )( node_t *node );
void (* SetVirtualAddress )( node_t *node );
void (* SetBroadcastAddress )( node_t *node );
void (* ResolveNode )( node_t* node_dst, node_t* node_src );
void (* MakeNodeRaw )( node_t* node_dst, node_t* node_src );
node_t* (* GetSender )( int bufid );
void (* ResolveSender )( node_t *node, int bufid );
void (* PrintNode )( node_t *node );
void (* ProcessPacketChain ) ( void (*procfunc)( NetPacket* gamepacket, int bufid ) );
void (* FlushListenBuffers )();
int (* InsertVirtualPacket )( NetPacket* gamepacket );
int (* DeterminePacketLoss )( char **info, int *isiz, int incoming );
int (* SleepUntilInput) ( int timeout_msec );
void (* SendPacket ) ( NetPacket *gamepacket, node_t *node );
void (* AuxSendPacket ) ( NetPacket *gamepacket, node_t *node );
int (* ResetAPI )();
int (* InitAPI )();
int (* KillAPI )();
};
// exported by NET_GLOB.C -----------------------------------------------------
//
extern net_subsys_jtab_s net_subsys_jtab;
// exported by NET_UDP.C ------------------------------------------------------
//
extern NET_Stream ServerStream;
#endif // _NET_GLOB_H_
|