kunlang_tbox/include/config/TboxConfigClient.h

49 lines
1.2 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include <optional>
#include <string>
#include <string_view>
#include <unordered_map>
#include "nlohmann/json.hpp"
// 前置声明,避免头文件膨胀
namespace httplib
{
class Client;
}
class TboxConfigClient
{
public:
explicit TboxConfigClient(std::string server = "127.0.0.1", int port = 18080);
// ================= 拉取配置 =================
bool fetch();
uint64_t version() const;
bool isDirty() const;
// ================= 读取 =================
std::optional<std::string> getString(std::string_view semantic) const;
std::optional<int> getInt(std::string_view semantic) const;
std::optional<bool> getBool(std::string_view semantic) const;
// ================= 修改(仅本地 staging =================
void setString(std::string_view semantic, const std::string& v);
void setInt(std::string_view semantic, int v);
void setBool(std::string_view semantic, bool v);
// ================= 提交并确认 =================
bool commitAndFetch();
private:
std::string server_;
int port_;
uint64_t version_{0};
bool dirty_{false};
std::unordered_map<std::string, nlohmann::json> cache_;
std::unordered_map<std::string, nlohmann::json> pending_;
};