mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
* Only run '_DownloadPlaylists_f()' in the main thread, schedule for next frame if we aren't in the main thread. (this should fix crash cases related to disconnecting from the game). * Locked read/write to CBrowser members (thread for obtaining the server list is detached, but once the 'slow' post operation in this thread is complete, mutex lock is acquired (locking the render thread if the browser is active) to set the string members of CBrowser, this operation is very fast as we only set the string and the color after the http post operation (this never caused a crash, but the behavior without any lock mechanism is technically undefined regardless). * Obtain the host name dynamically from the ConVar 'pylon_matchmaking_hostname' (atomic operation). Initial approach was deleting the whole master server pointer just to construct a new httpclient object..
43 lines
833 B
C++
43 lines
833 B
C++
#ifndef LISTMANAGER_H
|
|
#define LISTMANAGER_H
|
|
#include <networksystem/serverlisting.h>
|
|
|
|
enum EHostStatus_t
|
|
{
|
|
NOT_HOSTING,
|
|
HOSTING
|
|
};
|
|
|
|
enum EServerVisibility_t
|
|
{
|
|
OFFLINE,
|
|
HIDDEN,
|
|
PUBLIC
|
|
};
|
|
|
|
class CServerListManager
|
|
{
|
|
public:
|
|
CServerListManager();
|
|
|
|
size_t RefreshServerList(string& svMessage);
|
|
void ClearServerList(void);
|
|
|
|
void LaunchServer(void) const;
|
|
void ConnectToServer(const string& svIp, const string& svPort, const string& svNetKey) const;
|
|
void ConnectToServer(const string& svServer, const string& svNetKey) const;
|
|
|
|
void ProcessCommand(const char* pszCommand) const;
|
|
|
|
EHostStatus_t m_HostingStatus;
|
|
EServerVisibility_t m_ServerVisibility;
|
|
|
|
NetGameServer_t m_Server;
|
|
vector<NetGameServer_t> m_vServerList;
|
|
|
|
mutable std::mutex m_Mutex;
|
|
};
|
|
|
|
extern CServerListManager* g_pServerListManager;
|
|
#endif // LISTMANAGER_H
|