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;
258 void Refresh(
int Type,
bool Force =
false)
override;
286 const std::vector<CCommunity> &
Communities()
const override;
int NumServers() const override
Definition serverbrowser.h:265
CFavoriteCommunityFilterList & FavoriteCommunitiesFilter() override
Definition serverbrowser.h:298
static void Con_RemoveExcludedType(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:204
void Shutdown() override
Definition serverbrowser.cpp:89
CExcludedCommunityFilterList & CommunitiesFilter() override
Definition serverbrowser.h:299
CExcludedCommunityCountryFilterList m_CountriesFilter
Definition serverbrowser.h:356
int64_t m_BroadcastTime
Definition serverbrowser.h:375
void OnServerInfoUpdate(const NETADDR &Addr, int Token, const CServerInfo *pInfo)
Definition serverbrowser.cpp:923
CServerEntry * ReplaceEntry(CServerEntry *pEntry, const NETADDR *pAddrs, int NumAddrs)
Definition serverbrowser.cpp:895
static bool ParseCommunityServers(CCommunity *pCommunity, const json_value &Servers)
Definition serverbrowser.cpp:1433
IFavorites * m_pFavorites
Definition serverbrowser.h:330
void ValidateServerlistType()
Definition serverbrowser.cpp:1729
static void Con_RemoveFavoriteCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:147
std::vector< CServerEntry * > m_vpServerlist
Definition serverbrowser.h:344
void RemoveRequest(CServerEntry *pEntry)
Definition serverbrowser.cpp:685
bool IsGettingServerlist() const override
Definition serverbrowser.cpp:1777
int Players(const CServerInfo &Item) const override
Definition serverbrowser.cpp:317
CCommunityCache m_CommunityCache
Definition serverbrowser.h:353
static void ConfigSaveCallback(IConfigManager *pConfigManager, void *pUserData)
Definition serverbrowser.cpp:129
int m_ServerlistType
Definition serverbrowser.h:374
void RequestCurrentServer(const NETADDR &Addr) const
Definition serverbrowser.cpp:1158
bool SortCompareName(int Index1, int Index2) const
Definition serverbrowser.cpp:361
int LoadingProgression() const override
Definition serverbrowser.cpp:1787
void UpdateFromHttp()
Definition serverbrowser.cpp:1173
int GenerateToken(const NETADDR &Addr) const
Definition serverbrowser.cpp:341
static void Con_LeakIpAddress(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:214
std::vector< int > m_vSortedServerlist
Definition serverbrowser.h:345
const CExcludedCommunityTypeFilterList & TypesFilter() const override
Definition serverbrowser.h:305
void UpdateServerRank(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1694
void SetLatency(NETADDR Addr, int Latency)
Definition serverbrowser.cpp:823
void LoadDDNetServers()
Definition serverbrowser.cpp:1528
IConfigManager * m_pConfigManager
Definition serverbrowser.h:326
void UpdateServerFriends(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1663
const char * m_pHttpPrevBestUrl
Definition serverbrowser.h:338
int m_CurrentMaxRequests
Definition serverbrowser.h:370
bool IsRefreshing() const override
Definition serverbrowser.cpp:1772
void LoadDDNetLocation()
Definition serverbrowser.cpp:1420
IServerBrowserPingCache * m_pPingCache
Definition serverbrowser.h:337
bool IsRegistered(const NETADDR &Addr)
Definition serverbrowser.cpp:2426
const CCommunity * Community(const char *pCommunityId) const override
Definition serverbrowser.cpp:1824
const ICommunityCache & CommunityCache() const override
Definition serverbrowser.h:297
void SetBaseInfo(class CNetClient *pClient, const char *pNetVersion)
Definition serverbrowser.cpp:94
bool IsServerlistError() const override
Definition serverbrowser.cpp:1782
const CServerInfo * SortedGet(int Index) const override
Definition serverbrowser.cpp:327
static bool ParseCommunityFinishes(CCommunity *pCommunity, const json_value &Finishes)
Definition serverbrowser.cpp:1513
void CleanUp()
Definition serverbrowser.cpp:1260
std::unordered_map< NETADDR, int > m_ByAddr
Definition serverbrowser.h:346
int m_NumRequests
Definition serverbrowser.h:364
CServerEntry * m_pFirstReqServer
Definition serverbrowser.h:362
std::vector< CCommunity > m_vCommunities
Definition serverbrowser.h:348
unsigned CurrentCommunitiesHash() const override
Definition serverbrowser.cpp:1880
void UpdateServerCommunity(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1676
CFavoriteCommunityFilterList m_FavoriteCommunitiesFilter
Definition serverbrowser.h:354
IFriends * m_pFriends
Definition serverbrowser.h:329
void RegisterCommands()
Definition serverbrowser.cpp:115
CServerEntry * m_pLastReqServer
Definition serverbrowser.h:363
void Filter()
Definition serverbrowser.cpp:440
int NumSortedPlayers() const override
Definition serverbrowser.h:270
std::optional< SHA256_DIGEST > DDNetInfoSha256() const override
Definition serverbrowser.h:294
bool SortComparePing(int Index1, int Index2) const
Definition serverbrowser.cpp:377
int NumSortedServers() const override
Definition serverbrowser.h:269
void SetInfo(CServerEntry *pEntry, const CServerInfo &Info) const
Definition serverbrowser.cpp:747
CServerEntry * Add(const NETADDR *pAddrs, int NumAddrs)
Definition serverbrowser.cpp:859
IStorage * m_pStorage
Definition serverbrowser.h:331
const std::vector< CCommunity > & Communities() const override
Definition serverbrowser.cpp:1819
CExcludedCommunityTypeFilterList m_TypesFilter
Definition serverbrowser.h:357
void RequestResort()
Definition serverbrowser.h:263
CExcludedCommunityCountryFilterList & CountriesFilter() override
Definition serverbrowser.h:300
bool SortCompareNumFriends(int Index1, int Index2) const
Definition serverbrowser.cpp:405
bool SortCompareMap(int Index1, int Index2) const
Definition serverbrowser.cpp:370
void RequestImpl(const NETADDR &Addr, CServerEntry *pEntry, int *pBasicToken, int *pToken, bool RandomToken) const
Definition serverbrowser.cpp:1088
std::unordered_map< NETADDR, CCommunityServer > m_CommunityServersByAddr
Definition serverbrowser.h:349
int SortHash() const
Definition serverbrowser.cpp:636
std::vector< const CCommunity * > CurrentCommunities() const override
Definition serverbrowser.cpp:1861
void RequestCurrentServerWithRandomToken(const NETADDR &Addr, int *pBasicToken, int *pToken) const
Definition serverbrowser.cpp:1163
int m_NumSortedPlayers
Definition serverbrowser.h:372
void Refresh(int Type, bool Force=false) override
Definition serverbrowser.cpp:1018
bool SortCompareNumClients(int Index1, int Index2) const
Definition serverbrowser.cpp:398
static int GetBasicToken(int Token)
Definition serverbrowser.cpp:351
void QueueRequest(CServerEntry *pEntry)
Definition serverbrowser.cpp:715
void UpdateServerFilteredPlayers(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1650
void CleanFilters() override
Definition serverbrowser.cpp:2415
bool DDNetInfoAvailable() const override
Definition serverbrowser.h:293
int Max(const CServerInfo &Item) const override
Definition serverbrowser.cpp:322
IEngine * m_pEngine
Definition serverbrowser.h:328
std::vector< const CCommunity * > SelectedCommunities() const override
Definition serverbrowser.cpp:1832
static void Con_AddFavoriteCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:138
CNetClient * m_pNetClient
Definition serverbrowser.h:325
const json_value * LoadDDNetInfo()
Definition serverbrowser.cpp:1368
char m_aNetVersion[128]
Definition serverbrowser.h:333
static void Con_RemoveExcludedCountry(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:184
CExcludedCommunityTypeFilterList & TypesFilter() override
Definition serverbrowser.h:301
bool SortCompareNumPlayersAndPing(int Index1, int Index2) const
Definition serverbrowser.cpp:416
const CExcludedCommunityCountryFilterList & CountriesFilter() const override
Definition serverbrowser.h:304
const CFavoriteCommunityFilterList & FavoriteCommunitiesFilter() const override
Definition serverbrowser.h:302
bool SortCompareFavoritesNumPlayersAndPing(int Index1, int Index2) const
Definition serverbrowser.cpp:429
IHttp * m_pHttpClient
Definition serverbrowser.h:332
json_value * m_pDDNetInfo
Definition serverbrowser.h:359
void SetHttpInfo(const CServerInfo *pInfo)
int m_Sorthash
Definition serverbrowser.h:367
bool m_NeedResort
Definition serverbrowser.h:366
bool ValidateCountryName(const char *pCountryName) const
Definition serverbrowser.cpp:307
const char * GetTutorialServer() override
Definition serverbrowser.cpp:1744
void OnInit()
Definition serverbrowser.cpp:110
void LoadDDNetInfoJson()
Definition serverbrowser.cpp:1390
CServerBrowser()
Definition serverbrowser.cpp:64
const CServerInfo * Get(int Index) const override
Definition serverbrowser.cpp:334
static void Con_RemoveExcludedCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:165
bool SortCompareNumPlayers(int Index1, int Index2) const
Definition serverbrowser.cpp:391
CServerEntry * Find(const NETADDR &Addr) override
Definition serverbrowser.cpp:705
void UpdateServerLatency(CServerInfo *pInfo, int OwnLocation) const
Definition serverbrowser.cpp:1700
CExcludedCommunityFilterList m_CommunitiesFilter
Definition serverbrowser.h:355
std::optional< SHA256_DIGEST > m_DDNetInfoSha256
Definition serverbrowser.h:360
IConsole * m_pConsole
Definition serverbrowser.h:327
static void Con_AddExcludedCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:156
std::deque< CServerEntry > m_ServerlistStorage
Definition serverbrowser.h:343
bool SortCompareGametype(int Index1, int Index2) const
Definition serverbrowser.cpp:384
bool ValidateTypeName(const char *pTypeName) const
Definition serverbrowser.cpp:312
static void Con_AddExcludedType(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:194
IServerBrowserHttp * m_pHttp
Definition serverbrowser.h:336
bool m_RefreshingHttp
Definition serverbrowser.h:335
int DetermineOwnLocation() const
Definition serverbrowser.cpp:1714
void Update()
Definition serverbrowser.cpp:1274
bool ValidateCommunityId(const char *pCommunityId) const
Definition serverbrowser.cpp:302
void Sort()
Definition serverbrowser.cpp:653
unsigned char m_aTokenSeed[16]
Definition serverbrowser.h:376
void SetCurrentServerPing(const NETADDR &Addr, int Ping)
Definition serverbrowser.cpp:1168
static int GetExtraToken(int Token)
Definition serverbrowser.cpp:356
static void Con_AddExcludedCountry(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:174
ICommunityCache & CommunityCache() override
Definition serverbrowser.h:296
int m_OwnLocation
Definition serverbrowser.h:351
std::vector< const CCommunity * > FavoriteCommunities() const override
Definition serverbrowser.cpp:1845
int GetCurrentType() override
Definition serverbrowser.h:321
const CExcludedCommunityFilterList & CommunitiesFilter() const override
Definition serverbrowser.h:303
Definition serverbrowser.h:27
@ MAX_COMMUNITY_ID_LENGTH
Definition serverbrowser.h:63
@ MAX_COMMUNITY_TYPE_LENGTH
Definition serverbrowser.h:65
@ MAX_COMMUNITY_COUNTRY_LENGTH
Definition serverbrowser.h:64
@ LOC_UNKNOWN
Definition serverbrowser.h:31
Definition favorites.h:15
Definition serverbrowser.h:256
Definition serverbrowser_http.h:11
Definition serverbrowser_ping_cache.h:9
Definition serverbrowser.h:330
Definition serverbrowser.h:280
static constexpr const char * COMMUNITY_ALL
Definition serverbrowser.h:350
@ NUM_TYPES
Definition serverbrowser.h:320
struct _json_value json_value
Definition serverbrowser.h:18
int str_comp(const char *a, const char *b)
Definition str.cpp:373
int str_copy(char *dst, const char *src, int dst_size)
Definition str.cpp:18
unsigned str_quickhash(const char *str)
Definition str.cpp:901