JFJochHttpReader: Parse /status

This commit is contained in:
2026-03-04 14:07:21 +01:00
parent b6db6040e8
commit 5345b41e16
2 changed files with 51 additions and 0 deletions
+48
View File
@@ -8,6 +8,7 @@
#include "../frame_serialize/CBORStream2Deserializer.h"
#include "../broker/gen/model/Image_buffer_status.h"
#include "../broker/gen/model/Plots.h"
#include "../broker/gen/model/Broker_status.h"
#include "../image_analysis/bragg_integration/CalcISigma.h"
void JFJochHttpReader::Close() {
@@ -43,6 +44,53 @@ ImageBufferStatus JFJochHttpReader::GetImageBufferStatus() const {
}
}
BrokerStatus JFJochHttpReader::GetBrokerStatus() const {
httplib::Client cli_cmd(addr);
auto res = cli_cmd.Get("/status");
if (!res || res->status != httplib::StatusCode::OK_200)
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid,
"Could not get image buffer status");
try {
org::openapitools::server::model::Broker_status input = nlohmann::json::parse(res->body);
BrokerStatus ret{};
ret.broker_version = input.getBrokerVersion();
ret.gpu_count = input.getGpuCount();
if (input.progressIsSet())
ret.progress = input.getProgress();
if (input.getState() == "Inactive")
ret.state = JFJochState::Inactive;
else if (input.getState() == "Idle")
ret.state = JFJochState::Idle;
else if (input.getState() == "Measuring")
ret.state = JFJochState::Measuring;
else if (input.getState() == "Error")
ret.state = JFJochState::Error;
else if (input.getState() == "Busy")
ret.state = JFJochState::Busy;
else if (input.getState() == "Pedestal")
ret.state = JFJochState::Calibration;
if (input.getMessageSeverity() == "info")
ret.message_severity = BrokerStatus::MessageSeverity::Info;
else if (input.getMessageSeverity() == "success")
ret.message_severity = BrokerStatus::MessageSeverity::Success;
else if (input.getMessageSeverity() == "warning")
ret.message_severity = BrokerStatus::MessageSeverity::Warning;
else if (input.getMessageSeverity() == "error")
ret.message_severity = BrokerStatus::MessageSeverity::Error;
if (input.brokerVersionIsSet())
ret.broker_version = input.getBrokerVersion();
return ret;
} catch (std::exception &e) {
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid,
"Could not parse image buffer status");
}
}
uint64_t JFJochHttpReader::GetNumberOfImages() const {
std::unique_lock ul(http_mutex);