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;
282 const std::vector<CCommunity> &
Communities()
const override;
int NumServers() const override
Definition serverbrowser.h:264
CFavoriteCommunityFilterList & FavoriteCommunitiesFilter() override
Definition serverbrowser.h:294
static void Con_RemoveExcludedType(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:195
CExcludedCommunityFilterList & CommunitiesFilter() override
Definition serverbrowser.h:295
CExcludedCommunityCountryFilterList m_CountriesFilter
Definition serverbrowser.h:349
int64_t m_BroadcastTime
Definition serverbrowser.h:368
void OnServerInfoUpdate(const NETADDR &Addr, int Token, const CServerInfo *pInfo)
Definition serverbrowser.cpp:874
CServerEntry * ReplaceEntry(CServerEntry *pEntry, const NETADDR *pAddrs, int NumAddrs)
Definition serverbrowser.cpp:846
static bool ParseCommunityServers(CCommunity *pCommunity, const json_value &Servers)
Definition serverbrowser.cpp:1398
IFavorites * m_pFavorites
Definition serverbrowser.h:326
void ValidateServerlistType()
Definition serverbrowser.cpp:1655
static void Con_RemoveFavoriteCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:138
std::vector< CServerEntry * > m_vpServerlist
Definition serverbrowser.h:337
void RemoveRequest(CServerEntry *pEntry)
Definition serverbrowser.cpp:636
bool IsGettingServerlist() const override
Definition serverbrowser.cpp:1703
int Players(const CServerInfo &Item) const override
Definition serverbrowser.cpp:308
CCommunityCache m_CommunityCache
Definition serverbrowser.h:346
static void ConfigSaveCallback(IConfigManager *pConfigManager, void *pUserData)
Definition serverbrowser.cpp:120
int m_ServerlistType
Definition serverbrowser.h:367
void RequestCurrentServer(const NETADDR &Addr) const
Definition serverbrowser.cpp:1109
bool SortCompareName(int Index1, int Index2) const
Definition serverbrowser.cpp:345
int LoadingProgression() const override
Definition serverbrowser.cpp:1713
void UpdateFromHttp()
Definition serverbrowser.cpp:1124
int GenerateToken(const NETADDR &Addr) const
Definition serverbrowser.cpp:325
static void Con_LeakIpAddress(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:205
std::vector< int > m_vSortedServerlist
Definition serverbrowser.h:338
const CExcludedCommunityTypeFilterList & TypesFilter() const override
Definition serverbrowser.h:301
void UpdateServerRank(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1649
void SetLatency(NETADDR Addr, int Latency)
Definition serverbrowser.cpp:773
void LoadDDNetServers()
Definition serverbrowser.cpp:1483
IConfigManager * m_pConfigManager
Definition serverbrowser.h:322
void UpdateServerFriends(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1618
const char * m_pHttpPrevBestUrl
Definition serverbrowser.h:334
int m_CurrentMaxRequests
Definition serverbrowser.h:363
bool IsRefreshing() const override
Definition serverbrowser.cpp:1698
void LoadDDNetLocation()
Definition serverbrowser.cpp:1385
IServerBrowserPingCache * m_pPingCache
Definition serverbrowser.h:333
bool IsRegistered(const NETADDR &Addr)
Definition serverbrowser.cpp:2353
const CCommunity * Community(const char *pCommunityId) const override
Definition serverbrowser.cpp:1750
const ICommunityCache & CommunityCache() const override
Definition serverbrowser.h:293
void SetBaseInfo(class CNetClient *pClient, const char *pNetVersion)
Definition serverbrowser.cpp:85
bool IsServerlistError() const override
Definition serverbrowser.cpp:1708
const CServerInfo * SortedGet(int Index) const override
Definition serverbrowser.cpp:318
static bool ParseCommunityFinishes(CCommunity *pCommunity, const json_value &Finishes)
Definition serverbrowser.cpp:1468
void CleanUp()
Definition serverbrowser.cpp:1233
std::unordered_map< NETADDR, int > m_ByAddr
Definition serverbrowser.h:339
int m_NumRequests
Definition serverbrowser.h:357
CServerEntry * m_pFirstReqServer
Definition serverbrowser.h:355
std::vector< CCommunity > m_vCommunities
Definition serverbrowser.h:341
unsigned CurrentCommunitiesHash() const override
Definition serverbrowser.cpp:1806
void UpdateServerCommunity(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1631
CFavoriteCommunityFilterList m_FavoriteCommunitiesFilter
Definition serverbrowser.h:347
IFriends * m_pFriends
Definition serverbrowser.h:325
void RegisterCommands()
Definition serverbrowser.cpp:106
CServerEntry * m_pLastReqServer
Definition serverbrowser.h:356
void Filter()
Definition serverbrowser.cpp:413
int NumSortedPlayers() const override
Definition serverbrowser.h:268
std::optional< SHA256_DIGEST > DDNetInfoSha256() const override
Definition serverbrowser.h:290
~CServerBrowser() override
Definition serverbrowser.cpp:75
bool SortComparePing(int Index1, int Index2) const
Definition serverbrowser.cpp:361
int NumSortedServers() const override
Definition serverbrowser.h:267
void SetInfo(CServerEntry *pEntry, const CServerInfo &Info) const
Definition serverbrowser.cpp:698
CServerEntry * Add(const NETADDR *pAddrs, int NumAddrs)
Definition serverbrowser.cpp:809
IStorage * m_pStorage
Definition serverbrowser.h:327
const std::vector< CCommunity > & Communities() const override
Definition serverbrowser.cpp:1745
CExcludedCommunityTypeFilterList m_TypesFilter
Definition serverbrowser.h:350
void RequestResort()
Definition serverbrowser.h:262
CExcludedCommunityCountryFilterList & CountriesFilter() override
Definition serverbrowser.h:296
bool SortCompareNumFriends(int Index1, int Index2) const
Definition serverbrowser.cpp:389
bool SortCompareMap(int Index1, int Index2) const
Definition serverbrowser.cpp:354
void RequestImpl(const NETADDR &Addr, CServerEntry *pEntry, int *pBasicToken, int *pToken, bool RandomToken) const
Definition serverbrowser.cpp:1039
std::unordered_map< NETADDR, CCommunityServer > m_CommunityServersByAddr
Definition serverbrowser.h:342
int SortHash() const
Definition serverbrowser.cpp:589
std::vector< const CCommunity * > CurrentCommunities() const override
Definition serverbrowser.cpp:1787
void RequestCurrentServerWithRandomToken(const NETADDR &Addr, int *pBasicToken, int *pToken) const
Definition serverbrowser.cpp:1114
int m_NumSortedPlayers
Definition serverbrowser.h:365
void Refresh(int Type, bool Force=false) override
Definition serverbrowser.cpp:969
bool SortCompareNumClients(int Index1, int Index2) const
Definition serverbrowser.cpp:382
static int GetBasicToken(int Token)
Definition serverbrowser.cpp:335
void QueueRequest(CServerEntry *pEntry)
Definition serverbrowser.cpp:666
void UpdateServerFilteredPlayers(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1605
void CleanFilters() override
Definition serverbrowser.cpp:2342
bool DDNetInfoAvailable() const override
Definition serverbrowser.h:289
int Max(const CServerInfo &Item) const override
Definition serverbrowser.cpp:313
IEngine * m_pEngine
Definition serverbrowser.h:324
std::vector< const CCommunity * > SelectedCommunities() const override
Definition serverbrowser.cpp:1758
static void Con_AddFavoriteCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:129
CNetClient * m_pNetClient
Definition serverbrowser.h:321
const json_value * LoadDDNetInfo()
Definition serverbrowser.cpp:1341
char m_aNetVersion[128]
Definition serverbrowser.h:329
static void Con_RemoveExcludedCountry(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:175
CExcludedCommunityTypeFilterList & TypesFilter() override
Definition serverbrowser.h:297
bool SortCompareNumPlayersAndPing(int Index1, int Index2) const
Definition serverbrowser.cpp:400
const CExcludedCommunityCountryFilterList & CountriesFilter() const override
Definition serverbrowser.h:300
const CFavoriteCommunityFilterList & FavoriteCommunitiesFilter() const override
Definition serverbrowser.h:298
IHttp * m_pHttpClient
Definition serverbrowser.h:328
json_value * m_pDDNetInfo
Definition serverbrowser.h:352
void SetHttpInfo(const CServerInfo *pInfo)
int m_Sorthash
Definition serverbrowser.h:360
bool m_NeedResort
Definition serverbrowser.h:359
bool ValidateCountryName(const char *pCountryName) const
Definition serverbrowser.cpp:298
const char * GetTutorialServer() override
Definition serverbrowser.cpp:1670
void OnInit()
Definition serverbrowser.cpp:101
void LoadDDNetInfoJson()
Definition serverbrowser.cpp:1355
CServerBrowser()
Definition serverbrowser.cpp:60
static void Con_RemoveExcludedCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:156
bool SortCompareNumPlayers(int Index1, int Index2) const
Definition serverbrowser.cpp:375
CServerEntry * Find(const NETADDR &Addr) override
Definition serverbrowser.cpp:656
CExcludedCommunityFilterList m_CommunitiesFilter
Definition serverbrowser.h:348
std::optional< SHA256_DIGEST > m_DDNetInfoSha256
Definition serverbrowser.h:353
IConsole * m_pConsole
Definition serverbrowser.h:323
static void Con_AddExcludedCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:147
CHeap m_ServerlistHeap
Definition serverbrowser.h:336
bool SortCompareGametype(int Index1, int Index2) const
Definition serverbrowser.cpp:368
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:332
bool m_RefreshingHttp
Definition serverbrowser.h:331
void Update()
Definition serverbrowser.cpp:1247
bool ValidateCommunityId(const char *pCommunityId) const
Definition serverbrowser.cpp:293
void Sort()
Definition serverbrowser.cpp:606
unsigned char m_aTokenSeed[16]
Definition serverbrowser.h:369
void SetCurrentServerPing(const NETADDR &Addr, int Ping)
Definition serverbrowser.cpp:1119
static int GetExtraToken(int Token)
Definition serverbrowser.cpp:340
static void Con_AddExcludedCountry(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:165
ICommunityCache & CommunityCache() override
Definition serverbrowser.h:292
int m_OwnLocation
Definition serverbrowser.h:344
std::vector< const CCommunity * > FavoriteCommunities() const override
Definition serverbrowser.cpp:1771
int GetCurrentType() override
Definition serverbrowser.h:317
const CExcludedCommunityFilterList & CommunitiesFilter() const override
Definition serverbrowser.h:299
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:246
Definition serverbrowser_http.h:11
Definition serverbrowser_ping_cache.h:9
Definition serverbrowser.h:318
Definition serverbrowser.h:270
static constexpr const char * COMMUNITY_ALL
Definition serverbrowser.h:338
@ NUM_TYPES
Definition serverbrowser.h:308
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