// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "zenhubserver.h" namespace zen { struct HydrationConfig { // Location of server state to hydrate/dehydrate std::filesystem::path ServerStateDir; // Temporary directory available for use during hydration/dehydration std::filesystem::path TempDir; // Module ID of the server state being hydrated/dehydrated std::string ModuleId; // Back-end specific target specification (e.g. S3 bucket, file path, etc) std::string TargetSpecification; }; /** * @brief State hydration strategy interface * * An instance of this interface is used to perform hydration OR * dehydration of server state. It's expected to be used only once * and not reused. * */ struct HydrationStrategyBase { virtual ~HydrationStrategyBase() = default; virtual void Dehydrate() = 0; virtual void Hydrate() = 0; virtual void Configure(const HydrationConfig& Config) = 0; }; std::unique_ptr CreateFileHydrator(); } // namespace zen