aboutsummaryrefslogtreecommitdiff
path: root/src/zenutil/include
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2026-01-19 13:14:42 +0100
committerGitHub Enterprise <[email protected]>2026-01-19 13:14:42 +0100
commit5081a33dcd19c5d6f9d9cdae9f8745ba786374d4 (patch)
tree6733e6f69137afc690a8c6dcdf618e69ce8029c5 /src/zenutil/include
parentMerge pull request #701 from ue-foundation/lm/mac-daemon-mode (diff)
downloadzen-5081a33dcd19c5d6f9d9cdae9f8745ba786374d4.tar.xz
zen-5081a33dcd19c5d6f9d9cdae9f8745ba786374d4.zip
consul package and basic client added (#716)
* this adds a consul package which can be used to fetch a consul binary * it also adds a `ConsulProcess` helper which can be used to spawn and manage a consul service instance * zencore dependencies brought across: - `except_fmt.h` for easer generation of formatted exception messages - `process.h/cpp` changes (adds `Kill` operation and process group support on Windows) - `string.h` changes to allow generic use of `WideToUtf8()`
Diffstat (limited to 'src/zenutil/include')
-rw-r--r--src/zenutil/include/zenutil/consul.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/zenutil/include/zenutil/consul.h b/src/zenutil/include/zenutil/consul.h
new file mode 100644
index 000000000..08871fa66
--- /dev/null
+++ b/src/zenutil/include/zenutil/consul.h
@@ -0,0 +1,47 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include <zenbase/zenbase.h>
+#include <zenhttp/httpclient.h>
+
+#include <string>
+#include <string_view>
+
+namespace zen::consul {
+
+class ConsulClient
+{
+public:
+ ConsulClient(std::string_view BaseUri);
+ ~ConsulClient();
+
+ ConsulClient(const ConsulClient&) = delete;
+ ConsulClient& operator=(const ConsulClient&) = delete;
+
+ void SetKeyValue(std::string_view Key, std::string_view Value);
+ std::string GetKeyValue(std::string_view Key);
+ void DeleteKey(std::string_view Key);
+
+private:
+ HttpClient m_HttpClient;
+};
+
+class ConsulProcess
+{
+public:
+ ConsulProcess();
+ ~ConsulProcess();
+
+ ConsulProcess(const ConsulProcess&) = delete;
+ ConsulProcess& operator=(const ConsulProcess&) = delete;
+
+ void SpawnConsulAgent();
+ void StopConsulAgent();
+
+private:
+ struct Impl;
+ std::unique_ptr<Impl> m_Impl;
+};
+
+} // namespace zen::consul