aboutsummaryrefslogtreecommitdiffstats
path: root/src/ManagementServer.cpp
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2025-12-22 17:01:16 +0100
committerMatthias P. Braendli <matthias.braendli@mpb.li>2025-12-22 17:01:16 +0100
commita11f3fa7440d9667656e92702dff6e18d623120a (patch)
treed7d2ebbdf674db5dbda445e23b9272b32154bc93 /src/ManagementServer.cpp
parent818fc4c700f04f8e178caeb109e2336ed01b7a5a (diff)
downloaddabmux-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.cpp49
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);