Commit fad53a10 authored by YannGarcia's avatar YannGarcia
Browse files

Bug fixed in PSAP; Reorganize patch_lib_common_titan

parent 57566e62
Loading
Loading
Loading
Loading
+76 −67
Original line number Original line Diff line number Diff line
@@ -12,21 +12,26 @@
#include "urn_ietf_params_xml_ns_pidf_geopriv10.hh"
#include "urn_ietf_params_xml_ns_pidf_geopriv10.hh"


// TODO Unify held_codec for bothHttp & Sip: instead of LibHttp__XmlMessageBodyTypes::XmlBody, use a generic XmlBody common to LibItsHttp & LibSip
// TODO Unify held_codec for bothHttp & Sip: instead of LibHttp__XmlMessageBodyTypes::XmlBody, use a generic XmlBody common to LibItsHttp & LibSip
int held_codec::encode (const LibHttp__XmlMessageBodyTypes::XmlBody& msg, OCTETSTRING& data)
int held_codec::encode (const LibHttp__XmlMessageBodyTypes::XmlBody& body, OCTETSTRING& data)
{
{
  loggers::get_instance().log_msg(">>> held_codec::encode: ", (const Base_Type&)msg);
  loggers::get_instance().log_msg(">>> held_codec::encode: ", (const Base_Type&)body);


  if (body.raw().is_present() && body.raw().is_bound()) {
    const CHARSTRING& v = static_cast<const CHARSTRING&>(*body.raw().get_opt_value());
    data = char2oct(v);
  } else {
    TTCN_EncDec::clear_error();
    TTCN_EncDec::clear_error();
    TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
    TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
    TTCN_Buffer encoding_buffer;
    TTCN_Buffer encoding_buffer;
    
    
    const LibHttp__XmlMessageBodyTypes::XmlBodyMsg& msg = body.msg();
    CHARSTRING h("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>\n");
    CHARSTRING h("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>\n");
    encoding_buffer.put_s(h.lengthof(), (const unsigned char*)static_cast<const char*>(h));
    encoding_buffer.put_s(h.lengthof(), (const unsigned char*)static_cast<const char*>(h));
  if (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBody::ALT_locationRequest)) {
    if (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBodyMsg::ALT_locationRequest)) {
      const urn__ietf__params__xml__ns__geopriv__held::LocationRequestType& location_request = msg.locationRequest();
      const urn__ietf__params__xml__ns__geopriv__held::LocationRequestType& location_request = msg.locationRequest();
      loggers::get_instance().log_msg("held_codec::encode: Process LocationRequestType", (const Base_Type&)location_request);
      loggers::get_instance().log_msg("held_codec::encode: Process LocationRequestType", (const Base_Type&)location_request);
      location_request.encode(urn__ietf__params__xml__ns__geopriv__held::LocationRequest_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
      location_request.encode(urn__ietf__params__xml__ns__geopriv__held::LocationRequest_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
  } else if  (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBody::ALT_locationResponse)) {
    } else if  (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBodyMsg::ALT_locationResponse)) {
      const urn__ietf__params__xml__ns__geopriv__held::LocationResponseType& location_response = msg.locationResponse();
      const urn__ietf__params__xml__ns__geopriv__held::LocationResponseType& location_response = msg.locationResponse();
      loggers::get_instance().log_msg("held_codec::encode: Process LocationResponseType", (const Base_Type&)location_response);
      loggers::get_instance().log_msg("held_codec::encode: Process LocationResponseType", (const Base_Type&)location_response);
      location_response.encode(urn__ietf__params__xml__ns__geopriv__held::LocationResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
      location_response.encode(urn__ietf__params__xml__ns__geopriv__held::LocationResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
@@ -84,13 +89,14 @@ int held_codec::encode (const LibHttp__XmlMessageBodyTypes::XmlBody& msg, OCTETS


      data = OCTETSTRING(s.length(), (const unsigned char*)s.c_str());
      data = OCTETSTRING(s.length(), (const unsigned char*)s.c_str());
    }
    }
  }
  loggers::get_instance().log_msg("held_codec::encode: After encoding: ", data);
  loggers::get_instance().log_msg("held_codec::encode: After encoding: ", data);
  
  
  loggers::get_instance().log("<<< held_codec::encode");
  loggers::get_instance().log("<<< held_codec::encode");
  return 0;
  return 0;
}
}


int held_codec::decode (const OCTETSTRING& p_data, LibHttp__XmlMessageBodyTypes::XmlBody& msg, params* p_params)
int held_codec::decode (const OCTETSTRING& p_data, LibHttp__XmlMessageBodyTypes::XmlBody& body, params* p_params)
{
{
  loggers::get_instance().log_msg(">>> held_codec::decode: p_data=", p_data);
  loggers::get_instance().log_msg(">>> held_codec::decode: p_data=", p_data);


@@ -107,6 +113,9 @@ int held_codec::decode (const OCTETSTRING& p_data, LibHttp__XmlMessageBodyTypes:
    }
    }
  }
  }
  
  
  loggers::get_instance().log_msg("body: ", body);
  LibHttp__XmlMessageBodyTypes::XmlBodyMsg& msg = body.msg();
  body.raw().set_to_omit();
  TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
  TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
  TTCN_EncDec::clear_error();
  TTCN_EncDec::clear_error();
  TTCN_Buffer decoding_buffer(OCTETSTRING(it->second.length(), (const unsigned char*)it->second.c_str()));
  TTCN_Buffer decoding_buffer(OCTETSTRING(it->second.length(), (const unsigned char*)it->second.c_str()));
+2 −2
Original line number Original line Diff line number Diff line
@@ -17,7 +17,7 @@ public:
  explicit held_codec() : codec_gen<LibHttp__XmlMessageBodyTypes::XmlBody, LibHttp__XmlMessageBodyTypes::XmlBody>() { };
  explicit held_codec() : codec_gen<LibHttp__XmlMessageBodyTypes::XmlBody, LibHttp__XmlMessageBodyTypes::XmlBody>() { };
  virtual ~held_codec() { };
  virtual ~held_codec() { };


  virtual int encode (const LibHttp__XmlMessageBodyTypes::XmlBody&, OCTETSTRING& data);
  virtual int encode (const LibHttp__XmlMessageBodyTypes::XmlBody& body, OCTETSTRING& data);
  virtual int decode (const OCTETSTRING& p_data, LibHttp__XmlMessageBodyTypes::XmlBody&, params* p_params = NULL);
  virtual int decode (const OCTETSTRING& p_data, LibHttp__XmlMessageBodyTypes::XmlBody& body, params* p_params = NULL);


}; // End of class held_codec
}; // End of class held_codec
+66 −57
Original line number Original line Diff line number Diff line
@@ -10,41 +10,46 @@


#include "urn_ietf_params_xml_ns_lost1.hh"
#include "urn_ietf_params_xml_ns_lost1.hh"


int lost_codec::encode (const LibHttp__XmlMessageBodyTypes::XmlBody& msg, OCTETSTRING& data)
int lost_codec::encode (const LibHttp__XmlMessageBodyTypes::XmlBody& body, OCTETSTRING& data)
{
{
  loggers::get_instance().log_msg(">>> lost_codec::encode: ", (const Base_Type&)msg);
  loggers::get_instance().log_msg(">>> lost_codec::encode: ", (const Base_Type&)body);


  if (body.raw().is_present() && body.raw().is_bound()) {
    const CHARSTRING& v = static_cast<const CHARSTRING&>(*body.raw().get_opt_value());
    data = char2oct(v);
  } else {
    TTCN_EncDec::clear_error();
    TTCN_EncDec::clear_error();
    TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
    TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
    TTCN_Buffer encoding_buffer;
    TTCN_Buffer encoding_buffer;


    CHARSTRING h("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>\n");
    CHARSTRING h("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>\n");
    encoding_buffer.put_s(h.lengthof(), (const unsigned char*)static_cast<const char*>(h));
    encoding_buffer.put_s(h.lengthof(), (const unsigned char*)static_cast<const char*>(h));
  if (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBody::ALT_findServiceRequest)) {
    const LibHttp__XmlMessageBodyTypes::XmlBodyMsg& msg = body.msg();
    if (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBodyMsg::ALT_findServiceRequest)) {
      const urn__ietf__params__xml__ns__lost1::FindService& find_service = msg.findServiceRequest();
      const urn__ietf__params__xml__ns__lost1::FindService& find_service = msg.findServiceRequest();
      loggers::get_instance().log_msg("lost_codec::encode: Process FindService", (const Base_Type&)find_service);
      loggers::get_instance().log_msg("lost_codec::encode: Process FindService", (const Base_Type&)find_service);
      find_service.encode(urn__ietf__params__xml__ns__lost1::FindService_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
      find_service.encode(urn__ietf__params__xml__ns__lost1::FindService_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
  } else  if (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBody::ALT_listServices)) {
    } else  if (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBodyMsg::ALT_listServices)) {
      const urn__ietf__params__xml__ns__lost1::ListServices& list_services = msg.listServices();
      const urn__ietf__params__xml__ns__lost1::ListServices& list_services = msg.listServices();
      loggers::get_instance().log_msg("lost_codec::encode: Process ListServices", (const Base_Type&)list_services);
      loggers::get_instance().log_msg("lost_codec::encode: Process ListServices", (const Base_Type&)list_services);
      list_services.encode(urn__ietf__params__xml__ns__lost1::ListServices_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
      list_services.encode(urn__ietf__params__xml__ns__lost1::ListServices_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
  } else  if (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBody::ALT_listServicesByLocation)) {
    } else  if (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBodyMsg::ALT_listServicesByLocation)) {
      const urn__ietf__params__xml__ns__lost1::ListServicesByLocation& list_services_by_location = msg.listServicesByLocation();
      const urn__ietf__params__xml__ns__lost1::ListServicesByLocation& list_services_by_location = msg.listServicesByLocation();
      loggers::get_instance().log_msg("lost_codec::encode: Process ListServicesByLocation", (const Base_Type&)list_services_by_location);
      loggers::get_instance().log_msg("lost_codec::encode: Process ListServicesByLocation", (const Base_Type&)list_services_by_location);
      list_services_by_location.encode(urn__ietf__params__xml__ns__lost1::ListServicesByLocation_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
      list_services_by_location.encode(urn__ietf__params__xml__ns__lost1::ListServicesByLocation_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
  } else if  (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBody::ALT_findServiceResponse)) {
    } else if  (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBodyMsg::ALT_findServiceResponse)) {
      const urn__ietf__params__xml__ns__lost1::FindServiceResponse& find_service_response = msg.findServiceResponse();
      const urn__ietf__params__xml__ns__lost1::FindServiceResponse& find_service_response = msg.findServiceResponse();
      loggers::get_instance().log_msg("lost_codec::encode: Process FindServiceResponse", (const Base_Type&)find_service_response);
      loggers::get_instance().log_msg("lost_codec::encode: Process FindServiceResponse", (const Base_Type&)find_service_response);
      find_service_response.encode(urn__ietf__params__xml__ns__lost1::FindServiceResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
      find_service_response.encode(urn__ietf__params__xml__ns__lost1::FindServiceResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
  } else if  (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBody::ALT_listServicesResponse)) {
    } else if  (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBodyMsg::ALT_listServicesResponse)) {
      const urn__ietf__params__xml__ns__lost1::ListServicesResponse& list_services_response = msg.listServicesResponse();
      const urn__ietf__params__xml__ns__lost1::ListServicesResponse& list_services_response = msg.listServicesResponse();
      loggers::get_instance().log_msg("lost_codec::encode: Process ListServicesResponse", (const Base_Type&)list_services_response);
      loggers::get_instance().log_msg("lost_codec::encode: Process ListServicesResponse", (const Base_Type&)list_services_response);
      list_services_response.encode(urn__ietf__params__xml__ns__lost1::ListServicesResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
      list_services_response.encode(urn__ietf__params__xml__ns__lost1::ListServicesResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
  } else if  (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBody::ALT_listServicesByLocationResponse)) {
    } else if  (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBodyMsg::ALT_listServicesByLocationResponse)) {
      const urn__ietf__params__xml__ns__lost1::ListServicesByLocationResponse& list_services_by_location_response = msg.listServicesByLocationResponse();
      const urn__ietf__params__xml__ns__lost1::ListServicesByLocationResponse& list_services_by_location_response = msg.listServicesByLocationResponse();
      loggers::get_instance().log_msg("lost_codec::encode: Process ListServicesByLocationResponse", (const Base_Type&)list_services_by_location_response);
      loggers::get_instance().log_msg("lost_codec::encode: Process ListServicesByLocationResponse", (const Base_Type&)list_services_by_location_response);
      list_services_by_location_response.encode(urn__ietf__params__xml__ns__lost1::ListServicesByLocationResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
      list_services_by_location_response.encode(urn__ietf__params__xml__ns__lost1::ListServicesByLocationResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
  } else if  (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBody::ALT_redirect)) {
    } else if  (msg.ischosen(LibHttp__XmlMessageBodyTypes::XmlBodyMsg::ALT_redirect)) {
      const urn__ietf__params__xml__ns__lost1::Redirect& redirect = msg.redirect();
      const urn__ietf__params__xml__ns__lost1::Redirect& redirect = msg.redirect();
      loggers::get_instance().log_msg("lost_codec::encode: Process Redirect", (const Base_Type&)redirect);
      loggers::get_instance().log_msg("lost_codec::encode: Process Redirect", (const Base_Type&)redirect);
      redirect.encode(urn__ietf__params__xml__ns__lost1::Redirect_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
      redirect.encode(urn__ietf__params__xml__ns__lost1::Redirect_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED);
@@ -71,13 +76,14 @@ int lost_codec::encode (const LibHttp__XmlMessageBodyTypes::XmlBody& msg, OCTETS
    
    
    data = OCTETSTRING(str.length(), (const unsigned char*)str.c_str());
    data = OCTETSTRING(str.length(), (const unsigned char*)str.c_str());
    //data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data());
    //data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data());
  }
  loggers::get_instance().log_msg("lost_codec::encode: After encoding: ", data);
  loggers::get_instance().log_msg("lost_codec::encode: After encoding: ", data);


  loggers::get_instance().log("<<< lost_codec::encode");
  loggers::get_instance().log("<<< lost_codec::encode");
  return 0;
  return 0;
}
}


int lost_codec::decode (const OCTETSTRING& p_data, LibHttp__XmlMessageBodyTypes::XmlBody& msg, params* p_params)
int lost_codec::decode (const OCTETSTRING& p_data, LibHttp__XmlMessageBodyTypes::XmlBody& body, params* p_params)
{
{
  loggers::get_instance().log_msg(">>> lost_codec::decode: p_data=", p_data);
  loggers::get_instance().log_msg(">>> lost_codec::decode: p_data=", p_data);


@@ -94,6 +100,9 @@ int lost_codec::decode (const OCTETSTRING& p_data, LibHttp__XmlMessageBodyTypes:
    }
    }
  }
  }
  
  
  loggers::get_instance().log_msg("body: ", body);
  LibHttp__XmlMessageBodyTypes::XmlBodyMsg& msg = body.msg();
  body.raw() = OPTIONAL<CHARSTRING>(CHARSTRING(it->second.c_str()));
  TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
  TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
  TTCN_EncDec::clear_error();
  TTCN_EncDec::clear_error();
  TTCN_Buffer decoding_buffer(p_data);
  TTCN_Buffer decoding_buffer(p_data);
+2 −2
Original line number Original line Diff line number Diff line
@@ -17,7 +17,7 @@ public:
  explicit lost_codec() : codec_gen<LibHttp__XmlMessageBodyTypes::XmlBody, LibHttp__XmlMessageBodyTypes::XmlBody>() { };
  explicit lost_codec() : codec_gen<LibHttp__XmlMessageBodyTypes::XmlBody, LibHttp__XmlMessageBodyTypes::XmlBody>() { };
  virtual ~lost_codec() { };
  virtual ~lost_codec() { };


  virtual int encode (const LibHttp__XmlMessageBodyTypes::XmlBody&, OCTETSTRING& data);
  virtual int encode (const LibHttp__XmlMessageBodyTypes::XmlBody& body, OCTETSTRING& data);
  virtual int decode (const OCTETSTRING& p_data, LibHttp__XmlMessageBodyTypes::XmlBody&, params* p_params = NULL);
  virtual int decode (const OCTETSTRING& p_data, LibHttp__XmlMessageBodyTypes::XmlBody& body, params* p_params = NULL);


}; // End of class lost_codec
}; // End of class lost_codec
+1 −1
Original line number Original line Diff line number Diff line
@@ -914,7 +914,7 @@ int sip_codec_message_body::decode_xml(const osip_body_t* p_body, LibSip__XMLTyp
  TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
  TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
  OCTETSTRING data(p_body->length, (const unsigned char*)p_body->body);
  OCTETSTRING data(p_body->length, (const unsigned char*)p_body->body);
  TTCN_Buffer decoding_buffer(data);
  TTCN_Buffer decoding_buffer(data);
  loggers::get_instance().log_to_hexa("<<< sip_codec_message_body::decode_xml: decoding_buffer: ", decoding_buffer);
  loggers::get_instance().log_to_hexa("sip_codec_message_body::decode_xml: decoding_buffer: ", decoding_buffer);
  
  
  if (strstr(p_body->body, "<presence") != nullptr) { // Held codec
  if (strstr(p_body->body, "<presence") != nullptr) { // Held codec
    urn__ietf__params__xml__ns__pidf::Presence presence;
    urn__ietf__params__xml__ns__pidf::Presence presence;
Loading