FTEQW
Documentation of the FTE engine source tree.
cl_master.h
Go to the documentation of this file.
1#ifndef CL_MASTER_H
2#define CL_MASTER_H
3
5{
8#if defined(Q2CLIENT) || defined(Q2SERVER)
10#endif
11#if defined(Q3CLIENT) || defined(Q3SERVER)
13#endif
14#ifdef NQPROT
16#endif
18};
19
20#if defined(CL_MASTER) && defined(HAVE_CLIENT)
21#define SS_PROTOCOLMASK 0xf
22#define SS_UNKNOWN 0
23#define SS_QUAKEWORLD 1
24#define SS_NETQUAKE 2
25#define SS_QUAKE2 3
26#define SS_QUAKE3 4
27#define SS_QEPROT 5 //needs dtls and a different ccreq version
28//#define SS_UNUSED 6
29//#define SS_UNUSED 7
30
31#define SS_LOCAL (1<<3u) //local servers are ones we detected without being listed on a master server (masters will report public ips, so these may appear as dupes if they're also public)
32#define SS_FTESERVER (1<<4u) //just highlighting differences, to give some impression of superiority.
33#define SS_FAVORITE (1<<5u) //filter all others.
34#define SS_KEEPINFO (1<<6u)
35#define SS_GETINFO (1<<7u) //explicitly query via getinfo
36#define SS_PROXY (1<<8u) //qizmo/qwfwd/qtv/eztv
37
38#define PING_DEAD 0xffff //default ping value to denote servers that are not responding.
39#define PING_UNKNOWN 0xfffe //these servers are considered up, but we can't query them directly so can't determine the final ping from here.
40#define PING_MAX 0xfffd //highest 'valid' ping value.
41
42
43//despite not supporting nq or q2, we still load them. We just filter them. This is to make sure we properly write the listing files.
45{
46 MT_BAD, //this would be an error
47// MT_MASTERHTTPJSON,
52};
53
54
55typedef enum hostcachekey_e
56{
64
70
73 SLKEY_NUMBOTS, //uninteresting bots that will presumably get kicked if people join.
75 SLKEY_NUMHUMANS, //actual players
77 SLKEY_CATEGORY, //urgh, hideous shite.
78// SLKEY_PLAYERS, //eep!
83
84
87 SLKEY_CUSTOM = SLKEY_PLAYER0+MAX_CLIENTS
89
90typedef enum slist_test_e
91{
103
104
105//contains info about a server in greater detail. Could be too mem intensive.
107{
108 char info[MAX_SERVERINFO_STRING];
109
111
113 {
115 int frags;
116 float time;
117 int ping;
118 char name[64];
119 char skin[16]; //is this even useful?
120 char team[16];
121 char topc;
122 char botc;
124 } players[MAX_CLIENTS];
126
127//hold minimum info.
128typedef struct serverinfo_s
129{
130 char name[80]; //hostname.
132 char brokerid[64]; //'rtc[s]://adr//brokerid'
133
134 short special; //flags
135 short protocol;
136
141#define SRVSTATUS_ALIVE 1u //server is responding to pings
142#define SRVSTATUS_DISPLAYED 2u //server passed all filters
143#define SRVSTATUS_GLOBAL 4u //server was reported by one of the master servers (ie: global and not local)
144
149
150 int qccategory; //urgh
151
152 char qcstatus[128];
153 char modname[8+1];
154
155 char gamedir[8+1];
156 char map[16];
157
158// unsigned short gameversion;
159 unsigned short ping;
160
161 short tl;
162 short fl;
163
165
167
169 unsigned short cost;
170 unsigned short numpeers;
171 struct peers_s
172 {
174 unsigned short ping;
176
179
180typedef struct master_s
181{
182 struct master_s *next;
184 char *address; //text based address (http servers)
189 int sends; /*needs to resend?*/
190 char name[1];
192
193extern struct selectedserver_s
194{
197 char brokerid[64];
200 char lastrule[64];
201
203
206
207typedef struct player_s
208{
209 char name[16];
210 int frags;
212 char skin[8];
213 char team[8];
215
216 struct player_s *next;
218
219void SListOptionChanged(serverinfo_t *newserver);
220
222extern master_t *master;
223extern player_t *mplayers;
225
226void Master_SetupSockets(void);
228void Master_CheckPollSockets(void);
229void MasterInfo_Shutdown(void);
230void MasterInfo_WriteServers(void);
231serverinfo_t *Master_InfoForServer (netadr_t *addr, const char *brokerid);
233unsigned int Master_TotalCount(void);
234unsigned int Master_NumPolled(void); //progress indicator
235unsigned int Master_NumAlive(void);
236void Master_SetupSockets(void);
237void MasterInfo_Refresh(qboolean doreset);
238void Master_QueryServer(serverinfo_t *server);
239void MasterInfo_WriteServers(void);
240char *Master_ServerToString (char *s, int len, serverinfo_t *a); //like NET_AdrToString, but handles more complex addresses.
241
242hostcachekey_t Master_KeyForName(const char *keyname);
243float Master_ReadKeyFloat(serverinfo_t *server, unsigned int keynum);
244char *Master_ReadKeyString(serverinfo_t *server, unsigned int keynum);
245
246int Master_SortServers(void);
247void Master_SetSortField(hostcachekey_t field, unsigned int sortflags);
250
251int Master_NumSorted(void);
252void Master_ClearMasks(void);
254void Master_SetMaskString(qboolean or_, hostcachekey_t field, const char *param, slist_test_t testop);
257#endif
258
259
260
261#endif
qboolean
Definition: api_menu.h:34
float Master_ReadKeyFloat(serverinfo_t *server, unsigned int keynum)
Definition: net_master.c:1412
void MasterInfo_WriteServers(void)
Definition: net_master.c:2927
serverinfo_t * Master_InfoForNum(int num)
Definition: net_master.c:981
qboolean CL_QueryServers(void)
Definition: net_master.c:3755
char * Master_ServerToString(char *s, int len, serverinfo_t *a)
Definition: net_master.c:1081
void SListOptionChanged(serverinfo_t *newserver)
Definition: net_master.c:2501
void Master_SetMaskString(qboolean or_, hostcachekey_t field, const char *param, slist_test_t testop)
Definition: net_master.c:1281
serverinfo_t * Master_SortedServer(int idx)
Definition: net_master.c:1394
unsigned int Master_TotalCount(void)
Definition: net_master.c:930
slist_test_e
Definition: cl_master.h:91
@ SLIST_TEST_NOTSTARTSWITH
Definition: cl_master.h:101
@ SLIST_TEST_LESS
Definition: cl_master.h:95
@ SLIST_TEST_STARTSWITH
Definition: cl_master.h:100
@ SLIST_TEST_LESSEQUAL
Definition: cl_master.h:94
@ SLIST_TEST_GREATER
Definition: cl_master.h:97
@ SLIST_TEST_NOTEQUAL
Definition: cl_master.h:99
@ SLIST_TEST_EQUAL
Definition: cl_master.h:96
@ SLIST_TEST_GREATEREQUAL
Definition: cl_master.h:98
@ SLIST_TEST_NOTCONTAIN
Definition: cl_master.h:93
@ SLIST_TEST_CONTAINS
Definition: cl_master.h:92
void Master_QueryServer(serverinfo_t *server)
Definition: net_master.c:3047
qboolean Master_GetSortDescending(void)
Definition: net_master.c:1314
serverinfo_t * Master_InfoForServer(netadr_t *addr, const char *brokerid)
Definition: net_master.c:968
hostcachekey_e
Definition: cl_master.h:56
@ SLKEY_PLAYER0
Definition: cl_master.h:86
@ SLKEY_SERVERINFO
Definition: cl_master.h:82
@ SLKEY_NUMSPECTATORS
Definition: cl_master.h:74
@ SLKEY_NUMPLAYERS
Definition: cl_master.h:61
@ SLKEY_MAXPLAYERS
Definition: cl_master.h:62
@ SLKEY_CATEGORY
Definition: cl_master.h:77
@ SLKEY_QCSTATUS
Definition: cl_master.h:76
@ SLKEY_GAMEDIR
Definition: cl_master.h:63
@ SLKEY_TOOMANY
Definition: cl_master.h:85
@ SLKEY_CUSTOM
Definition: cl_master.h:87
@ SLKEY_NAME
Definition: cl_master.h:59
@ SLKEY_NUMBOTS
Definition: cl_master.h:73
@ SLKEY_PROTOCOL
Definition: cl_master.h:72
@ SLKEY_TIMELIMIT
Definition: cl_master.h:68
@ SLKEY_MOD
Definition: cl_master.h:71
@ SLKEY_FRAGLIMIT
Definition: cl_master.h:69
@ SLKEY_ADDRESS
Definition: cl_master.h:60
@ SLKEY_ISFAVORITE
Definition: cl_master.h:79
@ SLKEY_BASEGAME
Definition: cl_master.h:66
@ SLKEY_ISLOCAL
Definition: cl_master.h:80
@ SLKEY_MAP
Definition: cl_master.h:58
@ SLKEY_PING
Definition: cl_master.h:57
@ SLKEY_FLAGS
Definition: cl_master.h:67
@ SLKEY_NUMHUMANS
Definition: cl_master.h:75
@ SLKEY_ISPROXY
Definition: cl_master.h:81
@ SLKEY_FREEPLAYERS
Definition: cl_master.h:65
char * Master_ReadKeyString(serverinfo_t *server, unsigned int keynum)
Definition: net_master.c:1474
void MasterInfo_Refresh(qboolean doreset)
Definition: net_master.c:2970
masterprotocol_e
Definition: cl_master.h:5
@ MP_QUAKE3
Definition: cl_master.h:12
@ MP_DPMASTER
Definition: cl_master.h:17
@ MP_QUAKEWORLD
Definition: cl_master.h:7
@ MP_NETQUAKE
Definition: cl_master.h:15
@ MP_UNSPECIFIED
Definition: cl_master.h:6
@ MP_QUAKE2
Definition: cl_master.h:9
qboolean sb_favouriteschanged
Definition: net_master.c:12
player_t * mplayers
Definition: net_master.c:840
int Master_NumSorted(void)
Definition: net_master.c:1406
int Master_SortServers(void)
Definition: net_master.c:1369
struct serverinfo_s serverinfo_t
struct master_s master_t
serverinfo_t * Master_FindRoute(netadr_t target)
Definition: net_master.c:1631
enum hostcachekey_e hostcachekey_t
struct serverdetailedinfo_s serverdetailedinfo_t
master_t * master
Definition: net_master.c:839
hostcachekey_t Master_KeyForName(const char *keyname)
Definition: net_master.c:1547
mastertype_e
Definition: cl_master.h:45
@ MT_BAD
Definition: cl_master.h:46
@ MT_SINGLE
Definition: cl_master.h:51
@ MT_MASTERHTTP
Definition: cl_master.h:48
@ MT_MASTERUDP
Definition: cl_master.h:49
@ MT_BCAST
Definition: cl_master.h:50
void MasterInfo_Shutdown(void)
Definition: net_master.c:1902
hostcachekey_t Master_GetSortField(void)
Definition: net_master.c:1310
unsigned int Master_NumAlive(void)
Definition: net_master.c:954
void Master_ClearMasks(void)
Definition: net_master.c:1276
serverinfo_t * firstserver
Definition: net_master.c:841
void Master_CheckPollSockets(void)
Definition: net_master.c:2228
void Master_SetSortField(hostcachekey_t field, unsigned int sortflags)
Definition: net_master.c:1303
struct selectedserver_s selectedserver
void Master_SetMaskInteger(qboolean or_, hostcachekey_t field, int param, slist_test_t testop)
Definition: net_master.c:1292
unsigned int Master_NumPolled(void)
Definition: net_master.c:942
void Master_SetupSockets(void)
Definition: net_master.c:921
struct player_s player_t
enum slist_test_e slist_test_t
int num
Definition: com_phys_ode.c:314
unsigned char qbyte
Definition: common.h:127
s
Definition: execloop.h:53
GLuint GLcharARB * name
Definition: glquake.h:155
GLenum GLsizei len
Definition: glsupp.h:502
int idx
Definition: pr_lua.c:221
qcc_targetformat_t target
Definition: qcc_pr_comp.c:1706
static AL_API ALenum param
Definition: snd_al.c:132
Definition: iweb.h:86
Definition: cl_master.h:181
int sends
Definition: cl_master.h:189
struct dl_download * dl
Definition: cl_master.h:185
qbyte protocoltype
Definition: cl_master.h:188
qbyte mastertype
Definition: cl_master.h:187
char * address
Definition: cl_master.h:184
netadr_t adr
Definition: cl_master.h:183
qbyte nosave
Definition: cl_master.h:186
struct master_s * next
Definition: cl_master.h:182
Definition: net.h:71
Definition: cl_master.h:208
char team[8]
Definition: cl_master.h:213
netadr_t adr
Definition: cl_master.h:214
int colour
Definition: cl_master.h:211
struct player_s * next
Definition: cl_master.h:216
char skin[8]
Definition: cl_master.h:212
int frags
Definition: cl_master.h:210
Definition: cl_master.h:194
qboolean inuse
Definition: cl_master.h:195
netadr_t adr
Definition: cl_master.h:196
float refreshtime
Definition: cl_master.h:198
int linenum
Definition: cl_master.h:204
int lastplayer
Definition: cl_master.h:199
char brokerid[64]
Definition: cl_master.h:197
serverdetailedinfo_t * detail
Definition: cl_master.h:202
char lastrule[64]
Definition: cl_master.h:200
char skin[16]
Definition: cl_master.h:119
float time
Definition: cl_master.h:116
char topc
Definition: cl_master.h:121
char botc
Definition: cl_master.h:122
char team[16]
Definition: cl_master.h:120
qbyte isspec
Definition: cl_master.h:123
Definition: cl_master.h:107
char info[MAX_SERVERINFO_STRING]
Definition: cl_master.h:108
int numplayers
Definition: cl_master.h:110
struct serverdetailedinfo_s::serverdetailedplayerinfo_s players[MAX_CLIENTS]
Definition: cl_master.h:172
unsigned short ping
Definition: cl_master.h:174
struct serverinfo_s * peer
Definition: cl_master.h:173
Definition: cl_master.h:129
qbyte status
Definition: cl_master.h:140
int qccategory
Definition: cl_master.h:150
qbyte maxplayers
Definition: cl_master.h:138
unsigned short numpeers
Definition: cl_master.h:170
char gamedir[8+1]
Definition: cl_master.h:155
qbyte sends
Definition: cl_master.h:139
short tl
Definition: cl_master.h:161
serverdetailedinfo_t * moreinfo
Definition: cl_master.h:166
struct serverinfo_s * next
Definition: cl_master.h:177
struct serverinfo_s * prevpeer
Definition: cl_master.h:168
char map[16]
Definition: cl_master.h:156
qbyte numbots
Definition: cl_master.h:147
char brokerid[64]
Definition: cl_master.h:132
short protocol
Definition: cl_master.h:135
unsigned short cost
Definition: cl_master.h:169
float refreshtime
Definition: cl_master.h:164
qbyte players
Definition: cl_master.h:137
short special
Definition: cl_master.h:134
char modname[8+1]
Definition: cl_master.h:153
char qcstatus[128]
Definition: cl_master.h:152
netadr_t adr
Definition: cl_master.h:131
short fl
Definition: cl_master.h:162
unsigned short ping
Definition: cl_master.h:159
qbyte freeslots
Definition: cl_master.h:148
qbyte numspectators
Definition: cl_master.h:145
qbyte numhumans
Definition: cl_master.h:146
struct serverinfo_s::peers_s * peers
netadr_t a
Definition: sv_master.c:141