DDraceNetwork Documentation
Loading...
Searching...
No Matches
serverbrowser.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef ENGINE_CLIENT_SERVERBROWSER_H
4#define ENGINE_CLIENT_SERVERBROWSER_H
5
6#include <base/hash.h>
7#include <base/system.h>
8
9#include <engine/console.h>
12
13#include <functional>
14#include <map>
15#include <set>
16
17typedef struct _json_value json_value;
18class CNetClient;
19class IConfigManager;
20class IConsole;
21class IEngine;
22class IFavorites;
23class IFriends;
26class IStorage;
27class IHttp;
28
30{
32
33public:
35 {
37 }
38
39 const char *Id() const { return m_aId; }
40
41 bool operator==(const CCommunityId &Other) const
42 {
43 return str_comp(Id(), Other.Id()) == 0;
44 }
45
46 bool operator<(const CCommunityId &Other) const
47 {
48 return str_comp(Id(), Other.Id()) < 0;
49 }
50};
51
52template<>
53struct std::hash<CCommunityId>
54{
55 size_t operator()(const CCommunityId &Elem) const noexcept
56 {
57 return str_quickhash(Elem.Id());
58 }
59};
60
62{
64
65public:
70
71 const char *Name() const { return m_aName; }
72
74 {
75 return str_comp(Name(), Other.Name()) == 0;
76 }
77
79 {
80 return str_comp(Name(), Other.Name()) < 0;
81 }
82};
83
84template<>
85struct std::hash<CCommunityCountryName>
86{
87 size_t operator()(const CCommunityCountryName &Elem) const noexcept
88 {
89 return str_quickhash(Elem.Name());
90 }
91};
92
94{
96
97public:
99 {
101 }
102
103 const char *Name() const { return m_aName; }
104
106 {
107 return str_comp(Name(), Other.Name()) == 0;
108 }
109
111 {
112 return str_comp(Name(), Other.Name()) < 0;
113 }
114};
115
116template<>
117struct std::hash<CCommunityTypeName>
118{
119 size_t operator()(const CCommunityTypeName &Elem) const noexcept
120 {
121 return str_quickhash(Elem.Name());
122 }
123};
124
143
145{
146public:
147 void Add(const char *pCommunityId) override;
148 void Remove(const char *pCommunityId) override;
149 void Clear() override;
150 bool Filtered(const char *pCommunityId) const override;
151 bool Empty() const override;
152 void Clean(const std::vector<CCommunity> &vAllowedCommunities);
154 const std::vector<CCommunityId> &Entries() const;
155
156private:
157 std::vector<CCommunityId> m_vEntries;
158};
159
161{
162public:
163 void Add(const char *pCommunityId) override;
164 void Remove(const char *pCommunityId) override;
165 void Clear() override;
166 bool Filtered(const char *pCommunityId) const override;
167 bool Empty() const override;
168 void Clean(const std::vector<CCommunity> &vAllowedCommunities);
170
171private:
172 std::set<CCommunityId> m_Entries;
173};
174
176{
177public:
182
183 void Add(const char *pCountryName) override;
184 void Add(const char *pCommunityId, const char *pCountryName);
185 void Remove(const char *pCountryName) override;
186 void Remove(const char *pCommunityId, const char *pCountryName);
187 void Clear() override;
188 bool Filtered(const char *pCountryName) const override;
189 bool Empty() const override;
190 void Clean(const std::vector<CCommunity> &vAllowedCommunities);
192
193private:
195 std::map<CCommunityId, std::set<CCommunityCountryName>> m_Entries;
196};
197
199{
200public:
205
206 void Add(const char *pTypeName) override;
207 void Add(const char *pCommunityId, const char *pTypeName);
208 void Remove(const char *pTypeName) override;
209 void Remove(const char *pCommunityId, const char *pTypeName);
210 void Clear() override;
211 bool Filtered(const char *pTypeName) const override;
212 bool Empty() const override;
213 void Clean(const std::vector<CCommunity> &vAllowedCommunities);
215
216private:
218 std::map<CCommunityId, std::set<CCommunityTypeName>> m_Entries;
219};
220
222{
225 int m_LastType = IServerBrowser::NUM_TYPES; // initial value does not appear normally, marking uninitialized cache
227 std::vector<const CCommunity *> m_vpSelectedCommunities;
228 std::vector<const CCommunityCountry *> m_vpSelectableCountries;
229 std::vector<const CCommunityType *> m_vpSelectableTypes;
233
234public:
239
240 void Update(bool Force) override;
241 const std::vector<const CCommunity *> &SelectedCommunities() const override { return m_vpSelectedCommunities; }
242 const std::vector<const CCommunityCountry *> &SelectableCountries() const override { return m_vpSelectableCountries; }
243 const std::vector<const CCommunityType *> &SelectableTypes() const override { return m_vpSelectableTypes; }
244 bool AnyRanksAvailable() const override { return m_AnyRanksAvailable; }
246 const char *CountryTypeFilterKey() const override { return m_pCountryTypeFilterKey; }
247};
248
250{
251public:
253 virtual ~CServerBrowser();
254
255 // interface functions
256 void Refresh(int Type, bool Force = false) override;
257 bool IsRefreshing() const override;
258 bool IsGettingServerlist() const override;
259 bool IsServerlistError() const override;
260 int LoadingProgression() const override;
261 void RequestResort() { m_NeedResort = true; }
262
263 int NumServers() const override { return m_NumServers; }
264 int Players(const CServerInfo &Item) const override;
265 int Max(const CServerInfo &Item) const override;
266 int NumSortedServers() const override { return m_NumSortedServers; }
267 int NumSortedPlayers() const override { return m_NumSortedPlayers; }
268 const CServerInfo *SortedGet(int Index) const override;
269
270 const json_value *LoadDDNetInfo();
271 void LoadDDNetInfoJson();
272 void LoadDDNetLocation();
273 void LoadDDNetServers();
278 const char *GetTutorialServer() override;
279
280 const std::vector<CCommunity> &Communities() const override;
281 const CCommunity *Community(const char *pCommunityId) const override;
282 std::vector<const CCommunity *> SelectedCommunities() const override;
283 std::vector<const CCommunity *> FavoriteCommunities() const override;
284 std::vector<const CCommunity *> CurrentCommunities() const override;
285 unsigned CurrentCommunitiesHash() const override;
286
287 bool DDNetInfoAvailable() const override { return m_pDDNetInfo != nullptr; }
289
291 const ICommunityCache &CommunityCache() const override { return m_CommunityCache; }
300 void CleanFilters() override;
301
302 //
303 void Update();
304 void OnServerInfoUpdate(const NETADDR &Addr, int Token, const CServerInfo *pInfo);
306 void RequestCurrentServer(const NETADDR &Addr) const;
307 void RequestCurrentServerWithRandomToken(const NETADDR &Addr, int *pBasicToken, int *pToken) const;
308 void SetCurrentServerPing(const NETADDR &Addr, int Ping);
309
310 void SetBaseInfo(class CNetClient *pClient, const char *pNetVersion);
311 void OnInit();
312
314 CServerEntry *Find(const NETADDR &Addr) override;
315 int GetCurrentType() override { return m_ServerlistType; }
316 bool IsRegistered(const NETADDR &Addr);
317
318private:
322 IEngine *m_pEngine = nullptr;
327 char m_aNetVersion[128];
328
329 bool m_RefreshingHttp = false;
332 const char *m_pHttpPrevBestUrl = nullptr;
333
337 std::unordered_map<NETADDR, int> m_ByAddr;
338
339 std::vector<CCommunity> m_vCommunities;
340 std::unordered_map<NETADDR, CCommunityServer> m_CommunityServersByAddr;
341
343
349
352
356
359
360 // used instead of g_Config.br_max_requests to get more servers
362
368
371 unsigned char m_aTokenSeed[16];
372
373 int GenerateToken(const NETADDR &Addr) const;
374 static int GetBasicToken(int Token);
375 static int GetExtraToken(int Token);
376
377 // sorting criteria
378 bool SortCompareName(int Index1, int Index2) const;
379 bool SortCompareMap(int Index1, int Index2) const;
380 bool SortComparePing(int Index1, int Index2) const;
381 bool SortCompareGametype(int Index1, int Index2) const;
382 bool SortCompareNumPlayers(int Index1, int Index2) const;
383 bool SortCompareNumClients(int Index1, int Index2) const;
384 bool SortCompareNumFriends(int Index1, int Index2) const;
385 bool SortCompareNumPlayersAndPing(int Index1, int Index2) const;
386
387 //
388 void Filter();
389 void Sort();
390 int SortHash() const;
391
392 void CleanUp();
393
394 void UpdateFromHttp();
395 CServerEntry *Add(const NETADDR *pAddrs, int NumAddrs);
397
399
400 void RequestImpl(const NETADDR &Addr, CServerEntry *pEntry, int *pBasicToken, int *pToken, bool RandomToken) const;
401
402 void RegisterCommands();
413
414 bool ValidateCommunityId(const char *pCommunityId) const;
415 bool ValidateCountryName(const char *pCountryName) const;
416 bool ValidateTypeName(const char *pTypeName) const;
417
418 void SetInfo(CServerEntry *pEntry, const CServerInfo &Info) const;
419 void SetLatency(NETADDR Addr, int Latency);
420
422 static bool ParseCommunityServers(CCommunity *pCommunity, const json_value &Servers);
423};
424
425#endif
const SHA256_DIGEST SHA256_ZEROED
Definition hash.cpp:6
Definition serverbrowser.h:222
const char * CountryTypeFilterKey() const override
Definition serverbrowser.h:246
const std::vector< const CCommunity * > & SelectedCommunities() const override
Definition serverbrowser.h:241
int m_LastType
Definition serverbrowser.h:225
void Update(bool Force) override
Definition serverbrowser.cpp:1812
const std::vector< const CCommunityType * > & SelectableTypes() const override
Definition serverbrowser.h:243
std::vector< const CCommunityCountry * > m_vpSelectableCountries
Definition serverbrowser.h:228
CCommunityCache(IServerBrowser *pServerBrowser)
Definition serverbrowser.h:235
unsigned m_SelectedCommunitiesHash
Definition serverbrowser.h:226
std::vector< const CCommunity * > m_vpSelectedCommunities
Definition serverbrowser.h:227
IServerBrowser * m_pServerBrowser
Definition serverbrowser.h:223
bool CountriesTypesFilterAvailable() const override
Definition serverbrowser.h:245
bool m_AnyRanksAvailable
Definition serverbrowser.h:230
SHA256_DIGEST m_InfoSha256
Definition serverbrowser.h:224
const char * m_pCountryTypeFilterKey
Definition serverbrowser.h:232
bool m_CountryTypesFilterAvailable
Definition serverbrowser.h:231
const std::vector< const CCommunityCountry * > & SelectableCountries() const override
Definition serverbrowser.h:242
bool AnyRanksAvailable() const override
Definition serverbrowser.h:244
std::vector< const CCommunityType * > m_vpSelectableTypes
Definition serverbrowser.h:229
Definition serverbrowser.h:62
char m_aName[CServerInfo::MAX_COMMUNITY_COUNTRY_LENGTH]
Definition serverbrowser.h:63
const char * Name() const
Definition serverbrowser.h:71
CCommunityCountryName(const char *pCountryName)
Definition serverbrowser.h:66
bool operator<(const CCommunityCountryName &Other) const
Definition serverbrowser.h:78
bool operator==(const CCommunityCountryName &Other) const
Definition serverbrowser.h:73
Definition serverbrowser.h:30
CCommunityId(const char *pCommunityId)
Definition serverbrowser.h:34
char m_aId[CServerInfo::MAX_COMMUNITY_ID_LENGTH]
Definition serverbrowser.h:31
const char * Id() const
Definition serverbrowser.h:39
bool operator<(const CCommunityId &Other) const
Definition serverbrowser.h:46
bool operator==(const CCommunityId &Other) const
Definition serverbrowser.h:41
Definition serverbrowser.h:126
char m_aTypeName[CServerInfo::MAX_COMMUNITY_TYPE_LENGTH]
Definition serverbrowser.h:129
CCommunityServer(const char *pCommunityId, const char *pCountryName, const char *pTypeName)
Definition serverbrowser.h:132
const char * TypeName() const
Definition serverbrowser.h:141
char m_aCommunityId[CServerInfo::MAX_COMMUNITY_ID_LENGTH]
Definition serverbrowser.h:127
char m_aCountryName[CServerInfo::MAX_COMMUNITY_COUNTRY_LENGTH]
Definition serverbrowser.h:128
const char * CommunityId() const
Definition serverbrowser.h:139
const char * CountryName() const
Definition serverbrowser.h:140
Definition serverbrowser.h:94
bool operator<(const CCommunityTypeName &Other) const
Definition serverbrowser.h:110
const char * Name() const
Definition serverbrowser.h:103
bool operator==(const CCommunityTypeName &Other) const
Definition serverbrowser.h:105
char m_aName[CServerInfo::MAX_COMMUNITY_TYPE_LENGTH]
Definition serverbrowser.h:95
CCommunityTypeName(const char *pTypeName)
Definition serverbrowser.h:98
Definition serverbrowser.h:211
Definition serverbrowser.h:176
void Save(IConfigManager *pConfigManager) const
Definition serverbrowser.cpp:2162
CExcludedCommunityCountryFilterList(const ICommunityCache *pCommunityCache)
Definition serverbrowser.h:178
bool Empty() const override
Definition serverbrowser.cpp:2080
void Add(const char *pCountryName) override
Definition serverbrowser.cpp:2021
void Clean(const std::vector< CCommunity > &vAllowedCommunities)
Definition serverbrowser.cpp:2088
std::map< CCommunityId, std::set< CCommunityCountryName > > m_Entries
Definition serverbrowser.h:195
bool Filtered(const char *pCountryName) const override
Definition serverbrowser.cpp:2070
void Remove(const char *pCountryName) override
Definition serverbrowser.cpp:2047
void Clear() override
Definition serverbrowser.cpp:2061
const ICommunityCache * m_pCommunityCache
Definition serverbrowser.h:194
Definition serverbrowser.h:161
bool Empty() const override
Definition serverbrowser.cpp:1981
void Save(IConfigManager *pConfigManager) const
Definition serverbrowser.cpp:2009
void Clean(const std::vector< CCommunity > &vAllowedCommunities)
Definition serverbrowser.cpp:1986
void Clear() override
Definition serverbrowser.cpp:1971
void Add(const char *pCommunityId) override
Definition serverbrowser.cpp:1961
bool Filtered(const char *pCommunityId) const override
Definition serverbrowser.cpp:1976
std::set< CCommunityId > m_Entries
Definition serverbrowser.h:172
void Remove(const char *pCommunityId) override
Definition serverbrowser.cpp:1966
Definition serverbrowser.h:199
void Clear() override
Definition serverbrowser.cpp:2219
void Add(const char *pTypeName) override
Definition serverbrowser.cpp:2179
void Clean(const std::vector< CCommunity > &vAllowedCommunities)
Definition serverbrowser.cpp:2246
bool Filtered(const char *pTypeName) const override
Definition serverbrowser.cpp:2228
void Save(IConfigManager *pConfigManager) const
Definition serverbrowser.cpp:2320
std::map< CCommunityId, std::set< CCommunityTypeName > > m_Entries
Definition serverbrowser.h:218
bool Empty() const override
Definition serverbrowser.cpp:2238
void Remove(const char *pTypeName) override
Definition serverbrowser.cpp:2205
const ICommunityCache * m_pCommunityCache
Definition serverbrowser.h:217
CExcludedCommunityTypeFilterList(const ICommunityCache *pCommunityCache)
Definition serverbrowser.h:201
Definition serverbrowser.h:145
void Remove(const char *pCommunityId) override
Definition serverbrowser.cpp:1902
bool Filtered(const char *pCommunityId) const override
Definition serverbrowser.cpp:1916
bool Empty() const override
Definition serverbrowser.cpp:1921
void Clear() override
Definition serverbrowser.cpp:1911
void Clean(const std::vector< CCommunity > &vAllowedCommunities)
Definition serverbrowser.cpp:1926
void Add(const char *pCommunityId) override
Definition serverbrowser.cpp:1884
const std::vector< CCommunityId > & Entries() const
Definition serverbrowser.cpp:1948
std::vector< CCommunityId > m_vEntries
Definition serverbrowser.h:157
void Save(IConfigManager *pConfigManager) const
Definition serverbrowser.cpp:1936
Definition memheap.h:11
Definition network.h:563
Definition serverbrowser.h:250
int NumServers() const override
Definition serverbrowser.h:263
CFavoriteCommunityFilterList & FavoriteCommunitiesFilter() override
Definition serverbrowser.h:292
static void Con_RemoveExcludedType(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:197
CExcludedCommunityFilterList & CommunitiesFilter() override
Definition serverbrowser.h:293
CExcludedCommunityCountryFilterList m_CountriesFilter
Definition serverbrowser.h:347
int64_t m_BroadcastTime
Definition serverbrowser.h:370
void OnServerInfoUpdate(const NETADDR &Addr, int Token, const CServerInfo *pInfo)
Definition serverbrowser.cpp:888
CServerEntry * ReplaceEntry(CServerEntry *pEntry, const NETADDR *pAddrs, int NumAddrs)
Definition serverbrowser.cpp:860
static bool ParseCommunityServers(CCommunity *pCommunity, const json_value &Servers)
Definition serverbrowser.cpp:1408
IFavorites * m_pFavorites
Definition serverbrowser.h:324
static void Con_RemoveFavoriteCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:140
void RemoveRequest(CServerEntry *pEntry)
Definition serverbrowser.cpp:644
bool IsGettingServerlist() const override
Definition serverbrowser.cpp:1698
int Players(const CServerInfo &Item) const override
Definition serverbrowser.cpp:310
CCommunityCache m_CommunityCache
Definition serverbrowser.h:344
static void ConfigSaveCallback(IConfigManager *pConfigManager, void *pUserData)
Definition serverbrowser.cpp:122
int m_ServerlistType
Definition serverbrowser.h:369
void RequestCurrentServer(const NETADDR &Addr) const
Definition serverbrowser.cpp:1123
bool SortCompareName(int Index1, int Index2) const
Definition serverbrowser.cpp:347
int LoadingProgression() const override
Definition serverbrowser.cpp:1708
void UpdateFromHttp()
Definition serverbrowser.cpp:1138
int GenerateToken(const NETADDR &Addr) const
Definition serverbrowser.cpp:327
SHA256_DIGEST DDNetInfoSha256() const override
Definition serverbrowser.h:288
static void Con_LeakIpAddress(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:207
const CExcludedCommunityTypeFilterList & TypesFilter() const override
Definition serverbrowser.h:299
void UpdateServerRank(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1659
void SetLatency(NETADDR Addr, int Latency)
Definition serverbrowser.cpp:780
void LoadDDNetServers()
Definition serverbrowser.cpp:1493
IConfigManager * m_pConfigManager
Definition serverbrowser.h:320
void UpdateServerFriends(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1628
const char * m_pHttpPrevBestUrl
Definition serverbrowser.h:332
int m_CurrentMaxRequests
Definition serverbrowser.h:361
bool IsRefreshing() const override
Definition serverbrowser.cpp:1693
int * m_pSortedServerlist
Definition serverbrowser.h:336
void LoadDDNetLocation()
Definition serverbrowser.cpp:1395
IServerBrowserPingCache * m_pPingCache
Definition serverbrowser.h:331
bool IsRegistered(const NETADDR &Addr)
Definition serverbrowser.cpp:2348
const CCommunity * Community(const char *pCommunityId) const override
Definition serverbrowser.cpp:1745
const ICommunityCache & CommunityCache() const override
Definition serverbrowser.h:291
void SetBaseInfo(class CNetClient *pClient, const char *pNetVersion)
Definition serverbrowser.cpp:87
bool IsServerlistError() const override
Definition serverbrowser.cpp:1703
const CServerInfo * SortedGet(int Index) const override
Definition serverbrowser.cpp:320
static bool ParseCommunityFinishes(CCommunity *pCommunity, const json_value &Finishes)
Definition serverbrowser.cpp:1478
void CleanUp()
Definition serverbrowser.cpp:1246
std::unordered_map< NETADDR, int > m_ByAddr
Definition serverbrowser.h:337
int m_NumRequests
Definition serverbrowser.h:355
CServerEntry * m_pFirstReqServer
Definition serverbrowser.h:353
std::vector< CCommunity > m_vCommunities
Definition serverbrowser.h:339
CServerEntry ** m_ppServerlist
Definition serverbrowser.h:335
unsigned CurrentCommunitiesHash() const override
Definition serverbrowser.cpp:1801
void UpdateServerCommunity(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1641
CFavoriteCommunityFilterList m_FavoriteCommunitiesFilter
Definition serverbrowser.h:345
IFriends * m_pFriends
Definition serverbrowser.h:323
void RegisterCommands()
Definition serverbrowser.cpp:108
CServerEntry * m_pLastReqServer
Definition serverbrowser.h:354
int m_NumSortedServers
Definition serverbrowser.h:363
void Filter()
Definition serverbrowser.cpp:415
int NumSortedPlayers() const override
Definition serverbrowser.h:267
bool SortComparePing(int Index1, int Index2) const
Definition serverbrowser.cpp:363
int NumSortedServers() const override
Definition serverbrowser.h:266
void SetInfo(CServerEntry *pEntry, const CServerInfo &Info) const
Definition serverbrowser.cpp:706
SHA256_DIGEST m_DDNetInfoSha256
Definition serverbrowser.h:351
CServerEntry * Add(const NETADDR *pAddrs, int NumAddrs)
Definition serverbrowser.cpp:816
IStorage * m_pStorage
Definition serverbrowser.h:325
const std::vector< CCommunity > & Communities() const override
Definition serverbrowser.cpp:1740
int m_NumSortedServersCapacity
Definition serverbrowser.h:364
CExcludedCommunityTypeFilterList m_TypesFilter
Definition serverbrowser.h:348
void RequestResort()
Definition serverbrowser.h:261
CExcludedCommunityCountryFilterList & CountriesFilter() override
Definition serverbrowser.h:294
bool SortCompareNumFriends(int Index1, int Index2) const
Definition serverbrowser.cpp:391
bool SortCompareMap(int Index1, int Index2) const
Definition serverbrowser.cpp:356
void RequestImpl(const NETADDR &Addr, CServerEntry *pEntry, int *pBasicToken, int *pToken, bool RandomToken) const
Definition serverbrowser.cpp:1053
std::unordered_map< NETADDR, CCommunityServer > m_CommunityServersByAddr
Definition serverbrowser.h:340
int SortHash() const
Definition serverbrowser.cpp:597
std::vector< const CCommunity * > CurrentCommunities() const override
Definition serverbrowser.cpp:1782
void RequestCurrentServerWithRandomToken(const NETADDR &Addr, int *pBasicToken, int *pToken) const
Definition serverbrowser.cpp:1128
int m_NumSortedPlayers
Definition serverbrowser.h:365
void Refresh(int Type, bool Force=false) override
Definition serverbrowser.cpp:983
bool SortCompareNumClients(int Index1, int Index2) const
Definition serverbrowser.cpp:384
static int GetBasicToken(int Token)
Definition serverbrowser.cpp:337
void QueueRequest(CServerEntry *pEntry)
Definition serverbrowser.cpp:674
void UpdateServerFilteredPlayers(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1615
void CleanFilters() override
Definition serverbrowser.cpp:2337
bool DDNetInfoAvailable() const override
Definition serverbrowser.h:287
virtual ~CServerBrowser()
Definition serverbrowser.cpp:75
int Max(const CServerInfo &Item) const override
Definition serverbrowser.cpp:315
IEngine * m_pEngine
Definition serverbrowser.h:322
std::vector< const CCommunity * > SelectedCommunities() const override
Definition serverbrowser.cpp:1753
static void Con_AddFavoriteCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:131
CNetClient * m_pNetClient
Definition serverbrowser.h:319
const json_value * LoadDDNetInfo()
Definition serverbrowser.cpp:1352
int m_NumServers
Definition serverbrowser.h:366
char m_aNetVersion[128]
Definition serverbrowser.h:327
static void Con_RemoveExcludedCountry(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:177
CExcludedCommunityTypeFilterList & TypesFilter() override
Definition serverbrowser.h:295
bool SortCompareNumPlayersAndPing(int Index1, int Index2) const
Definition serverbrowser.cpp:402
int m_NumServerCapacity
Definition serverbrowser.h:367
const CExcludedCommunityCountryFilterList & CountriesFilter() const override
Definition serverbrowser.h:298
const CFavoriteCommunityFilterList & FavoriteCommunitiesFilter() const override
Definition serverbrowser.h:296
IHttp * m_pHttpClient
Definition serverbrowser.h:326
json_value * m_pDDNetInfo
Definition serverbrowser.h:350
void SetHttpInfo(const CServerInfo *pInfo)
int m_Sorthash
Definition serverbrowser.h:358
bool m_NeedResort
Definition serverbrowser.h:357
bool ValidateCountryName(const char *pCountryName) const
Definition serverbrowser.cpp:300
const char * GetTutorialServer() override
Definition serverbrowser.cpp:1665
void OnInit()
Definition serverbrowser.cpp:103
void LoadDDNetInfoJson()
Definition serverbrowser.cpp:1365
CServerBrowser()
Definition serverbrowser.cpp:54
static void Con_RemoveExcludedCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:158
bool SortCompareNumPlayers(int Index1, int Index2) const
Definition serverbrowser.cpp:377
CServerEntry * Find(const NETADDR &Addr) override
Definition serverbrowser.cpp:664
CExcludedCommunityFilterList m_CommunitiesFilter
Definition serverbrowser.h:346
IConsole * m_pConsole
Definition serverbrowser.h:321
static void Con_AddExcludedCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:149
CHeap m_ServerlistHeap
Definition serverbrowser.h:334
bool SortCompareGametype(int Index1, int Index2) const
Definition serverbrowser.cpp:370
bool ValidateTypeName(const char *pTypeName) const
Definition serverbrowser.cpp:305
static void Con_AddExcludedType(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:187
IServerBrowserHttp * m_pHttp
Definition serverbrowser.h:330
bool m_RefreshingHttp
Definition serverbrowser.h:329
void Update()
Definition serverbrowser.cpp:1260
bool ValidateCommunityId(const char *pCommunityId) const
Definition serverbrowser.cpp:295
void Sort()
Definition serverbrowser.cpp:614
unsigned char m_aTokenSeed[16]
Definition serverbrowser.h:371
void SetCurrentServerPing(const NETADDR &Addr, int Ping)
Definition serverbrowser.cpp:1133
static int GetExtraToken(int Token)
Definition serverbrowser.cpp:342
static void Con_AddExcludedCountry(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:167
ICommunityCache & CommunityCache() override
Definition serverbrowser.h:290
int m_OwnLocation
Definition serverbrowser.h:342
std::vector< const CCommunity * > FavoriteCommunities() const override
Definition serverbrowser.cpp:1766
int GetCurrentType() override
Definition serverbrowser.h:315
const CExcludedCommunityFilterList & CommunitiesFilter() const override
Definition serverbrowser.h:297
Definition serverbrowser.h:25
@ LOC_UNKNOWN
Definition serverbrowser.h:29
@ MAX_COMMUNITY_ID_LENGTH
Definition serverbrowser.h:61
@ MAX_COMMUNITY_TYPE_LENGTH
Definition serverbrowser.h:63
@ MAX_COMMUNITY_COUNTRY_LENGTH
Definition serverbrowser.h:62
Definition serverbrowser.h:255
Definition config.h:9
Definition console.h:47
Definition console.h:18
Definition engine.h:15
Definition favorites.h:14
Definition serverbrowser.h:245
Definition friends.h:19
Definition http.h:12
Definition serverbrowser_http.h:11
Definition serverbrowser_ping_cache.h:9
Definition serverbrowser.h:306
Definition serverbrowser.h:267
@ NUM_TYPES
Definition serverbrowser.h:299
static constexpr const char * COMMUNITY_ALL
Definition serverbrowser.h:326
Definition storage.h:21
Definition vmath.h:15
struct _json_value json_value
Definition serverbrowser.h:17
int str_comp(const char *a, const char *b)
Definition system.cpp:3324
int str_copy(char *dst, const char *src, int dst_size)
Definition system.cpp:3039
Definition types.h:72
Definition hash.h:15
size_t operator()(const CCommunityCountryName &Elem) const noexcept
Definition serverbrowser.h:87
size_t operator()(const CCommunityId &Elem) const noexcept
Definition serverbrowser.h:55
size_t operator()(const CCommunityTypeName &Elem) const noexcept
Definition serverbrowser.h:119
unsigned str_quickhash(const char *str)
Definition system.cpp:4438