Newer
Older
#include <Base_Packet.h>
#include <fstream>
#include <nlohmann/json.hpp>
/**
* @brief Represents a JSON packet structure for ASTRI DAQ.
*
* This class extends the BasePacketStructure class and provides functionality
* to convert JSON data into a tuple vector and read the structure from a source.
* The compatible json files are in config folder.
*/
class PacketStructureJson: public inaf::oasbo::Packets::BasePacketStructure {
/**
* @brief Converts JSON data into a tuple vector.
*
* @param data The JSON data to convert.
* @param count The count of tuples in the vector.
* @return An optional structure representing the tuple vector.
*/
static std::optional<Structure> convertToTupleVector(const ordered_json &data,
/**
* @brief Reads the packet structure from a source.
*
* @param source The source from which to read the structure.
* @return The structure read from the source.
*/
static Structure readStructureFromSource(std::string source);
/**
* @brief Constructs a PacketStructureJson object with the specified source.
*
* @param source The source from which to read the structure.
*/
PacketStructureJson(std::string source) :
BasePacketStructure(source, &readStructureFromSource) {
/**
* @brief Constructs a PacketStructureJson object from another BasePacketStructure object.
*
* @param other The BasePacketStructure object to copy from.
*/
PacketStructureJson(const BasePacketStructure &other) :
BasePacketStructure(other) {