28#ifndef SIM_TO_DUT_INTERFACE_CONFIGSERIALIZER_H
29#define SIM_TO_DUT_INTERFACE_CONFIGSERIALIZER_H
31#include <boost/archive/xml_oarchive.hpp>
32#include <boost/archive/xml_iarchive.hpp>
33#include <boost/serialization/set.hpp>
35#include <boost/serialization/utility.hpp>
36#include <boost/serialization/scoped_ptr.hpp>
37#include <boost/serialization/shared_ptr.hpp>
38#include <boost/algorithm//string.hpp>
41#include <linux/can/bcm.h>
42#include <boost/concept_check.hpp>
44#include "../DuT_Connectors/RESTDummyConnector/RESTConnectorConfig.h"
45#include "../DuT_Connectors/V2XConnector/V2XConnector.h"
46#include "../DuT_Connectors/CANConnector/CANConnectorConfig.h"
47#include "../DuT_Connectors/CANConnector/CANConnectorReceiveOperation.h"
48#include "../DuT_Connectors/CANConnector/CANConnectorSendOperation.h"
49#include "../DuT_Connectors/ConnectorConfig.h"
50#include "../Interface_Logger/InterfaceLogger.h"
51#include "ConfigSerializerCanConnector.h"
81 static void deserialize(std::istringstream &ifs,
const std::string &objName, T *obj) {
84 std::istringstream iss;
85 boost::archive::xml_iarchive ia(ifs, boost::archive::no_header);
86 ia & boost::serialization::make_nvp(objName.c_str(), *obj);
89 catch (boost::archive::archive_exception
const &e) {
114 static void serialize(
const std::string &file,
const std::string &objName, T &obj) {
115 std::ofstream ofs(file);
118 boost::archive::xml_oarchive oa(ofs, boost::archive::no_header);
119 oa << boost::serialization::make_nvp(objName.c_str(), obj);
145 template<
class Archive>
159 template<
class Archive>
161 const unsigned int version) {
162 ar & boost::serialization::make_nvp(
"operations", config->
operations);
163 ar & boost::serialization::make_nvp(
"periodicOperations", config->
periodicOperations);
179 template<
class Archive>
181 const unsigned int file_version) {
182 std::set<std::string> _operations;
183 std::map<std::string, int> _periodicOperations;
184 bool _periodicTimerEnabled;
186 ar >> boost::serialization::make_nvp(
"operations", _operations);
187 ar >> boost::serialization::make_nvp(
"periodicOperations", _periodicOperations);
188 ar >> boost::serialization::make_nvp(
"periodicTimerEnabled", _periodicTimerEnabled);
192 _periodicTimerEnabled);
207 template<
class Archive>
209 const unsigned int version) {}
221 template<
class Archive>
224 const unsigned int version) {
226 ar & boost::serialization::make_nvp(
"baseUrlDuT", config->
baseUrlDuT);
227 ar & boost::serialization::make_nvp(
"baseCallbackUrl", config->
baseCallbackUrl);
228 ar & boost::serialization::make_nvp(
"port", config->
port);
229 ar & boost::serialization::make_nvp(
"operations", config->
operations);
230 ar & boost::serialization::make_nvp(
"periodicOperations", config->
periodicOperations);
245 template<
class Archive>
248 const unsigned int file_version) {
249 std::string _baseUrlDuT;
250 std::string _baseCallbackUrl;
252 std::set<std::string> _operations;
253 std::map<std::string, int> _periodicOperations;
254 bool _periodicTimerEnabled;
256 ar >> boost::serialization::make_nvp(
"baseUrlDuT", _baseUrlDuT);
257 ar >> boost::serialization::make_nvp(
"baseCallbackUrl", _baseCallbackUrl);
258 ar >> boost::serialization::make_nvp(
"port", _port);
259 ar >> boost::serialization::make_nvp(
"operations", _operations);
260 ar >> boost::serialization::make_nvp(
"periodicOperations", _periodicOperations);
261 ar >> boost::serialization::make_nvp(
"periodicTimerEnabled", _periodicTimerEnabled);
266 _periodicTimerEnabled);
281 template<
class Archive>
283 const unsigned int version) {}
296 template<
class Archive>
299 const unsigned int version) {
301 ar & boost::serialization::make_nvp(
"ifname", config->
ifname);
302 ar & boost::serialization::make_nvp(
"ethernetFrameType", config->
ethernetFrameType);
329 template<
class Archive>
332 const unsigned int file_version) {
335 unsigned short _ethernetFrameType;
337 ar & boost::serialization::make_nvp(
"ifname", _ifname);
338 ar & boost::serialization::make_nvp(
"ethernetFrameType", helper);
342 if (boost::algorithm::contains(helper,
"0x")) {
343 std::stringstream ss;
344 ss << std::hex << helper;
345 ss >> _ethernetFrameType;
347 std::stringstream ss;
349 ss >> _ethernetFrameType;
ConfigSerializer: This class is for de-/ serializing the different connectorConfig types and overwrit...
Definition: ConfigSerializer.h:62
static void serialize(const std::string &file, const std::string &objName, T &obj)
Definition: ConfigSerializer.h:114
static void deserialize(std::istringstream &ifs, const std::string &objName, T *obj)
Definition: ConfigSerializer.h:81
static void logMessage(const std::string &msg, LOG_LEVEL level)
Definition: InterfaceLogger.cpp:271
Configuration for a single DuTConnector
Definition: ConnectorConfig.h:43
std::map< std::string, int > periodicOperations
Definition: ConnectorConfig.h:66
std::set< std::string > operations
Definition: ConnectorConfig.h:63
bool periodicTimerEnabled
Definition: ConnectorConfig.h:69
Configuration for the RESTDummyConnector, contains all necessary setup configuration to connect to Du...
Definition: RESTConnectorConfig.h:40
int port
Definition: RESTConnectorConfig.h:69
std::string baseUrlDuT
Definition: RESTConnectorConfig.h:61
std::string baseCallbackUrl
Definition: RESTConnectorConfig.h:65
Configuration for the V2XConnector, contains all necessary setup configuration to open a raw socket a...
Definition: V2XConnectorConfig.h:40
std::string ifname
Definition: V2XConnectorConfig.h:60
unsigned short ethernetFrameType
Definition: V2XConnectorConfig.h:65
Definition: ConfigSerializer.h:133
void load_construct_data(Archive &ar, sim_interface::dut_connector::ConnectorConfig *instance, const unsigned int file_version)
Definition: ConfigSerializer.h:180
void serialize(Archive &ar, sim_interface::dut_connector::ConnectorConfig &config, const unsigned int version)
Definition: ConfigSerializer.h:146
void save_construct_data(Archive &ar, const sim_interface::dut_connector::ConnectorConfig *config, const unsigned int version)
Definition: ConfigSerializer.h:160
Definition: CANConnector.cpp:29