Commit 52b65d07 authored by garciay's avatar garciay
Browse files

GeoNetworking codecs & Layers ongoing

parent 612f663a
......@@ -12,12 +12,12 @@ void Params::convert(Params& p_param, const std::string p_parameters) {
}
// Extract parameters
try {
std::regex rgx ("((\\.*)\\s*=\\s*(\\.*))(,((\\.*)\\s*=\\s*(\\.*)))*");
std::regex rgx ("(\\w+)=(.*?)(,|$)");
std::sregex_iterator begin(p_parameters.cbegin(), p_parameters.cend(), rgx);
std::sregex_iterator end = std::sregex_iterator();
for (std::sregex_iterator it = begin; it != end; ++it) {
std::smatch m = *it;
loggers::loggers::log("Params::convert: %d - %s - %s - %s - %s - %s", m.size(), m[0].str().c_str(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str(), m[4].str().c_str());
loggers::loggers::log("Params::convert: %d - %s - %s - %s - %s", m.size(), m[0].str().c_str(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str());
p_param.insert(std::pair<std::string, std::string>(m[1].str(), m[2].str()));
} // End of 'for' statement
}
......
......@@ -13,20 +13,22 @@
namespace LibItsGeoNetworking__TestSystem {
GeoNetworkingPort::GeoNetworkingPort(const char *par_port_name)
: GeoNetworkingPort_BASE(par_port_name), _params(), _layer(NULL)
: GeoNetworkingPort_BASE(par_port_name), _cfg_params(), _layer_params(), _layer(NULL), _codec()
{
}
GeoNetworkingPort::~GeoNetworkingPort()
{
if (_layer != NULL) {
delete _layer;
}
}
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)));
_cfg_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,
......@@ -52,14 +54,19 @@ void GeoNetworkingPort::Handle_Fd_Event_Readable(int /*fd*/)
void GeoNetworkingPort::user_map(const char * system_port)
{
loggers::loggers::log("GeoNetworkingPort::user_map: %s", system_port);
std::map<std::string, std::string>::iterator it = _params.find(std::string("params"));
if (it != _params.end()) {
_layer = LayerStackBuilder::GetInstance()->createLayerStack(it->second.c_str());
std::map<std::string, std::string>::iterator it = _cfg_params.find(std::string("params"));
if (it != _cfg_params.end()) {
_layer = LayerStackBuilder::GetInstance()->createLayerStack(it->second.c_str());
}
}
void GeoNetworkingPort::user_unmap(const char * /*system_port*/)
void GeoNetworkingPort::user_unmap(const char * system_port)
{
loggers::loggers::log("GeoNetworkingPort::user_unmap: %s", system_port);
if (_layer != NULL) {
delete _layer;
_layer = NULL;
}
}
......@@ -73,8 +80,16 @@ void GeoNetworkingPort::user_stop()
}
void GeoNetworkingPort::outgoing_send(const GeoNetworkingReq& /*send_par*/)
void GeoNetworkingPort::outgoing_send(const GeoNetworkingReq& send_par)
{
loggers::loggers::log_msg(">>> GeoNetworkingPort::outgoing_send: payload=", send_par);
// TODO Does a port implement its layer
// TODO Does the port add additionnal values? Yes
OCTETSTRING data;
_codec.encode (send_par.msgOut(), data);
loggers::loggers::log_msg("GeoNetworkingPort::outgoing_send: Call Layer::sendData", data);
_layer->sendData(data, _layer_params);
}
......
......@@ -12,38 +12,42 @@
#include "LibItsGeoNetworking_TestSystem.hh"
#include "GeoNetworkingCodec.hh"
#include "GeoNetworkingLayer.hh"
#include "params.hh"
#include "Params.hh"
namespace LibItsGeoNetworking__TestSystem {
class GeoNetworkingPort : public GeoNetworkingPort_BASE {
params _params;
Layer * _layer;
Params _cfg_params;
Params _layer_params;
Layer * _layer;
GeoNetworkingCodec _codec;
public:
GeoNetworkingPort(const char *par_port_name = NULL);
~GeoNetworkingPort();
GeoNetworkingPort(const char *par_port_name = NULL);
~GeoNetworkingPort();
void set_parameter(const char *parameter_name,
const char *parameter_value);
void set_parameter(const char *parameter_name,
const char *parameter_value);
void receiveMsg (const LibItsGeoNetworking__TestSystem::GeoNetworkingInd&, const Params&) {};
void receiveMsg (const LibItsGeoNetworking__TestSystem::GeoNetworkingInd&, const Params&) {};
private:
/* void Handle_Fd_Event(int fd, boolean is_readable,
boolean is_writable, boolean is_error); */
void Handle_Fd_Event_Error(int fd);
void Handle_Fd_Event_Writable(int fd);
void Handle_Fd_Event_Readable(int fd);
/* void Handle_Timeout(double time_since_last_call); */
/* void Handle_Fd_Event(int fd, boolean is_readable,
boolean is_writable, boolean is_error); */
void Handle_Fd_Event_Error(int fd);
void Handle_Fd_Event_Writable(int fd);
void Handle_Fd_Event_Readable(int fd);
/* void Handle_Timeout(double time_since_last_call); */
protected:
void user_map(const char *system_port);
void user_unmap(const char *system_port);
void user_map(const char *system_port);
void user_unmap(const char *system_port);
void user_start();
void user_stop();
void user_start();
void user_stop();
void outgoing_send(const GeoNetworkingReq& send_par);
void outgoing_send(const GeoNetworkingReq& send_par);
};
} /* end of namespace */
......
......@@ -4,9 +4,12 @@
EthernetLayer::EthernetLayer(const std::string & type, const std::string & param) : EthernetLayer() {
loggers::loggers::log(">>> EthernetLayer::EthernetLayer: %s, %s", type.c_str(), param.c_str());
// Setup parameters
Params::convert(_params, param);
_params.log();
}
void EthernetLayer::sendData(const OCTETSTRING& data, const Params& params) {
loggers::loggers::log_msg(">>> EthernetLayer::sendData: ", data);
}
void EthernetLayer::receiveData(const OCTETSTRING& data, const Params& info) {
......
......@@ -2,10 +2,12 @@
#define ETHERNET_FINAL_LAYER_H
#include "Layer.hh"
#include "Params.hh"
class EthernetLayer : public Layer {
Params _params;
public:
inline EthernetLayer() : Layer() {}
inline EthernetLayer() : Layer(), _params() {}
EthernetLayer(const std::string & type, const std::string & param);
virtual ~EthernetLayer() {}
......
......@@ -10,12 +10,15 @@ class OCTETSTRING;
class TTCN_Typedescriptor_t;
class TTCN_Buffer;
namespace LibItsGeoNetworking__TypesAndValues {
class GeoNetworkingPdu;
class ExtendedHeader;
class DecodedPayload;
}
};
namespace LibItsSecurity__TypesAndValues {
class SecuredMessage;
};
struct Encoding_Context {
unsigned char next_header; // FIXME Useless?
......@@ -46,8 +49,6 @@ class GeoNetworkingCodec : public Codec<LibItsGeoNetworking__TypesAndValues::Geo
int encode_decodedPayload(const LibItsGeoNetworking__TypesAndValues::DecodedPayload& u, TTCN_Buffer& encoding_buffer);
int decode_ (Base_Type& type, const TTCN_Typedescriptor_t& field_descriptor, TTCN_Buffer& decoding_buffer);
int decode_extendedHeader(LibItsGeoNetworking__TypesAndValues::ExtendedHeader& u, TTCN_Buffer& decoding_buffer);
public:
GeoNetworkingCodec() : _ec(), _dc() {};
......
......@@ -5,7 +5,9 @@
GeoNetworkingLayer::GeoNetworkingLayer(const std::string & type, const std::string & param) : GeoNetworkingLayer() {
loggers::loggers::log(">>> GeoNetworkingLayer::GeoNetworkingLayer: %s, %s", type.c_str(), param.c_str());
// Setup parameters
Params::convert(_params, param);
_params.log();
}
void GeoNetworkingLayer::sendMsg(const LibItsGeoNetworking__TestSystem::GeoNetworkingReq& p, const Params& params) {
......
......@@ -10,8 +10,9 @@ namespace LibItsGeoNetworking__TestSystem {
class GeoNetworkingLayer : public TLayer<LibItsGeoNetworking__TestSystem::GeoNetworkingPort> {
GeoNetworkingCodec _codec;
Params _params;
public:
inline GeoNetworkingLayer():TLayer<LibItsGeoNetworking__TestSystem::GeoNetworkingPort>() {}
inline GeoNetworkingLayer() : TLayer<LibItsGeoNetworking__TestSystem::GeoNetworkingPort>(), _codec(), _params() {}
GeoNetworkingLayer(const std::string & type, const std::string & param);
virtual ~GeoNetworkingLayer(){}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment