diff options
| author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2025-12-22 17:01:16 +0100 |
|---|---|---|
| committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2025-12-22 17:01:16 +0100 |
| commit | a11f3fa7440d9667656e92702dff6e18d623120a (patch) | |
| tree | d7d2ebbdf674db5dbda445e23b9272b32154bc93 /src/ManagementServer.cpp | |
| parent | 818fc4c700f04f8e178caeb109e2336ed01b7a5a (diff) | |
| download | dabmux-a11f3fa7440d9667656e92702dff6e18d623120a.tar.gz dabmux-a11f3fa7440d9667656e92702dff6e18d623120a.tar.bz2 dabmux-a11f3fa7440d9667656e92702dff6e18d623120a.zip | |
Add http server with stats.json
Diffstat (limited to 'src/ManagementServer.cpp')
| -rw-r--r-- | src/ManagementServer.cpp | 49 |
1 files changed, 41 insertions, 8 deletions
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<int64_t> 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<mutex> 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<mutex> 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<mutex> 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<mutex> lock(m_configmutex); |
