Initial idea

This commit is contained in:
2026-03-28 12:05:34 +11:00
commit 6c6bb79cab
21 changed files with 3860 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
#pragma once
#ifndef ANSCLOUD_COMMON_JSON_SERIALIZER_H
#define ANSCLOUD_COMMON_JSON_SERIALIZER_H
#include "types.h"
#include <string>
#include <vector>
namespace anscloud {
namespace json {
// Serialization (struct -> JSON string)
std::string serialize(const Heartbeat& hb);
std::string serialize(const DeviceTelemetry& tel);
std::string serialize(const SystemMetrics& m);
std::string serialize(const Command& cmd);
std::string serialize(const CommandResponse& resp);
std::string serialize(const DeviceEvent& evt);
std::string serialize(const DeviceStatusMessage& msg);
std::string serialize(const CameraInfo& cam);
std::string serialize(const std::vector<CameraInfo>& cams);
std::string serialize(const DeviceState& state);
std::string serialize(const std::vector<DeviceState>& states);
std::string serialize(const CommandResult& result);
// Deserialization (JSON string -> struct)
Heartbeat deserialize_heartbeat(const std::string& json);
DeviceTelemetry deserialize_telemetry(const std::string& json);
SystemMetrics deserialize_metrics(const std::string& json);
Command deserialize_command(const std::string& json);
CommandResponse deserialize_response(const std::string& json);
DeviceEvent deserialize_event(const std::string& json);
DeviceStatusMessage deserialize_status_message(const std::string& json);
CameraInfo deserialize_camera(const std::string& json);
std::vector<CameraInfo> deserialize_cameras(const std::string& json);
DeviceState deserialize_device_state(const std::string& json);
std::vector<DeviceState> deserialize_device_states(const std::string& json);
CommandResult deserialize_command_result(const std::string& json);
// Utility
std::string now_iso8601();
std::string generate_uuid();
} // namespace json
} // namespace anscloud
#endif // ANSCLOUD_COMMON_JSON_SERIALIZER_H