From a11f3fa7440d9667656e92702dff6e18d623120a Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Mon, 22 Dec 2025 17:01:16 +0100 Subject: Add http server with stats.json --- src/ManagementServer.cpp | 49 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 8 deletions(-) (limited to 'src/ManagementServer.cpp') diff --git a/src/ManagementServer.cpp b/src/ManagementServer.cpp index c8a304a..95124e4 100644 --- a/src/ManagementServer.cpp +++ b/src/ManagementServer.cpp @@ -167,6 +167,31 @@ bool ManagementServer::isInputRegistered(std::string& id) return true; } +std::string ManagementServer::get_json_stats_for_http(std::optional clocktai_expires_at) const +{ + std::ostringstream ss; + + ss << "{ \"version\" : \"" << VERSION << "\"\n"; + ss << ", \"global_input_state\" : null\n"; // TODO + ss << ", \"clock_tai_expiry\" : "; + + if (clocktai_expires_at) { + ss << *clocktai_expires_at; + } + else { + ss << "null"; + } + ss << "\n"; + + ss << ", \"inputs\" : \n"; + ss << get_input_values_json(); + ss << ",\n \"outputs\" : \n"; + ss << get_output_values_json(); + ss << "\n}"; + + return ss.str(); +} + std::string ManagementServer::get_input_config_json() { unique_lock lock(m_statsmutex); @@ -193,12 +218,12 @@ std::string ManagementServer::get_input_config_json() return ss.str(); } -std::string ManagementServer::get_input_values_json() +std::string ManagementServer::get_input_values_json() const { unique_lock lock(m_statsmutex); std::ostringstream ss; - ss << "{ \"values\" : {\n"; + ss << "{\n"; int i = 0; for (auto iter = m_input_stats.begin(); iter != m_input_stats.end(); @@ -215,17 +240,17 @@ std::string ManagementServer::get_input_values_json() ss << stats->encodeValuesJSON(); } - ss << "}\n}\n"; + ss << "}\n"; return ss.str(); } -std::string ManagementServer::get_output_values_json() +std::string ManagementServer::get_output_values_json() const { unique_lock lock(m_statsmutex); std::ostringstream ss; - ss << "{ \"output_values\" : {\n"; + ss << "{\n"; int i = 0; for (auto iter = m_output_stats.begin(); iter != m_output_stats.end(); @@ -240,7 +265,7 @@ std::string ManagementServer::get_output_values_json() num_connections << "} "; } - ss << "}\n}\n"; + ss << "}\n"; return ss.str(); } @@ -351,10 +376,18 @@ void ManagementServer::handle_message(zmq::message_t& zmq_message) answer << get_input_config_json(); } else if (data == "values") { - answer << get_input_values_json(); + std::ostringstream ss; + ss << "{ \"values\" : \n"; + ss << get_input_values_json(); + ss << "}"; + answer << ss.str(); } else if (data == "output_values") { - answer << get_output_values_json(); + std::ostringstream ss; + ss << "{ \"output_values\" : \n"; + ss << get_output_values_json(); + ss << "}"; + answer << ss.str(); } else if (data == "getptree") { unique_lock lock(m_configmutex); -- cgit v1.2.3