ddnet/src/engine/client/updater.h

91 lines
2.2 KiB
C
Raw Normal View History

#ifndef ENGINE_CLIENT_UPDATER_H
#define ENGINE_CLIENT_UPDATER_H
2014-12-31 14:29:34 +00:00
#include <base/lock.h>
#include <engine/updater.h>
2024-01-08 15:01:37 +00:00
#include <forward_list>
#include <memory>
2014-12-31 14:29:34 +00:00
#include <string>
2015-03-13 14:13:19 +00:00
#define CLIENT_EXEC "DDNet"
#define SERVER_EXEC "DDNet-Server"
#if defined(CONF_FAMILY_WINDOWS)
#define PLAT_EXT ".exe"
#define PLAT_NAME CONF_PLATFORM_STRING
2015-03-13 14:13:19 +00:00
#elif defined(CONF_FAMILY_UNIX)
#define PLAT_EXT ""
#if defined(CONF_ARCH_IA32)
#define PLAT_NAME CONF_PLATFORM_STRING "-x86"
#elif defined(CONF_ARCH_AMD64)
#define PLAT_NAME CONF_PLATFORM_STRING "-x86_64"
#else
#define PLAT_NAME CONF_PLATFORM_STRING "-unsupported"
#endif
2015-03-14 10:31:06 +00:00
#else
#define PLAT_EXT ""
#define PLAT_NAME "unsupported-unsupported"
2015-03-13 14:13:19 +00:00
#endif
#define PLAT_CLIENT_DOWN CLIENT_EXEC "-" PLAT_NAME PLAT_EXT
#define PLAT_SERVER_DOWN SERVER_EXEC "-" PLAT_NAME PLAT_EXT
#define PLAT_CLIENT_EXEC CLIENT_EXEC PLAT_EXT
#define PLAT_SERVER_EXEC SERVER_EXEC PLAT_EXT
2024-01-08 15:01:37 +00:00
class CUpdaterFetchTask;
class CUpdater : public IUpdater
2014-12-31 14:29:34 +00:00
{
friend class CUpdaterFetchTask;
2015-03-13 14:13:19 +00:00
class IClient *m_pClient;
class IStorage *m_pStorage;
class IEngine *m_pEngine;
2023-12-18 19:01:26 +00:00
class CHttp *m_pHttp;
2015-03-13 14:13:19 +00:00
CLock m_Lock;
2024-01-12 20:17:16 +00:00
int m_State GUARDED_BY(m_Lock);
char m_aStatus[256] GUARDED_BY(m_Lock);
int m_Percent GUARDED_BY(m_Lock);
char m_aClientExecTmp[64];
char m_aServerExecTmp[64];
2015-03-13 14:13:19 +00:00
2024-01-08 15:01:37 +00:00
std::forward_list<std::pair<std::string, bool>> m_FileJobs;
std::shared_ptr<CUpdaterFetchTask> m_pCurrentTask;
decltype(m_FileJobs)::iterator m_CurrentJob;
2015-03-13 14:13:19 +00:00
bool m_ClientUpdate;
bool m_ServerUpdate;
void AddFileJob(const char *pFile, bool Job);
2024-01-12 20:17:16 +00:00
void FetchFile(const char *pFile, const char *pDestPath = nullptr) REQUIRES(!m_Lock);
bool MoveFile(const char *pFile);
2015-03-13 14:13:19 +00:00
2024-01-12 20:17:16 +00:00
void ParseUpdate() REQUIRES(!m_Lock);
void PerformUpdate() REQUIRES(!m_Lock);
void RunningUpdate() REQUIRES(!m_Lock);
void CommitUpdate() REQUIRES(!m_Lock);
2015-03-13 14:13:19 +00:00
bool ReplaceClient();
bool ReplaceServer();
2015-03-13 14:13:19 +00:00
void SetCurrentState(int NewState) REQUIRES(!m_Lock);
2015-03-13 14:13:19 +00:00
public:
CUpdater();
2015-03-13 14:13:19 +00:00
int GetCurrentState() override REQUIRES(!m_Lock);
void GetCurrentFile(char *pBuf, int BufSize) override REQUIRES(!m_Lock);
int GetCurrentPercent() override REQUIRES(!m_Lock);
2015-03-13 14:13:19 +00:00
2024-01-12 20:17:16 +00:00
void InitiateUpdate() REQUIRES(!m_Lock) override;
2023-12-18 19:01:26 +00:00
void Init(CHttp *pHttp);
2024-01-12 20:17:16 +00:00
void Update() REQUIRES(!m_Lock) override;
2014-12-31 14:29:34 +00:00
};
2015-03-13 14:13:19 +00:00
#endif