#include "data_handler.h" #include "spdlog/spdlog.h" #include "vendor/nlohmann/json.hpp" using json = nlohmann::json; DataHandler::DataHandler(MqttClient& client) : m_client(client) {} void DataHandler::handle(mqtt::const_message_ptr msg) { const auto& input_topic = msg->get_topic(); const auto& payload_str = msg->get_payload_str(); spdlog::debug("DataHandler received data from topic: {}", input_topic); try { auto payload_json = json::parse(payload_str); payload_json["_proxy_source_topic"] = input_topic; payload_json["_proxy_processed_ts"] = time(nullptr); const std::string output_topic = "proxy/processed/data"; m_client.publish(output_topic, payload_json.dump()); spdlog::debug("Successfully forwarded data from '{}' to '{}'", input_topic, output_topic); } catch (const json::parse_error& e) { spdlog::error("JSON parse error in DataHandler for topic '{}': {}", input_topic, e.what()); } }