Commit c4b2f3a9 authored by Yann Garcia's avatar Yann Garcia
Browse files

Titaniozation od LibDiameter and LibSip

parent 1732cd18
Loading
Loading
Loading
Loading
+5 −112
Original line number Diff line number Diff line
#include "LibSip_Interface.hh"
#include "LibSip_SIPTypesAndValues.hh"
#include "LibDiameter_Interface.hh"
#include "LibDiameter_TypesAndValues.hh"

#include "diameter_layer_factory.hh"

@@ -13,105 +13,15 @@ diameter_layer::diameter_layer(const std::string & p_type, const std::string & p
  params::convert(_params, p_param);
}

void diameter_layer::sendMsg(const LibDiameter__SIPTypesAndValues::REGISTER__Request& p_diameter_message, params& p_param) {
void diameter_layer::sendMsg(const LibDiameter__TypesAndValues::DIAMETER__MSG& p_diameter_message, params& p_param) {
  loggers::get_instance().log_msg(">>> diameter_layer::sendMsg: ", p_diameter_message);

  // Encode SipMessage
  // Encode DiameterMessage
  OCTETSTRING data;
  _codec_register.encode(p_diameter_message, data);
  send_data(data, _params);
}

void diameter_layer::sendMsg(const LibDiameter__SIPTypesAndValues::INVITE__Request& p_diameter_message, params& p_param) {
  loggers::get_instance().log_msg(">>> diameter_layer::sendMsg: ", p_diameter_message);

  // Encode SipMessage
  OCTETSTRING data;
  _codec_invite.encode(p_diameter_message, data);
  send_data(data, _params);
}

void diameter_layer::sendMsg(const LibDiameter__SIPTypesAndValues::ACK__Request& p_diameter_message, params& p_param) {
  loggers::get_instance().log_msg(">>> diameter_layer::sendMsg: ", p_diameter_message);

  // Encode SipMessage
  OCTETSTRING data;
  _codec_ack.encode(p_diameter_message, data);
  send_data(data, _params);
}

void diameter_layer::sendMsg(const LibDiameter__SIPTypesAndValues::SUBSCRIBE__Request& p_diameter_message, params& p_param) {
  loggers::get_instance().log_msg(">>> diameter_layer::sendMsg: ", p_diameter_message);

  // Encode SipMessage
  OCTETSTRING data;
  _codec_subscribe.encode(p_diameter_message, data);
  send_data(data, _params);
}

void diameter_layer::sendMsg(const LibDiameter__SIPTypesAndValues::MESSAGE__Request& p_diameter_message, params& p_param) {
  loggers::get_instance().log_msg(">>> diameter_layer::sendMsg: ", p_diameter_message);

  // Encode SipMessage
  OCTETSTRING data;
  _codec_message.encode(p_diameter_message, data);
  send_data(data, _params);
}

void diameter_layer::sendMsg(const LibDiameter__SIPTypesAndValues::OPTIONS__Request& p_diameter_message, params& p_param) {
  loggers::get_instance().log_msg(">>> diameter_layer::sendMsg: ", p_diameter_message);

  // Encode SipMessage
  OCTETSTRING data;
  _codec_options.encode(p_diameter_message, data);
  send_data(data, _params);
}

void diameter_layer::sendMsg(const LibDiameter__SIPTypesAndValues::BYE__Request& p_diameter_message, params& p_param) {
  loggers::get_instance().log_msg(">>> diameter_layer::sendMsg: ", p_diameter_message);

  // Encode SipMessage
  OCTETSTRING data;
  _codec_bye.encode(p_diameter_message, data);
  send_data(data, _params);
}

void diameter_layer::sendMsg(const LibDiameter__SIPTypesAndValues::CANCEL__Request& p_diameter_message, params& p_param) {
  loggers::get_instance().log_msg(">>> diameter_layer::sendMsg: ", p_diameter_message);

  // Encode SipMessage
  OCTETSTRING data;
  _codec_cancel.encode(p_diameter_message, data);
  send_data(data, _params);
}

void diameter_layer::sendMsg(const LibDiameter__SIPTypesAndValues::NOTIFY__Request& p_diameter_message, params& p_param) {
  loggers::get_instance().log_msg(">>> diameter_layer::sendMsg: ", p_diameter_message);

  // Encode SipMessage
  OCTETSTRING data;
  _codec_notify.encode(p_diameter_message, data);
  send_data(data, _params);
}

void diameter_layer::sendMsg(const LibDiameter__SIPTypesAndValues::INFO__Request& p_diameter_message, params& p_param) {
  loggers::get_instance().log_msg(">>> diameter_layer::sendMsg: ", p_diameter_message);

  // Encode SipMessage
  OCTETSTRING data;
  _codec_info.encode(p_diameter_message, data);
  send_data(data, _params);
}

void diameter_layer::sendMsg(const LibDiameter__SIPTypesAndValues::Response& p_diameter_message, params& p_param) {
  loggers::get_instance().log_msg(">>> diameter_layer::sendMsg: ", p_diameter_message);

  // Encode SipMessage
  OCTETSTRING data;
  _codec_response.encode(p_diameter_message, data);
  send_data(data, _params);
}

void diameter_layer::send_data(OCTETSTRING& data, params& p_params) {
  loggers::get_instance().log_msg(">>> diameter_layer::send_data: ", data);

@@ -122,24 +32,7 @@ void diameter_layer::receive_data(OCTETSTRING& data, params& p_params)
{
  loggers::get_instance().log_msg(">>> diameter_layer::receive_data: ", data);

  // Decode SIP message
  if ((data[0].get_octet() == 'S') && (data[1].get_octet() == 'I') && (data[2].get_octet() == 'P')) { // SIP... Assume it is a responce
    LibDiameter__SIPTypesAndValues::Response diameter_response;
    if (_codec_response.decode(data, diameter_response) == -1) {
      loggers::get_instance().warning("diameter_layer::receive_data: Failed to decode response data");
      return;
    }
    // Pass it to the ports
    to_all_upper_ports(diameter_response, p_params);
  } else { // Assume it is a request
    LibDiameter__SIPTypesAndValues::Request diameter_request;
    if (_codec_request.decode(data, diameter_request) == -1) {
      loggers::get_instance().warning("diameter_layer::receive_data: Failed to decode request data");
      return;
    }
    // Pass it to the ports
    to_all_upper_ports(diameter_request, p_params);
  }
  // Decode Diameter message
}

diameter_layer_factory diameter_layer_factory::_f;
+4 −35
Original line number Diff line number Diff line
@@ -18,19 +18,8 @@ namespace LibDiameter__Interface {
  class DiameterPort; //! Forward declaration of TITAN class
}

namespace LibDiameter__SIPTypesAndValues {
  class REGISTER__Request; //! Forward declaration of TITAN class
  class INVITE__Request;   //! Forward declaration of TITAN class
  class ACK__Request;   //! Forward declaration of TITAN class
  class SUSCRIBE__Request; //! Forward declaration of TITAN class
  class MESSAGE__Request;  //! Forward declaration of TITAN class
  class OPTIONS__Request;   //! Forward declaration of TITAN class
  class CANCEL__Request;   //! Forward declaration of TITAN class
  class NOTIFY__Request;   //! Forward declaration of TITAN class
  class INFO__Request;   //! Forward declaration of TITAN class
  class BYE__Request;   //! Forward declaration of TITAN class
  class Resquest;          //! Forward declaration of TITAN class
  class Response;          //! Forward declaration of TITAN class
namespace LibDiameter__TypesAndValues {
  class DIAMETER__MSG; //! Forward declaration of TITAN class
}

class OCTETSTRING; //! Forward declaration of TITAN class
@@ -62,27 +51,7 @@ public: //! \publicsection
   */
  virtual ~diameter_layer() { };

  void sendMsg(const LibDiameter__SIPTypesAndValues::REGISTER__Request& p_diameter_message, params& p_param);
  
  void sendMsg(const LibDiameter__SIPTypesAndValues::INVITE__Request& p_diameter_message, params& p_param);
  
  void sendMsg(const LibDiameter__SIPTypesAndValues::ACK__Request& p_diameter_message, params& p_param);
  
  void sendMsg(const LibDiameter__SIPTypesAndValues::SUBSCRIBE__Request& p_diameter_message, params& p_param);
  
  void sendMsg(const LibDiameter__SIPTypesAndValues::MESSAGE__Request& p_diameter_message, params& p_param);
  
  void sendMsg(const LibDiameter__SIPTypesAndValues::OPTIONS__Request& p_diameter_message, params& p_param);
  
  void sendMsg(const LibDiameter__SIPTypesAndValues::BYE__Request& p_diameter_message, params& p_param);
  
  void sendMsg(const LibDiameter__SIPTypesAndValues::CANCEL__Request& p_diameter_message, params& p_param);
  
  void sendMsg(const LibDiameter__SIPTypesAndValues::NOTIFY__Request& p_diameter_message, params& p_param);
  
  void sendMsg(const LibDiameter__SIPTypesAndValues::INFO__Request& p_diameter_message, params& p_param);
  
  void sendMsg(const LibDiameter__SIPTypesAndValues::Response& p_diameter_message, params& p_param);
  void sendMsg(const LibDiameter__TypesAndValues::DIAMETER__MSG& p_diameter_message, params& p_param);

  /*!
   * \virtual
+4 −1
Original line number Diff line number Diff line
sources := \
        diameter_layer.cc
        diameter_layer.cc \
        diameter_codec.cc \
        avp.cc

includes := .
+3 −0
Original line number Diff line number Diff line
@@ -8,6 +8,9 @@
		},
		{
			"path": "../../tmp/emergency-iop-ttf010"
		},
		{
			"path": "../../tmp/vxlte-iop"
		}
	]
}
 No newline at end of file
+3 −3
Original line number Diff line number Diff line
@@ -2,9 +2,9 @@ sources := \
    ttcn/LibDiameter_PIXITS.ttcn \
    ttcn/LibDiameter_Interface.ttcn \
    ttcn/LibDiameter_Steps.ttcn \
    ttcn/LibDiameter_Templates.ttcn \
    ttcn/LibDiameter_Types_S6a_AVPs.ttcn3 \
    ttcn/LibDiameter_Types_S9_AVPs.ttcn \
    ../patch_lib_diameter_titan/ttcn/LibDiameter_Templates.ttcn \
    ../patch_lib_diameter_titan/ttcn/LibDiameter_Types_S6a_AVPs.ttcn \
    ../patch_lib_diameter_titan/ttcn/LibDiameter_Types_S9_AVPs.ttcn \
    ../patch_lib_diameter_titan/ttcn/LibDiameter_EncdecDeclarations.ttcn \
    ../patch_lib_diameter_titan/ttcn/LibDiameter_Types_RfRo_AVPs.ttcn \
    ../patch_lib_diameter_titan/ttcn/LibDiameter_Types_ShDh_AVPs.ttcn \
Loading