Commit 84d345d9 authored by garciay's avatar garciay
Browse files

Layers ongoing

parent 180a0d5b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ INTEGER fx__dec__BtpPayload(BITSTRING& b, LibItsBtp__TypesAndValues::BtpPayload&
}
*/

BITSTRING fx__enc__BtpReq(LibItsBtp__TestSystem::BtpReq const&)
/*BITSTRING fx__enc__BtpReq(LibItsBtp__TestSystem::BtpReq const&)
{
  return int2bit(0,8);
}
@@ -31,7 +31,7 @@ BITSTRING fx__enc__BtpReq(LibItsBtp__TestSystem::BtpReq const&)
INTEGER fx__dec__BtpInd(BITSTRING&, LibItsBtp__TestSystem::BtpInd&)
{
  return 0;
}
}*/

} //end namespace
+2 −2
Original line number Diff line number Diff line
@@ -9,13 +9,13 @@ namespace LibItsDenm__EncdecDeclarations {
BITSTRING fx__enc__DenmReq(const LibItsDenm__TestSystem::DenmReq& p)
{
  //set error behavior
  TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL,TTCN_EncDec::EB_WARNING);
//  TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL,TTCN_EncDec::EB_WARNING);

  TTCN_Buffer TTCN_buf;
  TTCN_buf.clear();

//encode message in BER (CER variant, but can be any)
  p.msgOut().encode(DENM__PDU__Descriptions::DENM_descr_,TTCN_buf,TTCN_EncDec::CT_BER,BER_ENCODE_CER);
//  p.msgOut().encode(DENM__PDU__Descriptions::DENM_descr_,TTCN_buf,TTCN_EncDec::CT_BER,BER_ENCODE_CER);


  OCTETSTRING encodedData(TTCN_buf.get_len(), TTCN_buf.get_data());
+11 −4
Original line number Diff line number Diff line
#ifndef CODEC_H
#define CODEC_H

#include "loggers.hh"

class OCTETSTRING;
class CHARSTRING;
class BITSTRING;

template<typename TPDUEnc, typename TPDUDec> class Codec
{
public:
  Codec() { loggers::loggers::log("Codec::Codec"); };
  virtual ~Codec() { loggers::loggers::log("Codec::~Codec"); };
  virtual int encode(const TPDUEnc& msg, OCTETSTRING& data) = 0;
  virtual int decode(const OCTETSTRING& data, TPDUDec& msg) = 0;
};
@@ -12,8 +19,8 @@ public:
template<typename TPDU> class PERCodec
{
public:
	virtual int encode(const TPDU& msg, BITSTRING& bits);
	virtual int decode(const BITSTRING& bits, TPDU& msg);
  virtual int encode(const TPDU& msg, BITSTRING& bits) {return -1;};
  virtual int decode(const BITSTRING& bits, TPDU& msg) {return -1;};
};

#endif
+28 −11
Original line number Diff line number Diff line
#ifndef LAYER_HH
#define LAYER_HH

#include <string>
#include <map>
#include <vector>
@@ -16,7 +17,8 @@ class Layer {
protected:
  std::string type;
public:
  Layer(const std::string& p_type) : upperLayers(), lowerLayers(), type(std::string(p_type.begin(), p_type.end())) {};
  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"); };
  virtual ~Layer() { upperLayers.clear(); lowerLayers.clear(); };
  void deleteLayer() { };
public:
@@ -32,24 +34,38 @@ public:
  void removeUpperLayer(Layer* p_layer) {  };

  virtual void sendData(const OCTETSTRING& data, const Params& params) {};
  virtual void receiveData(OCTETSTRING& data, Params& info) {};
  virtual void receiveData(OCTETSTRING& data, Params& params) {};

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

protected:
  inline void toAllLayers(std::vector<Layer*>&layers, OCTETSTRING& data, Params& info) {
  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());
    for (std::vector<Layer*>::const_iterator it = layers.cbegin(); it != layers.cend(); ++it) {
      Layer * p = *it;
      p->receiveData(data, info);
      p->receiveData(data, params); // FIXME BUG I 
    } // End of 'for' statement
  };
  //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());
    for (std::vector<Layer*>::const_iterator it = upperLayers.cbegin(); it != upperLayers.cend(); ++it) {
      Layer * p = *it;
      p->receiveData(data, params);
    } // End of 'for' statement
  };
  inline void toAllUpperLayers(OCTETSTRING& data, Params& info) { toAllLayers(upperLayers, data, info); }
  inline void toAllLowerLayers(OCTETSTRING& data, Params& info) { toAllLayers(lowerLayers, data, info); }
  inline void receiveToAllLayers(OCTETSTRING& data, Params& info) { toAllLayers(upperLayers, data, info); }
  inline void sendToAllLayers(OCTETSTRING& data, Params& info)  { toAllLayers(lowerLayers, data, info); }
  inline void sendToAllLayers(OCTETSTRING& data, Params& params)  {
    //loggers::loggers::log_msg(">>> Layer::sendToAllLayers: ", data);
    loggers::loggers::log(">>> Layer::sendToAllLayers: %d", lowerLayers.size());
    for (std::vector<Layer*>::const_iterator it = lowerLayers.cbegin(); it != lowerLayers.cend(); ++it) {
      Layer * p = *it;
      p->sendData(data, params);
    } // End of 'for' statement
  };
}; // End of class Layer


template <typename TPort> class TLayer : public Layer {
@@ -59,7 +75,8 @@ template <typename TPort> class TLayer : public Layer {
  TPortList upperPorts;
  
public:
  TLayer(const std::string& p_type) : Layer(p_type), upperPorts() {};
  TLayer() : Layer(), upperPorts() { loggers::loggers::log("TLayer::TLayer (D)"); };
  TLayer(const std::string& p_type) : Layer(p_type), upperPorts() { loggers::loggers::log("TLayer::TLayer"); };
  void addUpperPort(TPort * p_port) { upperPorts.push_back(p_port); };
  void removeUpperPort(TPort*);

@@ -75,7 +92,7 @@ protected:

class LayerFactory {
public:
  LayerFactory(){}
  LayerFactory() {};
  virtual Layer * createLayer(const std::string & type, const std::string & param) = 0;
};

+9 −6
Original line number Diff line number Diff line
@@ -2,10 +2,13 @@

#include <map>

#include "loggers.hh"

class Params : public std::map<std::string, std::string> {
public:
    Params() : std::map<std::string, std::string>() {};
    Params(const Params& p_params);
  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)"); };
  
  virtual ~Params() {};
  void log();
  static void convert(Params& p_param, const std::string p_parameters);
Loading