3#ifndef ENGINE_CLIENT_SERVERBROWSER_H
4#define ENGINE_CLIENT_SERVERBROWSER_H
133 CCommunityServer(
const char *pCommunityId,
const char *pCountryName,
const char *pTypeName)
148 void Add(
const char *pCommunityId)
override;
149 void Remove(
const char *pCommunityId)
override;
150 void Clear()
override;
151 bool Filtered(
const char *pCommunityId)
const override;
152 bool Empty()
const override;
153 void Clean(
const std::vector<CCommunity> &vAllowedCommunities);
155 const std::vector<CCommunityId> &
Entries()
const;
164 void Add(
const char *pCommunityId)
override;
165 void Remove(
const char *pCommunityId)
override;
166 void Clear()
override;
167 bool Filtered(
const char *pCommunityId)
const override;
168 bool Empty()
const override;
169 void Clean(
const std::vector<CCommunity> &vAllowedCommunities);
184 void Add(
const char *pCountryName)
override;
185 void Add(
const char *pCommunityId,
const char *pCountryName);
186 void Remove(
const char *pCountryName)
override;
187 void Remove(
const char *pCommunityId,
const char *pCountryName);
188 void Clear()
override;
189 bool Filtered(
const char *pCountryName)
const override;
190 bool Empty()
const override;
191 void Clean(
const std::vector<CCommunity> &vAllowedCommunities);
196 std::map<CCommunityId, std::set<CCommunityCountryName>>
m_Entries;
207 void Add(
const char *pTypeName)
override;
208 void Add(
const char *pCommunityId,
const char *pTypeName);
209 void Remove(
const char *pTypeName)
override;
210 void Remove(
const char *pCommunityId,
const char *pTypeName);
211 void Clear()
override;
212 bool Filtered(
const char *pTypeName)
const override;
213 bool Empty()
const override;
214 void Clean(
const std::vector<CCommunity> &vAllowedCommunities);
219 std::map<CCommunityId, std::set<CCommunityTypeName>>
m_Entries;
241 void Update(
bool Force)
override;
257 void Refresh(
int Type,
bool Force =
false)
override;
283 const std::vector<CCommunity> &
Communities()
const override;
int NumServers() const override
Definition serverbrowser.h:264
CFavoriteCommunityFilterList & FavoriteCommunitiesFilter() override
Definition serverbrowser.h:295
static void Con_RemoveExcludedType(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:195
CExcludedCommunityFilterList & CommunitiesFilter() override
Definition serverbrowser.h:296
CExcludedCommunityCountryFilterList m_CountriesFilter
Definition serverbrowser.h:350
int64_t m_BroadcastTime
Definition serverbrowser.h:369
void OnServerInfoUpdate(const NETADDR &Addr, int Token, const CServerInfo *pInfo)
Definition serverbrowser.cpp:901
CServerEntry * ReplaceEntry(CServerEntry *pEntry, const NETADDR *pAddrs, int NumAddrs)
Definition serverbrowser.cpp:873
static bool ParseCommunityServers(CCommunity *pCommunity, const json_value &Servers)
Definition serverbrowser.cpp:1426
IFavorites * m_pFavorites
Definition serverbrowser.h:327
void ValidateServerlistType()
Definition serverbrowser.cpp:1683
static void Con_RemoveFavoriteCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:138
std::vector< CServerEntry * > m_vpServerlist
Definition serverbrowser.h:338
void RemoveRequest(CServerEntry *pEntry)
Definition serverbrowser.cpp:663
bool IsGettingServerlist() const override
Definition serverbrowser.cpp:1731
int Players(const CServerInfo &Item) const override
Definition serverbrowser.cpp:308
CCommunityCache m_CommunityCache
Definition serverbrowser.h:347
static void ConfigSaveCallback(IConfigManager *pConfigManager, void *pUserData)
Definition serverbrowser.cpp:120
int m_ServerlistType
Definition serverbrowser.h:368
void RequestCurrentServer(const NETADDR &Addr) const
Definition serverbrowser.cpp:1136
bool SortCompareName(int Index1, int Index2) const
Definition serverbrowser.cpp:352
int LoadingProgression() const override
Definition serverbrowser.cpp:1741
void UpdateFromHttp()
Definition serverbrowser.cpp:1151
int GenerateToken(const NETADDR &Addr) const
Definition serverbrowser.cpp:332
static void Con_LeakIpAddress(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:205
std::vector< int > m_vSortedServerlist
Definition serverbrowser.h:339
const CExcludedCommunityTypeFilterList & TypesFilter() const override
Definition serverbrowser.h:302
void UpdateServerRank(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1677
void SetLatency(NETADDR Addr, int Latency)
Definition serverbrowser.cpp:800
void LoadDDNetServers()
Definition serverbrowser.cpp:1511
IConfigManager * m_pConfigManager
Definition serverbrowser.h:323
void UpdateServerFriends(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1646
const char * m_pHttpPrevBestUrl
Definition serverbrowser.h:335
int m_CurrentMaxRequests
Definition serverbrowser.h:364
bool IsRefreshing() const override
Definition serverbrowser.cpp:1726
void LoadDDNetLocation()
Definition serverbrowser.cpp:1413
IServerBrowserPingCache * m_pPingCache
Definition serverbrowser.h:334
bool IsRegistered(const NETADDR &Addr)
Definition serverbrowser.cpp:2381
const CCommunity * Community(const char *pCommunityId) const override
Definition serverbrowser.cpp:1778
const ICommunityCache & CommunityCache() const override
Definition serverbrowser.h:294
void SetBaseInfo(class CNetClient *pClient, const char *pNetVersion)
Definition serverbrowser.cpp:85
bool IsServerlistError() const override
Definition serverbrowser.cpp:1736
const CServerInfo * SortedGet(int Index) const override
Definition serverbrowser.cpp:318
static bool ParseCommunityFinishes(CCommunity *pCommunity, const json_value &Finishes)
Definition serverbrowser.cpp:1496
void CleanUp()
Definition serverbrowser.cpp:1260
std::unordered_map< NETADDR, int > m_ByAddr
Definition serverbrowser.h:340
int m_NumRequests
Definition serverbrowser.h:358
CServerEntry * m_pFirstReqServer
Definition serverbrowser.h:356
std::vector< CCommunity > m_vCommunities
Definition serverbrowser.h:342
unsigned CurrentCommunitiesHash() const override
Definition serverbrowser.cpp:1834
void UpdateServerCommunity(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1659
CFavoriteCommunityFilterList m_FavoriteCommunitiesFilter
Definition serverbrowser.h:348
IFriends * m_pFriends
Definition serverbrowser.h:326
void RegisterCommands()
Definition serverbrowser.cpp:106
CServerEntry * m_pLastReqServer
Definition serverbrowser.h:357
void Filter()
Definition serverbrowser.cpp:420
int NumSortedPlayers() const override
Definition serverbrowser.h:269
std::optional< SHA256_DIGEST > DDNetInfoSha256() const override
Definition serverbrowser.h:291
~CServerBrowser() override
Definition serverbrowser.cpp:75
bool SortComparePing(int Index1, int Index2) const
Definition serverbrowser.cpp:368
int NumSortedServers() const override
Definition serverbrowser.h:268
void SetInfo(CServerEntry *pEntry, const CServerInfo &Info) const
Definition serverbrowser.cpp:725
CServerEntry * Add(const NETADDR *pAddrs, int NumAddrs)
Definition serverbrowser.cpp:836
IStorage * m_pStorage
Definition serverbrowser.h:328
const std::vector< CCommunity > & Communities() const override
Definition serverbrowser.cpp:1773
CExcludedCommunityTypeFilterList m_TypesFilter
Definition serverbrowser.h:351
void RequestResort()
Definition serverbrowser.h:262
CExcludedCommunityCountryFilterList & CountriesFilter() override
Definition serverbrowser.h:297
bool SortCompareNumFriends(int Index1, int Index2) const
Definition serverbrowser.cpp:396
bool SortCompareMap(int Index1, int Index2) const
Definition serverbrowser.cpp:361
void RequestImpl(const NETADDR &Addr, CServerEntry *pEntry, int *pBasicToken, int *pToken, bool RandomToken) const
Definition serverbrowser.cpp:1066
std::unordered_map< NETADDR, CCommunityServer > m_CommunityServersByAddr
Definition serverbrowser.h:343
int SortHash() const
Definition serverbrowser.cpp:616
std::vector< const CCommunity * > CurrentCommunities() const override
Definition serverbrowser.cpp:1815
void RequestCurrentServerWithRandomToken(const NETADDR &Addr, int *pBasicToken, int *pToken) const
Definition serverbrowser.cpp:1141
int m_NumSortedPlayers
Definition serverbrowser.h:366
void Refresh(int Type, bool Force=false) override
Definition serverbrowser.cpp:996
bool SortCompareNumClients(int Index1, int Index2) const
Definition serverbrowser.cpp:389
static int GetBasicToken(int Token)
Definition serverbrowser.cpp:342
void QueueRequest(CServerEntry *pEntry)
Definition serverbrowser.cpp:693
void UpdateServerFilteredPlayers(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1633
void CleanFilters() override
Definition serverbrowser.cpp:2370
bool DDNetInfoAvailable() const override
Definition serverbrowser.h:290
int Max(const CServerInfo &Item) const override
Definition serverbrowser.cpp:313
IEngine * m_pEngine
Definition serverbrowser.h:325
std::vector< const CCommunity * > SelectedCommunities() const override
Definition serverbrowser.cpp:1786
static void Con_AddFavoriteCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:129
CNetClient * m_pNetClient
Definition serverbrowser.h:322
const json_value * LoadDDNetInfo()
Definition serverbrowser.cpp:1368
char m_aNetVersion[128]
Definition serverbrowser.h:330
static void Con_RemoveExcludedCountry(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:175
CExcludedCommunityTypeFilterList & TypesFilter() override
Definition serverbrowser.h:298
bool SortCompareNumPlayersAndPing(int Index1, int Index2) const
Definition serverbrowser.cpp:407
const CExcludedCommunityCountryFilterList & CountriesFilter() const override
Definition serverbrowser.h:301
const CFavoriteCommunityFilterList & FavoriteCommunitiesFilter() const override
Definition serverbrowser.h:299
IHttp * m_pHttpClient
Definition serverbrowser.h:329
json_value * m_pDDNetInfo
Definition serverbrowser.h:353
void SetHttpInfo(const CServerInfo *pInfo)
int m_Sorthash
Definition serverbrowser.h:361
bool m_NeedResort
Definition serverbrowser.h:360
bool ValidateCountryName(const char *pCountryName) const
Definition serverbrowser.cpp:298
const char * GetTutorialServer() override
Definition serverbrowser.cpp:1698
void OnInit()
Definition serverbrowser.cpp:101
void LoadDDNetInfoJson()
Definition serverbrowser.cpp:1383
CServerBrowser()
Definition serverbrowser.cpp:60
const CServerInfo * Get(int Index) const override
Definition serverbrowser.cpp:325
static void Con_RemoveExcludedCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:156
bool SortCompareNumPlayers(int Index1, int Index2) const
Definition serverbrowser.cpp:382
CServerEntry * Find(const NETADDR &Addr) override
Definition serverbrowser.cpp:683
CExcludedCommunityFilterList m_CommunitiesFilter
Definition serverbrowser.h:349
std::optional< SHA256_DIGEST > m_DDNetInfoSha256
Definition serverbrowser.h:354
IConsole * m_pConsole
Definition serverbrowser.h:324
static void Con_AddExcludedCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:147
CHeap m_ServerlistHeap
Definition serverbrowser.h:337
bool SortCompareGametype(int Index1, int Index2) const
Definition serverbrowser.cpp:375
bool ValidateTypeName(const char *pTypeName) const
Definition serverbrowser.cpp:303
static void Con_AddExcludedType(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:185
IServerBrowserHttp * m_pHttp
Definition serverbrowser.h:333
bool m_RefreshingHttp
Definition serverbrowser.h:332
void Update()
Definition serverbrowser.cpp:1274
bool ValidateCommunityId(const char *pCommunityId) const
Definition serverbrowser.cpp:293
void Sort()
Definition serverbrowser.cpp:633
unsigned char m_aTokenSeed[16]
Definition serverbrowser.h:370
void SetCurrentServerPing(const NETADDR &Addr, int Ping)
Definition serverbrowser.cpp:1146
static int GetExtraToken(int Token)
Definition serverbrowser.cpp:347
static void Con_AddExcludedCountry(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:165
ICommunityCache & CommunityCache() override
Definition serverbrowser.h:293
int m_OwnLocation
Definition serverbrowser.h:345
std::vector< const CCommunity * > FavoriteCommunities() const override
Definition serverbrowser.cpp:1799
int GetCurrentType() override
Definition serverbrowser.h:318
const CExcludedCommunityFilterList & CommunitiesFilter() const override
Definition serverbrowser.h:300
Definition serverbrowser.h:26
@ MAX_COMMUNITY_ID_LENGTH
Definition serverbrowser.h:62
@ MAX_COMMUNITY_TYPE_LENGTH
Definition serverbrowser.h:64
@ MAX_COMMUNITY_COUNTRY_LENGTH
Definition serverbrowser.h:63
@ LOC_UNKNOWN
Definition serverbrowser.h:30
Definition favorites.h:15
Definition serverbrowser.h:248
Definition serverbrowser_http.h:11
Definition serverbrowser_ping_cache.h:9
Definition serverbrowser.h:320
Definition serverbrowser.h:272
static constexpr const char * COMMUNITY_ALL
Definition serverbrowser.h:340
@ NUM_TYPES
Definition serverbrowser.h:310
struct _json_value json_value
Definition serverbrowser.h:18
int str_comp(const char *a, const char *b)
Definition str.cpp:326
int str_copy(char *dst, const char *src, int dst_size)
Definition str.cpp:6
unsigned str_quickhash(const char *str)
Definition str.cpp:852