diff options
Diffstat (limited to 'zenutil/include')
| -rw-r--r-- | zenutil/include/zenserverprocess.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/zenutil/include/zenserverprocess.h b/zenutil/include/zenserverprocess.h new file mode 100644 index 000000000..fbe48abe3 --- /dev/null +++ b/zenutil/include/zenserverprocess.h @@ -0,0 +1,56 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include <zencore/thread.h> + +#include <spdlog/spdlog.h> + +#include <filesystem> + +class ZenServerEnvironment +{ +public: + ZenServerEnvironment(); + ~ZenServerEnvironment(); + + void Initialize(std::filesystem::path ProgramBaseDir, std::filesystem::path TestBaseDir); + + std::filesystem::path CreateNewTestDir(); + std::filesystem::path ProgramBaseDir() const { return m_ProgramBaseDir; } + std::filesystem::path RootDir(std::string_view Path); + bool IsInitialized() const { return m_IsInitialized; } + +private: + std::filesystem::path m_ProgramBaseDir; + std::filesystem::path m_TestBaseDir; + bool m_IsInitialized = false; +}; + +struct ZenServerInstance +{ + ZenServerInstance(ZenServerEnvironment& TestEnvironment); + ~ZenServerInstance(); + + void SignalShutdown() { m_ShutdownEvent.Set(); } + void WaitUntilReady() { m_ReadyEvent.Wait(); } + void EnableTermination() { m_Terminate = true; } + void EnableMesh() { m_MeshEnabled = true; } + + void SetTestDir(std::filesystem::path TestDir) + { + ZEN_ASSERT(!m_Process.IsValid()); + m_TestDir = TestDir; + } + + void SpawnServer(int BasePort); + +private: + ZenServerEnvironment& m_Env; + zen::ProcessHandle m_Process; + zen::Event m_ReadyEvent; + zen::Event m_ShutdownEvent; + bool m_Terminate = false; + std::filesystem::path m_TestDir; + bool m_MeshEnabled = false; +}; |