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;
285 const std::vector<CCommunity> &
Communities()
const override;
int NumServers() const override
Definition serverbrowser.h:264
CFavoriteCommunityFilterList & FavoriteCommunitiesFilter() override
Definition serverbrowser.h:297
static void Con_RemoveExcludedType(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:199
CExcludedCommunityFilterList & CommunitiesFilter() override
Definition serverbrowser.h:298
CExcludedCommunityCountryFilterList m_CountriesFilter
Definition serverbrowser.h:355
int64_t m_BroadcastTime
Definition serverbrowser.h:374
void OnServerInfoUpdate(const NETADDR &Addr, int Token, const CServerInfo *pInfo)
Definition serverbrowser.cpp:918
CServerEntry * ReplaceEntry(CServerEntry *pEntry, const NETADDR *pAddrs, int NumAddrs)
Definition serverbrowser.cpp:890
static bool ParseCommunityServers(CCommunity *pCommunity, const json_value &Servers)
Definition serverbrowser.cpp:1428
IFavorites * m_pFavorites
Definition serverbrowser.h:329
void ValidateServerlistType()
Definition serverbrowser.cpp:1724
static void Con_RemoveFavoriteCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:142
std::vector< CServerEntry * > m_vpServerlist
Definition serverbrowser.h:343
void RemoveRequest(CServerEntry *pEntry)
Definition serverbrowser.cpp:680
bool IsGettingServerlist() const override
Definition serverbrowser.cpp:1772
int Players(const CServerInfo &Item) const override
Definition serverbrowser.cpp:312
CCommunityCache m_CommunityCache
Definition serverbrowser.h:352
static void ConfigSaveCallback(IConfigManager *pConfigManager, void *pUserData)
Definition serverbrowser.cpp:124
int m_ServerlistType
Definition serverbrowser.h:373
void RequestCurrentServer(const NETADDR &Addr) const
Definition serverbrowser.cpp:1153
bool SortCompareName(int Index1, int Index2) const
Definition serverbrowser.cpp:356
int LoadingProgression() const override
Definition serverbrowser.cpp:1782
void UpdateFromHttp()
Definition serverbrowser.cpp:1168
int GenerateToken(const NETADDR &Addr) const
Definition serverbrowser.cpp:336
static void Con_LeakIpAddress(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:209
std::vector< int > m_vSortedServerlist
Definition serverbrowser.h:344
const CExcludedCommunityTypeFilterList & TypesFilter() const override
Definition serverbrowser.h:304
void UpdateServerRank(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1689
void SetLatency(NETADDR Addr, int Latency)
Definition serverbrowser.cpp:818
void LoadDDNetServers()
Definition serverbrowser.cpp:1523
IConfigManager * m_pConfigManager
Definition serverbrowser.h:325
void UpdateServerFriends(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1658
const char * m_pHttpPrevBestUrl
Definition serverbrowser.h:337
int m_CurrentMaxRequests
Definition serverbrowser.h:369
bool IsRefreshing() const override
Definition serverbrowser.cpp:1767
void LoadDDNetLocation()
Definition serverbrowser.cpp:1415
IServerBrowserPingCache * m_pPingCache
Definition serverbrowser.h:336
bool IsRegistered(const NETADDR &Addr)
Definition serverbrowser.cpp:2421
const CCommunity * Community(const char *pCommunityId) const override
Definition serverbrowser.cpp:1819
const ICommunityCache & CommunityCache() const override
Definition serverbrowser.h:296
void SetBaseInfo(class CNetClient *pClient, const char *pNetVersion)
Definition serverbrowser.cpp:89
bool IsServerlistError() const override
Definition serverbrowser.cpp:1777
const CServerInfo * SortedGet(int Index) const override
Definition serverbrowser.cpp:322
static bool ParseCommunityFinishes(CCommunity *pCommunity, const json_value &Finishes)
Definition serverbrowser.cpp:1508
void CleanUp()
Definition serverbrowser.cpp:1255
std::unordered_map< NETADDR, int > m_ByAddr
Definition serverbrowser.h:345
int m_NumRequests
Definition serverbrowser.h:363
CServerEntry * m_pFirstReqServer
Definition serverbrowser.h:361
std::vector< CCommunity > m_vCommunities
Definition serverbrowser.h:347
unsigned CurrentCommunitiesHash() const override
Definition serverbrowser.cpp:1875
void UpdateServerCommunity(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1671
CFavoriteCommunityFilterList m_FavoriteCommunitiesFilter
Definition serverbrowser.h:353
IFriends * m_pFriends
Definition serverbrowser.h:328
void RegisterCommands()
Definition serverbrowser.cpp:110
CServerEntry * m_pLastReqServer
Definition serverbrowser.h:362
void Filter()
Definition serverbrowser.cpp:435
int NumSortedPlayers() const override
Definition serverbrowser.h:269
std::optional< SHA256_DIGEST > DDNetInfoSha256() const override
Definition serverbrowser.h:293
~CServerBrowser() override
Definition serverbrowser.cpp:79
bool SortComparePing(int Index1, int Index2) const
Definition serverbrowser.cpp:372
int NumSortedServers() const override
Definition serverbrowser.h:268
void SetInfo(CServerEntry *pEntry, const CServerInfo &Info) const
Definition serverbrowser.cpp:742
CServerEntry * Add(const NETADDR *pAddrs, int NumAddrs)
Definition serverbrowser.cpp:854
IStorage * m_pStorage
Definition serverbrowser.h:330
const std::vector< CCommunity > & Communities() const override
Definition serverbrowser.cpp:1814
CExcludedCommunityTypeFilterList m_TypesFilter
Definition serverbrowser.h:356
void RequestResort()
Definition serverbrowser.h:262
CExcludedCommunityCountryFilterList & CountriesFilter() override
Definition serverbrowser.h:299
bool SortCompareNumFriends(int Index1, int Index2) const
Definition serverbrowser.cpp:400
bool SortCompareMap(int Index1, int Index2) const
Definition serverbrowser.cpp:365
void RequestImpl(const NETADDR &Addr, CServerEntry *pEntry, int *pBasicToken, int *pToken, bool RandomToken) const
Definition serverbrowser.cpp:1083
std::unordered_map< NETADDR, CCommunityServer > m_CommunityServersByAddr
Definition serverbrowser.h:348
int SortHash() const
Definition serverbrowser.cpp:631
std::vector< const CCommunity * > CurrentCommunities() const override
Definition serverbrowser.cpp:1856
void RequestCurrentServerWithRandomToken(const NETADDR &Addr, int *pBasicToken, int *pToken) const
Definition serverbrowser.cpp:1158
int m_NumSortedPlayers
Definition serverbrowser.h:371
void Refresh(int Type, bool Force=false) override
Definition serverbrowser.cpp:1013
bool SortCompareNumClients(int Index1, int Index2) const
Definition serverbrowser.cpp:393
static int GetBasicToken(int Token)
Definition serverbrowser.cpp:346
void QueueRequest(CServerEntry *pEntry)
Definition serverbrowser.cpp:710
void UpdateServerFilteredPlayers(CServerInfo *pInfo) const
Definition serverbrowser.cpp:1645
void CleanFilters() override
Definition serverbrowser.cpp:2410
bool DDNetInfoAvailable() const override
Definition serverbrowser.h:292
int Max(const CServerInfo &Item) const override
Definition serverbrowser.cpp:317
IEngine * m_pEngine
Definition serverbrowser.h:327
std::vector< const CCommunity * > SelectedCommunities() const override
Definition serverbrowser.cpp:1827
static void Con_AddFavoriteCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:133
CNetClient * m_pNetClient
Definition serverbrowser.h:324
const json_value * LoadDDNetInfo()
Definition serverbrowser.cpp:1363
char m_aNetVersion[128]
Definition serverbrowser.h:332
static void Con_RemoveExcludedCountry(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:179
CExcludedCommunityTypeFilterList & TypesFilter() override
Definition serverbrowser.h:300
bool SortCompareNumPlayersAndPing(int Index1, int Index2) const
Definition serverbrowser.cpp:411
const CExcludedCommunityCountryFilterList & CountriesFilter() const override
Definition serverbrowser.h:303
const CFavoriteCommunityFilterList & FavoriteCommunitiesFilter() const override
Definition serverbrowser.h:301
bool SortCompareFavoritesNumPlayersAndPing(int Index1, int Index2) const
Definition serverbrowser.cpp:424
IHttp * m_pHttpClient
Definition serverbrowser.h:331
json_value * m_pDDNetInfo
Definition serverbrowser.h:358
void SetHttpInfo(const CServerInfo *pInfo)
int m_Sorthash
Definition serverbrowser.h:366
bool m_NeedResort
Definition serverbrowser.h:365
bool ValidateCountryName(const char *pCountryName) const
Definition serverbrowser.cpp:302
const char * GetTutorialServer() override
Definition serverbrowser.cpp:1739
void OnInit()
Definition serverbrowser.cpp:105
void LoadDDNetInfoJson()
Definition serverbrowser.cpp:1385
CServerBrowser()
Definition serverbrowser.cpp:64
const CServerInfo * Get(int Index) const override
Definition serverbrowser.cpp:329
static void Con_RemoveExcludedCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:160
bool SortCompareNumPlayers(int Index1, int Index2) const
Definition serverbrowser.cpp:386
CServerEntry * Find(const NETADDR &Addr) override
Definition serverbrowser.cpp:700
void UpdateServerLatency(CServerInfo *pInfo, int OwnLocation) const
Definition serverbrowser.cpp:1695
CExcludedCommunityFilterList m_CommunitiesFilter
Definition serverbrowser.h:354
std::optional< SHA256_DIGEST > m_DDNetInfoSha256
Definition serverbrowser.h:359
IConsole * m_pConsole
Definition serverbrowser.h:326
static void Con_AddExcludedCommunity(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:151
std::deque< CServerEntry > m_ServerlistStorage
Definition serverbrowser.h:342
bool SortCompareGametype(int Index1, int Index2) const
Definition serverbrowser.cpp:379
bool ValidateTypeName(const char *pTypeName) const
Definition serverbrowser.cpp:307
static void Con_AddExcludedType(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:189
IServerBrowserHttp * m_pHttp
Definition serverbrowser.h:335
bool m_RefreshingHttp
Definition serverbrowser.h:334
int DetermineOwnLocation() const
Definition serverbrowser.cpp:1709
void Update()
Definition serverbrowser.cpp:1269
bool ValidateCommunityId(const char *pCommunityId) const
Definition serverbrowser.cpp:297
void Sort()
Definition serverbrowser.cpp:648
unsigned char m_aTokenSeed[16]
Definition serverbrowser.h:375
void SetCurrentServerPing(const NETADDR &Addr, int Ping)
Definition serverbrowser.cpp:1163
static int GetExtraToken(int Token)
Definition serverbrowser.cpp:351
static void Con_AddExcludedCountry(IConsole::IResult *pResult, void *pUserData)
Definition serverbrowser.cpp:169
ICommunityCache & CommunityCache() override
Definition serverbrowser.h:295
int m_OwnLocation
Definition serverbrowser.h:350
std::vector< const CCommunity * > FavoriteCommunities() const override
Definition serverbrowser.cpp:1840
int GetCurrentType() override
Definition serverbrowser.h:320
const CExcludedCommunityFilterList & CommunitiesFilter() const override
Definition serverbrowser.h:302
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:368
int str_copy(char *dst, const char *src, int dst_size)
Definition str.cpp:18
unsigned str_quickhash(const char *str)
Definition str.cpp:896