/*
 * PacketLib.h
 *
 *  Created on: Nov 24, 2022
 *      Author: valerio
 */

#ifndef INCLUDE_INAF_OAS_PACKET_STRUCTURE_JSON_H_
#define INCLUDE_INAF_OAS_PACKET_STRUCTURE_JSON_H_

#include <Base_Packet.h>
#include <fstream>
#include <nlohmann/json.hpp>

namespace inaf::oasbo::Packets {

class PacketStructureJson : public inaf::oasbo::PacketLib::BasePacketStructure {

protected:
	std::vector<std::tuple<uint, std::string, uint>> convertToTupleVector(const nlohmann::json &data,
			uint &count);

public:
	std::vector<std::tuple<uint, std::string, uint>> readStructureFromSource(
			std::string source) override;
	PacketStructureJson(std::string source) : BasePacketStructure(source){
		updateStructure(this->source);
	}

	PacketStructureJson(const BasePacketStructure &other) : BasePacketStructure(other){
	}
};
}

#endif /* INCLUDE_INAF_OAS_PACKET_STRUCTURE_JSON_H_ */