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

GeoNetworking codecs & Layers ongoing

parent 612f663a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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
    }
+23 −8
Original line number Diff line number Diff line
@@ -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()) {
    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);

}

+23 −19
Original line number Diff line number Diff line
@@ -12,14 +12,18 @@

#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;
    Params _cfg_params;
    Params _layer_params;
    Layer * _layer;
    GeoNetworkingCodec _codec;

public:
    GeoNetworkingPort(const char *par_port_name = NULL);
    ~GeoNetworkingPort();
+3 −0
Original line number Diff line number Diff line
@@ -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) {
+3 −1
Original line number Diff line number Diff line
@@ -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() {}

Loading