#pragma once #include "common/app/AppInfo.h" #include "common/kv/IKVEngine.h" #include "common/utils/CPUExecutorGroup.h" #include "stubs/common/IStubFactory.h" #include "stubs/mgmtd/IMgmtdServiceStub.h" namespace hf3fs::core { class ServerEnv { public: const flat::AppInfo &appInfo() const { return appInfo_; } void setAppInfo(flat::AppInfo appInfo); const std::shared_ptr &kvEngine() const { return kvEngine_; } void setKvEngine(std::shared_ptr engine); using MgmtdStubFactory = stubs::IStubFactory; const std::shared_ptr &mgmtdStubFactory() const { return mgmtdStubFactory_; } void setMgmtdStubFactory(std::shared_ptr factory); using UtcTimeGenerator = std::function; const UtcTimeGenerator &utcTimeGenerator() const { return utcTimeGenerator_; } void setUtcTimeGenerator(UtcTimeGenerator generator); CPUExecutorGroup *backgroundExecutor() const { return backgroundExecutor_; } void setBackgroundExecutor(CPUExecutorGroup *executor); using ConfigUpdater = std::function(const String &, const String &)>; const ConfigUpdater &configUpdater() const { return configUpdater_; } void setConfigUpdater(ConfigUpdater updater); using ConfigValidater = std::function(const String &, const String &)>; const ConfigValidater &configValidater() const { return configValidater_; } void setConfigValidater(ConfigValidater validater); private: flat::AppInfo appInfo_; std::shared_ptr kvEngine_; std::shared_ptr mgmtdStubFactory_; UtcTimeGenerator utcTimeGenerator_ = &UtcClock::now; CPUExecutorGroup *backgroundExecutor_ = nullptr; ConfigUpdater configUpdater_; ConfigValidater configValidater_; }; } // namespace hf3fs::core