Loading ccsrc/Framework/Layer.hh +7 −7 Original line number Diff line number Diff line Loading @@ -12,17 +12,17 @@ class Layer { std::vector<Layer*> lowerLayers; public: Layer(){} virtual ~Layer(); void deleteLayer(); virtual ~Layer() {}; void deleteLayer() {}; public: void addUpperLayer(Layer*); void removeUpperLayer(Layer*); void addUpperLayer(Layer*) {}; void removeUpperLayer(Layer*) {}; virtual void sendData(const OCTETSTRING& data, const Params& params); virtual void receiveData(const OCTETSTRING& data, const Params& info); virtual void sendData(const OCTETSTRING& data, const Params& params) {}; virtual void receiveData(const OCTETSTRING& data, const Params& info) {}; protected: void toAllLayers(std::vector<Layer*>&layers, const OCTETSTRING& data, const Params& info); void toAllLayers(std::vector<Layer*>&layers, const OCTETSTRING& data, const Params& info) {}; inline void toAllUpperLayers(const OCTETSTRING& data, const Params& info) { toAllLayers(upperLayers, data, info); } inline void toAllLowerLayers(const OCTETSTRING& data, const Params& info) { toAllLayers(upperLayers, data, info); } inline void receiveToAllLayers(const OCTETSTRING& data, const Params& info) { toAllLayers(upperLayers, data, info); } Loading ccsrc/Framework/params.hh 0 → 100644 +5 −0 Original line number Diff line number Diff line #pragma once #include <map> typedef std::map<std::string, std::string> params; ccsrc/Framework/src/LayerFactory.cc +6 −6 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ #include <stdexcept> #include <regex> #include "loggers.hh" LayerStackBuilder * LayerStackBuilder::_instance = NULL; // static functions Loading @@ -26,8 +28,9 @@ void LayerStackBuilder::registerLayerFactory(const std::string & type, LayerFact Layer* LayerStackBuilder::createLayerStack(const char* s) { Layer * up = NULL; loggers::loggers::log(">>> LayerStackBuilder::createLayerStack: %s", s); Layer * up = NULL; //parse str std::regex rgx ("(\\w+)(\\((.*?)\\))?(\\/|$)"); std::smatch m; Loading @@ -35,11 +38,13 @@ Layer* LayerStackBuilder::createLayerStack(const char* s) try { while(std::regex_search(str, m, rgx)) { std::string mname = m[1]; loggers::loggers::log("LayerStackBuilder::createLayerStack: mname=%s", mname); LayerFactoryMap::iterator it =_fs.find(mname); if(it == _fs.end()){ throw (std::logic_error(mname + ": Unknown layer type")); } // TODO: parse parameters loggers::loggers::log("LayerStackBuilder::createLayerStack: Create layer %s", it->first); Layer * l = it->second->createLayer(mname, m[3]); if(NULL == l){ throw (std::logic_error(mname + ": Layer creation error")); Loading @@ -57,8 +62,3 @@ Layer* LayerStackBuilder::createLayerStack(const char* s) } return up; } void Layer::deleteLayer() { } ccsrc/Ports/LibIts_ports/GN_ports/GeoNetworkingPort.cc +10 −5 Original line number Diff line number Diff line Loading @@ -8,11 +8,12 @@ // add your member functions here. #include "GeoNetworkingPort.hh" #include "loggers.hh" namespace LibItsGeoNetworking__TestSystem { GeoNetworkingPort::GeoNetworkingPort(const char *par_port_name) : GeoNetworkingPort_BASE(par_port_name) : GeoNetworkingPort_BASE(par_port_name), _params(), _layer(NULL) { } Loading @@ -22,10 +23,10 @@ GeoNetworkingPort::~GeoNetworkingPort() } void GeoNetworkingPort::set_parameter(const char * /*parameter_name*/, const char * /*parameter_value*/) void GeoNetworkingPort::set_parameter(const char * parameter_name, const char * parameter_value) { loggers::loggers::log("GeoNetworkingPort::set_parameter: %s=%s", parameter_name, parameter_value); _params.insert(std::pair<std::string, std::string>(std::string(parameter_name), std::string(parameter_value))); } /*void GeoNetworkingPort::Handle_Fd_Event(int fd, boolean is_readable, Loading @@ -48,8 +49,12 @@ void GeoNetworkingPort::Handle_Fd_Event_Readable(int /*fd*/) /*void GeoNetworkingPort::Handle_Timeout(double time_since_last_call) {}*/ void GeoNetworkingPort::user_map(const char * /*system_port*/) void GeoNetworkingPort::user_map(const char * system_port) { loggers::loggers::log("GeoNetworkingPort::user_map: %s", system_port); //if (strcmp(parameter_name, "geoNetworkingPort") == 0); // _layer = LayerStackBuilder::GetInstance()->createLayerStack("ETH(src_addr=00:00:00:00:00:00,FF:FF:FF:FF:Fsrc_addr=00:00:00:00:00:00,FF:FF:FF:FF:F)"); //} } Loading ccsrc/Ports/LibIts_ports/GN_ports/GeoNetworkingPort.hh +3 −0 Original line number Diff line number Diff line Loading @@ -13,10 +13,13 @@ #include "LibItsGeoNetworking_TestSystem.hh" #include "GeoNetworkingLayer.hh" #include "params.hh" namespace LibItsGeoNetworking__TestSystem { class GeoNetworkingPort : public GeoNetworkingPort_BASE { params _params; Layer * _layer; public: GeoNetworkingPort(const char *par_port_name = NULL); ~GeoNetworkingPort(); Loading Loading
ccsrc/Framework/Layer.hh +7 −7 Original line number Diff line number Diff line Loading @@ -12,17 +12,17 @@ class Layer { std::vector<Layer*> lowerLayers; public: Layer(){} virtual ~Layer(); void deleteLayer(); virtual ~Layer() {}; void deleteLayer() {}; public: void addUpperLayer(Layer*); void removeUpperLayer(Layer*); void addUpperLayer(Layer*) {}; void removeUpperLayer(Layer*) {}; virtual void sendData(const OCTETSTRING& data, const Params& params); virtual void receiveData(const OCTETSTRING& data, const Params& info); virtual void sendData(const OCTETSTRING& data, const Params& params) {}; virtual void receiveData(const OCTETSTRING& data, const Params& info) {}; protected: void toAllLayers(std::vector<Layer*>&layers, const OCTETSTRING& data, const Params& info); void toAllLayers(std::vector<Layer*>&layers, const OCTETSTRING& data, const Params& info) {}; inline void toAllUpperLayers(const OCTETSTRING& data, const Params& info) { toAllLayers(upperLayers, data, info); } inline void toAllLowerLayers(const OCTETSTRING& data, const Params& info) { toAllLayers(upperLayers, data, info); } inline void receiveToAllLayers(const OCTETSTRING& data, const Params& info) { toAllLayers(upperLayers, data, info); } Loading
ccsrc/Framework/params.hh 0 → 100644 +5 −0 Original line number Diff line number Diff line #pragma once #include <map> typedef std::map<std::string, std::string> params;
ccsrc/Framework/src/LayerFactory.cc +6 −6 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ #include <stdexcept> #include <regex> #include "loggers.hh" LayerStackBuilder * LayerStackBuilder::_instance = NULL; // static functions Loading @@ -26,8 +28,9 @@ void LayerStackBuilder::registerLayerFactory(const std::string & type, LayerFact Layer* LayerStackBuilder::createLayerStack(const char* s) { Layer * up = NULL; loggers::loggers::log(">>> LayerStackBuilder::createLayerStack: %s", s); Layer * up = NULL; //parse str std::regex rgx ("(\\w+)(\\((.*?)\\))?(\\/|$)"); std::smatch m; Loading @@ -35,11 +38,13 @@ Layer* LayerStackBuilder::createLayerStack(const char* s) try { while(std::regex_search(str, m, rgx)) { std::string mname = m[1]; loggers::loggers::log("LayerStackBuilder::createLayerStack: mname=%s", mname); LayerFactoryMap::iterator it =_fs.find(mname); if(it == _fs.end()){ throw (std::logic_error(mname + ": Unknown layer type")); } // TODO: parse parameters loggers::loggers::log("LayerStackBuilder::createLayerStack: Create layer %s", it->first); Layer * l = it->second->createLayer(mname, m[3]); if(NULL == l){ throw (std::logic_error(mname + ": Layer creation error")); Loading @@ -57,8 +62,3 @@ Layer* LayerStackBuilder::createLayerStack(const char* s) } return up; } void Layer::deleteLayer() { }
ccsrc/Ports/LibIts_ports/GN_ports/GeoNetworkingPort.cc +10 −5 Original line number Diff line number Diff line Loading @@ -8,11 +8,12 @@ // add your member functions here. #include "GeoNetworkingPort.hh" #include "loggers.hh" namespace LibItsGeoNetworking__TestSystem { GeoNetworkingPort::GeoNetworkingPort(const char *par_port_name) : GeoNetworkingPort_BASE(par_port_name) : GeoNetworkingPort_BASE(par_port_name), _params(), _layer(NULL) { } Loading @@ -22,10 +23,10 @@ GeoNetworkingPort::~GeoNetworkingPort() } void GeoNetworkingPort::set_parameter(const char * /*parameter_name*/, const char * /*parameter_value*/) void GeoNetworkingPort::set_parameter(const char * parameter_name, const char * parameter_value) { loggers::loggers::log("GeoNetworkingPort::set_parameter: %s=%s", parameter_name, parameter_value); _params.insert(std::pair<std::string, std::string>(std::string(parameter_name), std::string(parameter_value))); } /*void GeoNetworkingPort::Handle_Fd_Event(int fd, boolean is_readable, Loading @@ -48,8 +49,12 @@ void GeoNetworkingPort::Handle_Fd_Event_Readable(int /*fd*/) /*void GeoNetworkingPort::Handle_Timeout(double time_since_last_call) {}*/ void GeoNetworkingPort::user_map(const char * /*system_port*/) void GeoNetworkingPort::user_map(const char * system_port) { loggers::loggers::log("GeoNetworkingPort::user_map: %s", system_port); //if (strcmp(parameter_name, "geoNetworkingPort") == 0); // _layer = LayerStackBuilder::GetInstance()->createLayerStack("ETH(src_addr=00:00:00:00:00:00,FF:FF:FF:FF:Fsrc_addr=00:00:00:00:00:00,FF:FF:FF:FF:F)"); //} } Loading
ccsrc/Ports/LibIts_ports/GN_ports/GeoNetworkingPort.hh +3 −0 Original line number Diff line number Diff line Loading @@ -13,10 +13,13 @@ #include "LibItsGeoNetworking_TestSystem.hh" #include "GeoNetworkingLayer.hh" #include "params.hh" namespace LibItsGeoNetworking__TestSystem { class GeoNetworkingPort : public GeoNetworkingPort_BASE { params _params; Layer * _layer; public: GeoNetworkingPort(const char *par_port_name = NULL); ~GeoNetworkingPort(); Loading