BTPLayer.cc 1.72 KB
Newer Older
#include "BTPLayer.hh"
#include "BTPTypes.hh"
filatov's avatar
filatov committed

garciay's avatar
garciay committed
#include "loggers.hh"

BTPLayer::BTPLayer(const std::string & p_type, const std::string & param) : TLayer<LibItsBtp__TestSystem::BtpPort>(p_type), _params(), _codec() {
  loggers::get_instance().log(">>> BTPLayer::BTPLayer: %s, %s", to_string().c_str(), param.c_str());
  // Setup parameters
  Params::convert(_params, param);
}

void BTPLayer::sendMsg(const LibItsBtp__TestSystem::BtpReq& p, const Params& params){
  loggers::get_instance().log(">>> BTPLayer::sendMsg");

  // Encode BTP PDU
filatov's avatar
filatov committed
  OCTETSTRING data;
garciay's avatar
garciay committed
  _codec.encode(p.msgOut(), data);
  // Update parameters
  Params par(params); // FIXME Review all const Param& in method declarations
  sendData(data, par);
garciay's avatar
garciay committed
void BTPLayer::sendData(OCTETSTRING& data, Params& params) {
  loggers::get_instance().log_msg(">>> BTPLayer::sendData: ", data);
  params.log();  
filatov's avatar
filatov committed
  sendToAllLayers(data, params);
}
garciay's avatar
garciay committed
void BTPLayer::receiveData(OCTETSTRING& data, Params& params)
filatov's avatar
filatov committed
{
garciay's avatar
garciay committed
  loggers::get_instance().log_msg(">>> BTPLayer::receiveData: ", data);
  // Decode the payload
  LibItsBtp__TestSystem::BtpInd p;
  _codec.decode(data, p.msgIn());
  
  // Send it to the ports
  toAllUpperPorts(p, params);
filatov's avatar
filatov committed
}

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

BTPFactory::BTPFactory(){
garciay's avatar
garciay committed
  // Register factory
  loggers::get_instance().log(">>> BTPFactory::BTPFactory");
  LayerStackBuilder::RegisterLayerFactory("BTP", this);
garciay's avatar
garciay committed
Layer * BTPFactory::createLayer(const std::string & p_type, const std::string & param){
garciay's avatar
garciay committed
  return new BTPLayer(p_type, param);
filatov's avatar
filatov committed
}

BTPFactory BTPFactory::_f;