Commit 2ffb2ebc authored by garciay's avatar garciay
Browse files

Layers ongoing

parent 1707a285
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -10,8 +10,8 @@ class BITSTRING;
template<typename TPDUEnc, typename TPDUDec> class Codec
{
public:
  Codec() { loggers::loggers::log("Codec::Codec"); };
  virtual ~Codec() { loggers::loggers::log("Codec::~Codec"); };
  Codec() { loggers::get_instance().log("Codec::Codec"); };
  virtual ~Codec() { loggers::get_instance().log("Codec::~Codec"); };
  virtual int encode(const TPDUEnc& msg, OCTETSTRING& data) = 0;
  virtual int decode(const OCTETSTRING& data, TPDUDec& msg) = 0;
};
+18 −16
Original line number Diff line number Diff line
@@ -17,31 +17,31 @@ class Layer {
protected:
  std::string type;
public:
  Layer() : upperLayers(), lowerLayers(), type(std::string("")) { loggers::loggers::log("Layer::Layer (D)"); };
  Layer(const std::string& p_type) : upperLayers(), lowerLayers(), type(std::string(p_type.begin(), p_type.end())) { loggers::loggers::log("Layer::Layer"); };
  Layer() : upperLayers(), lowerLayers(), type(std::string("")) { loggers::get_instance().log("Layer::Layer (D)"); };
  Layer(const std::string& p_type) : upperLayers(), lowerLayers(), type(std::string(p_type.begin(), p_type.end())) { loggers::get_instance().log("Layer::Layer"); };
  virtual ~Layer() { upperLayers.clear(); lowerLayers.clear(); };
  void deleteLayer() { };
public:
  inline void addUpperLayer(Layer* p_layer) { 
    //loggers::loggers::log(">>> Layer::addUpperLayer");
    //loggers::get_instance().log(">>> Layer::addUpperLayer");
    if (p_layer != NULL) {
      loggers::loggers::log("Layer::addUpperLayer: %s is upper layer of %s", p_layer->to_string().c_str(), to_string().c_str());
      loggers::get_instance().log("Layer::addUpperLayer: %s is upper layer of %s", p_layer->to_string().c_str(), to_string().c_str());
      upperLayers.push_back(p_layer);
      loggers::loggers::log(" Layer::addUpperLayer: %s is loweer layer of %s", to_string().c_str(), p_layer->to_string().c_str());
      loggers::get_instance().log(" Layer::addUpperLayer: %s is lower layer of %s", to_string().c_str(), p_layer->to_string().c_str());
      p_layer->lowerLayers.push_back(this);
    };
  };
  void removeUpperLayer(Layer* p_layer) {  };

  virtual void sendData(const OCTETSTRING& data, const Params& params) {};
  virtual void receiveData(OCTETSTRING& data, Params& params) {};
  virtual void sendData(OCTETSTRING& data, Params& params) { loggers::get_instance().log("Layer::sendData"); };
  virtual void receiveData(OCTETSTRING& data, Params& params) { loggers::get_instance().log("Layer::receiveData"); }

  inline const std::string& to_string() const { return type; };

protected:
  inline void toAllLayers(std::vector<Layer*>&layers, OCTETSTRING& data, Params& params) {
    //loggers::loggers::log_msg(">>> Layer::toAllLayer: ", data);
    loggers::loggers::log(">>> Layer::toAllLayer: %d", layers.size());
    //loggers::get_instance().log_msg(">>> Layer::toAllLayer: ", data);
    loggers::get_instance().log(">>> Layer::toAllLayer: %d", layers.size());
    for (std::vector<Layer*>::const_iterator it = layers.cbegin(); it != layers.cend(); ++it) {
      Layer * p = *it;
      p->receiveData(data, params); // FIXME BUG I 
@@ -50,18 +50,20 @@ protected:
  //inline void toAllUpperLayers(OCTETSTRING& data, Params& params) { toAllLayers(upperLayers, data, params); } // TODO Useless??
  //inline void toAllLowerLayers(OCTETSTRING& data, Params& params) { toAllLayers(lowerLayers, data, params); } // TODO Useless??
  inline void receiveToAllLayers(OCTETSTRING& data, Params& params) {
    //loggers::loggers::log_msg(">>> Layer::receiveToAllLayers: ", data);
    loggers::loggers::log(">>> Layer::receiveToAllLayers: %d", upperLayers.size());
    //loggers::get_instance().log_msg(">>> Layer::receiveToAllLayers: ", data);
    loggers::get_instance().log(">>> Layer::receiveToAllLayers: %d", upperLayers.size());
    for (std::vector<Layer*>::const_iterator it = upperLayers.cbegin(); it != upperLayers.cend(); ++it) {
      Layer * p = *it;
      loggers::get_instance().log("Layer::receiveToAllLayers: call Layer::receiveData for %s", p->to_string().c_str()); 
      p->receiveData(data, params);
    } // End of 'for' statement
  };
  inline void sendToAllLayers(OCTETSTRING& data, Params& params)  {
    //loggers::loggers::log_msg(">>> Layer::sendToAllLayers: ", data);
    loggers::loggers::log(">>> Layer::sendToAllLayers: %d", lowerLayers.size());
    //loggers::get_instance().log_msg(">>> Layer::sendToAllLayers: ", data);
    loggers::get_instance().log(">>> Layer::sendToAllLayers: %d", lowerLayers.size());
    for (std::vector<Layer*>::const_iterator it = lowerLayers.cbegin(); it != lowerLayers.cend(); ++it) {
      Layer * p = *it;
      loggers::get_instance().log("Layer::sendToAllLayers: call Layer::sendData for %s", p->to_string().c_str()); 
      p->sendData(data, params);
    } // End of 'for' statement
  };
@@ -75,14 +77,14 @@ template <typename TPort> class TLayer : public Layer {
  TPortList upperPorts;
  
public:
  TLayer() : Layer(), upperPorts() { loggers::loggers::log("TLayer::TLayer (D)"); };
  TLayer(const std::string& p_type) : Layer(p_type), upperPorts() { loggers::loggers::log("TLayer::TLayer"); };
  TLayer() : Layer(), upperPorts() { loggers::get_instance().log("TLayer::TLayer (D)"); };
  TLayer(const std::string& p_type) : Layer(p_type), upperPorts() { loggers::get_instance().log("TLayer::TLayer"); };
  void addUpperPort(TPort * p_port) { upperPorts.push_back(p_port); };
  void removeUpperPort(TPort*);

protected:
  template <typename TMessage> void toAllUpperPorts(const TMessage& m, const Params& param) {
    loggers::loggers::log(">>> TLayer::toAllUpperPorts: %d", upperPorts.size());
    loggers::get_instance().log(">>> TLayer::toAllUpperPorts: %d", upperPorts.size());
    for(TPortListIterator it=upperPorts.begin(); it<upperPorts.end(); ++it){
      (*it)->receiveMsg(m, param);
    }
+2 −4
Original line number Diff line number Diff line
@@ -2,12 +2,10 @@

#include <map>

#include "loggers.hh"

class Params : public std::map<std::string, std::string> {
public:
  Params() : std::map<std::string, std::string>() { loggers::loggers::log("Params::Params"); };
  Params(const Params& p_params) : std::map<std::string, std::string>(p_params.begin(), p_params.end()) { loggers::loggers::log("Params::Params (1)"); };
  Params() : std::map<std::string, std::string>() {};
  Params(const Params& p_params) : std::map<std::string, std::string>(p_params.begin(), p_params.end()) {};
  
  virtual ~Params() {};
  void log();
+6 −6
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ void LayerStackBuilder::registerLayerFactory(const std::string & type, LayerFact

Layer* LayerStackBuilder::createLayerStack(const char* s)
{
  loggers::loggers::log(">>> LayerStackBuilder::createLayerStack: %s", s);
  loggers::get_instance().log(">>> LayerStackBuilder::createLayerStack: %s", s);

  Layer * entry = NULL; // Initial layer (the first declared)
  Layer * up = NULL; // Upper layer
@@ -41,18 +41,18 @@ Layer* LayerStackBuilder::createLayerStack(const char* s)
    std::sregex_iterator end = std::sregex_iterator();
    for (std::sregex_iterator it = begin; it != end; ++it) {
      std::smatch m = *it;
      //loggers::loggers::log("LayerStackBuilder::createLayerStack: %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());
      //loggers::get_instance().log("LayerStackBuilder::createLayerStack: %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());
      LayerFactoryMap::iterator i =_fs.find(m[1].str());
      if (i == _fs.end()) {
	loggers::loggers::error("LayerStackBuilder::createLayerStack: %s: Unknown layer type", m[1].str().c_str());
	loggers::get_instance().error("LayerStackBuilder::createLayerStack: %s: Unknown layer type", m[1].str().c_str());
      }
      loggers::loggers::log("LayerStackBuilder::createLayerStack: Create layer %s, %s", m[1].str().c_str(), m[3].str().c_str());
      loggers::get_instance().log("LayerStackBuilder::createLayerStack: Create layer %s, %s", m[1].str().c_str(), m[3].str().c_str());
      Layer * l = i->second->createLayer(m[1].str(), m[3].str());
      if (NULL == l) {
	loggers::loggers::error("LayerStackBuilder::createLayerStack: %s: Layer creation error", m[1].str().c_str());
	loggers::get_instance().error("LayerStackBuilder::createLayerStack: %s: Layer creation error", m[1].str().c_str());
      }

      loggers::loggers::log("LayerStackBuilder::createLayerStack: Setup layers for %s", l->to_string().c_str());
      loggers::get_instance().log("LayerStackBuilder::createLayerStack: Setup layers for %s", l->to_string().c_str());
      l->addUpperLayer(up);
      if (entry == NULL) { // Set the first declared layer
	entry = l;
+4 −4
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@
#include "loggers.hh"

void Params::convert(Params& p_param, const std::string p_parameters) {
    //loggers::loggers::log(">>> Params::convert: '%s'", p_parameters.c_str());
    //loggers::get_instance().log(">>> Params::convert: '%s'", p_parameters.c_str());
    // Sanity checks
    if (p_parameters.length() == 0) {
        return;
@@ -17,7 +17,7 @@ void Params::convert(Params& p_param, const std::string p_parameters) {
        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", m.size(), m[0].str().c_str(), m[1].str().c_str(), m[2].str().c_str(), m[3].str().c_str());
            //loggers::get_instance().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
    }
@@ -27,8 +27,8 @@ void Params::convert(Params& p_param, const std::string p_parameters) {
}

void Params::log() {
    loggers::loggers::log("Params::log");
    loggers::get_instance().log("Params::log");
    for (const_iterator it = cbegin(); it != cend(); ++it) {
        loggers::loggers::log("\t(%s, %s)", it->first.c_str(), it->second.c_str());
        loggers::get_instance().log("\t(%s, %s)", it->first.c_str(), it->second.c_str());
    } // End of 'for' statement
}
Loading