Loading ccsrc/EncDec/LibSip/LibSip_Encdec.cc +106 −45 Original line number Diff line number Diff line Loading @@ -3,14 +3,66 @@ #include "LibSip_XMLTypes.hh" #include "sip_codec_register_request.hh" #include "sip_codec_invite_request.hh" #include "loggers.hh" namespace LibSip__EncdecDeclarations { BITSTRING fx__enc__Request(const LibSip__SIPTypesAndValues::Request& p) { return BITSTRING(); } BITSTRING fx__enc__REGISTER__Request(const LibSip__SIPTypesAndValues::REGISTER__Request& p) { return BITSTRING(); } BITSTRING fx__enc__INVITE__Request(const LibSip__SIPTypesAndValues::INVITE__Request& p) { return BITSTRING(); } BITSTRING fx__enc__Request(const LibSip__SIPTypesAndValues::Request& p) { loggers::get_instance().log_msg(">>> fx__enc__Request: ", p); float duration; std::string tag("fx__enc__Request"); loggers::get_instance().set_start_time(tag); OCTETSTRING os; sip_codec_request codec; if (codec.encode(p, os) == -1) { loggers::get_instance().warning("fx__enc__Request -1 result code was returned"); return int2bit(0, 1); } loggers::get_instance().set_stop_time(tag, duration); return oct2bit(os); } BITSTRING fx__enc__REGISTER__Request(const LibSip__SIPTypesAndValues::REGISTER__Request& p) { loggers::get_instance().log_msg(">>> fx__enc__REGISTER__Request: ", p); float duration; std::string tag("fx__enc__REGISTER__Request"); loggers::get_instance().set_start_time(tag); OCTETSTRING os; sip_codec_register_request codec; if (codec.encode(p, os) == -1) { loggers::get_instance().warning("fx__enc__REGISTER__Request: -1 result code was returned"); return int2bit(0, 1); } loggers::get_instance().set_stop_time(tag, duration); return oct2bit(os); } BITSTRING fx__enc__INVITE__Request(const LibSip__SIPTypesAndValues::INVITE__Request& p) { loggers::get_instance().log_msg(">>> fx__enc__INVITE__Request: ", p); float duration; std::string tag("fx__enc__INVITE__Request"); loggers::get_instance().set_start_time(tag); OCTETSTRING os; sip_codec_invite_request codec; if (codec.encode(p, os) == -1) { loggers::get_instance().warning("fx__enc__INVITE__Request: -1 result code was returned"); return int2bit(0, 1); } loggers::get_instance().set_stop_time(tag, duration); return oct2bit(os); } BITSTRING fx__enc__OPTIONS__Request(const LibSip__SIPTypesAndValues::OPTIONS__Request& p) { return BITSTRING(); } BITSTRING fx__enc__BYE__Request(const LibSip__SIPTypesAndValues::BYE__Request& p) { return BITSTRING(); } BITSTRING fx__enc__CANCEL__Request(const LibSip__SIPTypesAndValues::CANCEL__Request& p) { return BITSTRING(); } Loading Loading @@ -39,7 +91,16 @@ namespace LibSip__EncdecDeclarations { return 0; } INTEGER fx__dec__INVITE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::INVITE__Request& p) { return INTEGER(0); } INTEGER fx__dec__INVITE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::INVITE__Request& p) { loggers::get_instance().log_msg(">>> fx__dec__INVITE__Request: ", pdu); OCTETSTRING os = bit2oct(pdu); sip_codec_invite_request codec; codec.decode(os, p); return 0; } INTEGER fx__dec__OPTIONS__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::OPTIONS__Request& p) { return INTEGER(0); } INTEGER fx__dec__BYE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::BYE__Request& p) { return INTEGER(0); } INTEGER fx__dec__CANCEL__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::CANCEL__Request& p) { return INTEGER(0); } Loading ccsrc/Protocols/Http/http_codec.cc +16 −3 Original line number Diff line number Diff line Loading @@ -131,8 +131,18 @@ int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request& p_requ const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast<const LibItsHttp__MessageBodyTypes::HttpMessageBody&>(*v.get_opt_value()); loggers::get_instance().log_msg("http_codec::encode_request: body: ", body); if (encode_body(body, os) == -1) { loggers::get_instance().warning("http_codec::encode_request: Failed to encode HTTP body"); _ec.length = 0; _ec.is_content_length_present = 0x00; } else { _ec.length = os.lengthof(); _ec.is_content_length_present = 0x01; } loggers::get_instance().log("http_codec::encode_request: length=%d", _ec.length); } else { loggers::get_instance().log("http_codec::encode_request: HTTP body field not present"); _ec.length = 0; _ec.is_content_length_present = 0x00; } // Encode generic part Loading @@ -151,13 +161,15 @@ int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request& p_requ loggers::get_instance().log_msg("http_codec::encode_request: Processing header ", header.header__name()); p_encoding_buffer.put_cs(header.header__name()); p_encoding_buffer.put_cs(": "); if (std::string(static_cast<const char*>(header.header__name())).compare("Content-Length") == 0) { if (std::string(static_cast<const char*>(header.header__name())).compare("Content-length") == 0) { if (_ec.length != 0) { p_encoding_buffer.put_cs(int2str(_ec.length + 2/*Stand for the last CRLF*/)); _ec.is_content_length_present = 0x01; } else { p_encoding_buffer.put_cs("0"); _ec.is_content_length_present = 0x00; } _ec.is_content_length_present = 0x01; loggers::get_instance().log("http_codec::encode_request: Content-length: %d - %x", _ec.length, _ec.is_content_length_present); } else { const OPTIONAL<LibItsHttp__TypesAndValues::charstring__list>& o = header.header__value(); if (o.ispresent()) { Loading @@ -179,7 +191,8 @@ int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request& p_requ } // End of 'for' statement p_encoding_buffer.put_cs("\r\n"); if (_ec.length != 0) { if (_ec.is_content_length_present == 0x01) { loggers::get_instance().log_msg("http_codec::encode_request: Add body ", os); p_encoding_buffer.put_os(os); p_encoding_buffer.put_cs("\r\n"); } Loading ccsrc/Protocols/Sip/sip_codec_register_request.cc +1 −1 Original line number Diff line number Diff line Loading @@ -7,12 +7,12 @@ int sip_codec_register_request::encode (const LibSip__SIPTypesAndValues::REGISTE { loggers::get_instance().log_msg(">>> sip_codec_register_request::encode: ", (const Base_Type&)msg); loggers::get_instance().log_msg("<<< sip_codec_register_request::encode: data=", data); if (_codec.encode((LibSip__SIPTypesAndValues::Request&)msg, data) == -1) { loggers::get_instance().warning("sip_codec_register_request::encode: Failed to encode message"); return -1; } loggers::get_instance().log_msg("<<< sip_codec_register_request::encode: data=", data); return 0; } Loading ccsrc/Protocols/Sip/sip_codec_request.cc +781 −529 File changed.Preview size limit exceeded, changes collapsed. Show changes ccsrc/Protocols/Sip/sip_codec_request.hh +55 −21 Original line number Diff line number Diff line Loading @@ -11,11 +11,24 @@ class TTCN_Buffer; namespace LibSip__SIPTypesAndValues { class Request; class RequestLine; class MessageHeader; class Payload; class HostPort; class Authorization; class From; class To; class Via; class CallId; class ContentLength; class ContentType; class CSeq; class PreGenRecordOf; // class OptionTag__List; } namespace LibSip__MessageBodyTypes { class MessageBody; } namespace LibSip__Common { Loading @@ -36,27 +49,48 @@ public: virtual int encode (const LibSip__SIPTypesAndValues::Request& msg, OCTETSTRING& data); virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::Request& msg, params* p_params = NULL); private: //! \todo Move this section into a sip_codec_helper class, need to decode Response too void fill_message_body(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); void fill_payload(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); void fill_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, const osip_uri_t* p_uri); void fill_request_line(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); void fill_headers(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); void fill_accept_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Accept& p_accept_header); void fill_accept_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptContact& p_accept_contact_header); void fill_accept_encoding_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptEncoding& p_accept_encoding_header); void fill_accept_language_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptLanguage& p_accept_language_header); void fill_alert_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AlertInfo& p_alert_info_header); void fill_allow_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Allow& p_allow_header); void fill_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header); void fill_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header); void fill_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header); void fill_to_header(const osip_to_t* p_sip_to, LibSip__SIPTypesAndValues::To& p_to_header); void fill_via_header(const osip_message_t* p_sip_via_list, LibSip__SIPTypesAndValues::Via& p_via_header); void fill_host_port(const char* p_host, const char* p_port, LibSip__SIPTypesAndValues::HostPort& p_host_port); void fill_semi_colon_params(const osip_list_t& p_sip_list, OPTIONAL<LibSip__Common::SemicolonParam__List>& p_list); void fill_ampersand_params(const osip_list_t& p_sip_list, OPTIONAL<LibSip__Common::AmpersandParam__List>& p_list); int encode_request(const LibSip__SIPTypesAndValues::Request& p_request, osip_message_t* p_sip_message); int encode_request_line(const LibSip__SIPTypesAndValues::RequestLine& p_request_line, osip_message_t* p_sip_message); int encode_request_headers(const LibSip__SIPTypesAndValues::MessageHeader& p_msg_header, osip_message_t* p_sip_message); int encode_request_message_body(const LibSip__MessageBodyTypes::MessageBody& p_message_body, osip_message_t* p_sip_message); int encode_request_payload(const LibSip__SIPTypesAndValues::Payload& p_payload, osip_message_t* p_sip_message); int encode_from_header(const LibSip__SIPTypesAndValues::From& p_from, osip_from_t* p_from_header); int encode_to_header(const LibSip__SIPTypesAndValues::To& p_to, osip_to_t* p_to_header); int encode_via_header(const LibSip__SIPTypesAndValues::Via& p_via, osip_via_t* p_via_header); int encode_sip_url(const LibSip__SIPTypesAndValues::SipUrl& p_sip_uri, osip_uri_t** p_uri); void encode_host_port(const LibSip__SIPTypesAndValues::HostPort& p_host_port, std::string& p_host, std::string& p_port); private: //! \todo Move this section into a sip_codec_helper class, need to decode Response too void decode_message_body(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); void decode_payload(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); void decode_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, const osip_uri_t* p_uri); void decode_request_line(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); void decode_headers(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); // TODO Replace const osip_message_t* p_sip_message by header specific type using osip_parser.h/macros such as osip_message_get_accept/osip_accept_t void decode_accept_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Accept& p_accept_header); void decode_accept_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptContact& p_accept_contact_header); void decode_accept_encoding_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptEncoding& p_accept_encoding_header); void decode_accept_language_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptLanguage& p_accept_language_header); void decode_alert_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AlertInfo& p_alert_info_header); void decode_allow_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Allow& p_allow_header); void decode_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header); void decode_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header); void decode_call_id_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CallId& p_call_id_header); void decode_content_length_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::ContentLength& p_content_length_header); void decode_content_type_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::ContentType& p_content_type_header); void decode_c_seq_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CSeq& p_c_seq_header); void decode_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header); void decode_max_forwards_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::MaxForwards& p_max_forwards_header); void decode_supported_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Supported& p_supported_header); void decode_to_header(const osip_to_t* p_sip_to, LibSip__SIPTypesAndValues::To& p_to_header); void decode_via_header(const osip_message_t* p_sip_via_list, LibSip__SIPTypesAndValues::Via& p_via_header); void decode_host_port(const char* p_host, const char* p_port, LibSip__SIPTypesAndValues::HostPort& p_host_port); void decode_semi_colon_params(const osip_list_t& p_sip_list, OPTIONAL<LibSip__Common::SemicolonParam__List>& p_list); void decode_ampersand_params(const osip_list_t& p_sip_list, OPTIONAL<LibSip__Common::AmpersandParam__List>& p_list); void decode_option_tag_list(const char* p_list, OPTIONAL<LibSip__SIPTypesAndValues::OptionTag__List>& p_options_tags); }; // End of class sip_codec_request Loading
ccsrc/EncDec/LibSip/LibSip_Encdec.cc +106 −45 Original line number Diff line number Diff line Loading @@ -3,14 +3,66 @@ #include "LibSip_XMLTypes.hh" #include "sip_codec_register_request.hh" #include "sip_codec_invite_request.hh" #include "loggers.hh" namespace LibSip__EncdecDeclarations { BITSTRING fx__enc__Request(const LibSip__SIPTypesAndValues::Request& p) { return BITSTRING(); } BITSTRING fx__enc__REGISTER__Request(const LibSip__SIPTypesAndValues::REGISTER__Request& p) { return BITSTRING(); } BITSTRING fx__enc__INVITE__Request(const LibSip__SIPTypesAndValues::INVITE__Request& p) { return BITSTRING(); } BITSTRING fx__enc__Request(const LibSip__SIPTypesAndValues::Request& p) { loggers::get_instance().log_msg(">>> fx__enc__Request: ", p); float duration; std::string tag("fx__enc__Request"); loggers::get_instance().set_start_time(tag); OCTETSTRING os; sip_codec_request codec; if (codec.encode(p, os) == -1) { loggers::get_instance().warning("fx__enc__Request -1 result code was returned"); return int2bit(0, 1); } loggers::get_instance().set_stop_time(tag, duration); return oct2bit(os); } BITSTRING fx__enc__REGISTER__Request(const LibSip__SIPTypesAndValues::REGISTER__Request& p) { loggers::get_instance().log_msg(">>> fx__enc__REGISTER__Request: ", p); float duration; std::string tag("fx__enc__REGISTER__Request"); loggers::get_instance().set_start_time(tag); OCTETSTRING os; sip_codec_register_request codec; if (codec.encode(p, os) == -1) { loggers::get_instance().warning("fx__enc__REGISTER__Request: -1 result code was returned"); return int2bit(0, 1); } loggers::get_instance().set_stop_time(tag, duration); return oct2bit(os); } BITSTRING fx__enc__INVITE__Request(const LibSip__SIPTypesAndValues::INVITE__Request& p) { loggers::get_instance().log_msg(">>> fx__enc__INVITE__Request: ", p); float duration; std::string tag("fx__enc__INVITE__Request"); loggers::get_instance().set_start_time(tag); OCTETSTRING os; sip_codec_invite_request codec; if (codec.encode(p, os) == -1) { loggers::get_instance().warning("fx__enc__INVITE__Request: -1 result code was returned"); return int2bit(0, 1); } loggers::get_instance().set_stop_time(tag, duration); return oct2bit(os); } BITSTRING fx__enc__OPTIONS__Request(const LibSip__SIPTypesAndValues::OPTIONS__Request& p) { return BITSTRING(); } BITSTRING fx__enc__BYE__Request(const LibSip__SIPTypesAndValues::BYE__Request& p) { return BITSTRING(); } BITSTRING fx__enc__CANCEL__Request(const LibSip__SIPTypesAndValues::CANCEL__Request& p) { return BITSTRING(); } Loading Loading @@ -39,7 +91,16 @@ namespace LibSip__EncdecDeclarations { return 0; } INTEGER fx__dec__INVITE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::INVITE__Request& p) { return INTEGER(0); } INTEGER fx__dec__INVITE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::INVITE__Request& p) { loggers::get_instance().log_msg(">>> fx__dec__INVITE__Request: ", pdu); OCTETSTRING os = bit2oct(pdu); sip_codec_invite_request codec; codec.decode(os, p); return 0; } INTEGER fx__dec__OPTIONS__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::OPTIONS__Request& p) { return INTEGER(0); } INTEGER fx__dec__BYE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::BYE__Request& p) { return INTEGER(0); } INTEGER fx__dec__CANCEL__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::CANCEL__Request& p) { return INTEGER(0); } Loading
ccsrc/Protocols/Http/http_codec.cc +16 −3 Original line number Diff line number Diff line Loading @@ -131,8 +131,18 @@ int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request& p_requ const LibItsHttp__MessageBodyTypes::HttpMessageBody& body = static_cast<const LibItsHttp__MessageBodyTypes::HttpMessageBody&>(*v.get_opt_value()); loggers::get_instance().log_msg("http_codec::encode_request: body: ", body); if (encode_body(body, os) == -1) { loggers::get_instance().warning("http_codec::encode_request: Failed to encode HTTP body"); _ec.length = 0; _ec.is_content_length_present = 0x00; } else { _ec.length = os.lengthof(); _ec.is_content_length_present = 0x01; } loggers::get_instance().log("http_codec::encode_request: length=%d", _ec.length); } else { loggers::get_instance().log("http_codec::encode_request: HTTP body field not present"); _ec.length = 0; _ec.is_content_length_present = 0x00; } // Encode generic part Loading @@ -151,13 +161,15 @@ int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request& p_requ loggers::get_instance().log_msg("http_codec::encode_request: Processing header ", header.header__name()); p_encoding_buffer.put_cs(header.header__name()); p_encoding_buffer.put_cs(": "); if (std::string(static_cast<const char*>(header.header__name())).compare("Content-Length") == 0) { if (std::string(static_cast<const char*>(header.header__name())).compare("Content-length") == 0) { if (_ec.length != 0) { p_encoding_buffer.put_cs(int2str(_ec.length + 2/*Stand for the last CRLF*/)); _ec.is_content_length_present = 0x01; } else { p_encoding_buffer.put_cs("0"); _ec.is_content_length_present = 0x00; } _ec.is_content_length_present = 0x01; loggers::get_instance().log("http_codec::encode_request: Content-length: %d - %x", _ec.length, _ec.is_content_length_present); } else { const OPTIONAL<LibItsHttp__TypesAndValues::charstring__list>& o = header.header__value(); if (o.ispresent()) { Loading @@ -179,7 +191,8 @@ int http_codec::encode_request(const LibItsHttp__TypesAndValues::Request& p_requ } // End of 'for' statement p_encoding_buffer.put_cs("\r\n"); if (_ec.length != 0) { if (_ec.is_content_length_present == 0x01) { loggers::get_instance().log_msg("http_codec::encode_request: Add body ", os); p_encoding_buffer.put_os(os); p_encoding_buffer.put_cs("\r\n"); } Loading
ccsrc/Protocols/Sip/sip_codec_register_request.cc +1 −1 Original line number Diff line number Diff line Loading @@ -7,12 +7,12 @@ int sip_codec_register_request::encode (const LibSip__SIPTypesAndValues::REGISTE { loggers::get_instance().log_msg(">>> sip_codec_register_request::encode: ", (const Base_Type&)msg); loggers::get_instance().log_msg("<<< sip_codec_register_request::encode: data=", data); if (_codec.encode((LibSip__SIPTypesAndValues::Request&)msg, data) == -1) { loggers::get_instance().warning("sip_codec_register_request::encode: Failed to encode message"); return -1; } loggers::get_instance().log_msg("<<< sip_codec_register_request::encode: data=", data); return 0; } Loading
ccsrc/Protocols/Sip/sip_codec_request.cc +781 −529 File changed.Preview size limit exceeded, changes collapsed. Show changes
ccsrc/Protocols/Sip/sip_codec_request.hh +55 −21 Original line number Diff line number Diff line Loading @@ -11,11 +11,24 @@ class TTCN_Buffer; namespace LibSip__SIPTypesAndValues { class Request; class RequestLine; class MessageHeader; class Payload; class HostPort; class Authorization; class From; class To; class Via; class CallId; class ContentLength; class ContentType; class CSeq; class PreGenRecordOf; // class OptionTag__List; } namespace LibSip__MessageBodyTypes { class MessageBody; } namespace LibSip__Common { Loading @@ -36,27 +49,48 @@ public: virtual int encode (const LibSip__SIPTypesAndValues::Request& msg, OCTETSTRING& data); virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::Request& msg, params* p_params = NULL); private: //! \todo Move this section into a sip_codec_helper class, need to decode Response too void fill_message_body(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); void fill_payload(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); void fill_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, const osip_uri_t* p_uri); void fill_request_line(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); void fill_headers(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); void fill_accept_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Accept& p_accept_header); void fill_accept_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptContact& p_accept_contact_header); void fill_accept_encoding_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptEncoding& p_accept_encoding_header); void fill_accept_language_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptLanguage& p_accept_language_header); void fill_alert_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AlertInfo& p_alert_info_header); void fill_allow_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Allow& p_allow_header); void fill_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header); void fill_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header); void fill_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header); void fill_to_header(const osip_to_t* p_sip_to, LibSip__SIPTypesAndValues::To& p_to_header); void fill_via_header(const osip_message_t* p_sip_via_list, LibSip__SIPTypesAndValues::Via& p_via_header); void fill_host_port(const char* p_host, const char* p_port, LibSip__SIPTypesAndValues::HostPort& p_host_port); void fill_semi_colon_params(const osip_list_t& p_sip_list, OPTIONAL<LibSip__Common::SemicolonParam__List>& p_list); void fill_ampersand_params(const osip_list_t& p_sip_list, OPTIONAL<LibSip__Common::AmpersandParam__List>& p_list); int encode_request(const LibSip__SIPTypesAndValues::Request& p_request, osip_message_t* p_sip_message); int encode_request_line(const LibSip__SIPTypesAndValues::RequestLine& p_request_line, osip_message_t* p_sip_message); int encode_request_headers(const LibSip__SIPTypesAndValues::MessageHeader& p_msg_header, osip_message_t* p_sip_message); int encode_request_message_body(const LibSip__MessageBodyTypes::MessageBody& p_message_body, osip_message_t* p_sip_message); int encode_request_payload(const LibSip__SIPTypesAndValues::Payload& p_payload, osip_message_t* p_sip_message); int encode_from_header(const LibSip__SIPTypesAndValues::From& p_from, osip_from_t* p_from_header); int encode_to_header(const LibSip__SIPTypesAndValues::To& p_to, osip_to_t* p_to_header); int encode_via_header(const LibSip__SIPTypesAndValues::Via& p_via, osip_via_t* p_via_header); int encode_sip_url(const LibSip__SIPTypesAndValues::SipUrl& p_sip_uri, osip_uri_t** p_uri); void encode_host_port(const LibSip__SIPTypesAndValues::HostPort& p_host_port, std::string& p_host, std::string& p_port); private: //! \todo Move this section into a sip_codec_helper class, need to decode Response too void decode_message_body(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); void decode_payload(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& p_request); void decode_uri(LibSip__SIPTypesAndValues::SipUrl& p_sip_url, const osip_uri_t* p_uri); void decode_request_line(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); void decode_headers(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Request& msg); // TODO Replace const osip_message_t* p_sip_message by header specific type using osip_parser.h/macros such as osip_message_get_accept/osip_accept_t void decode_accept_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Accept& p_accept_header); void decode_accept_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptContact& p_accept_contact_header); void decode_accept_encoding_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptEncoding& p_accept_encoding_header); void decode_accept_language_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AcceptLanguage& p_accept_language_header); void decode_alert_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AlertInfo& p_alert_info_header); void decode_allow_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Allow& p_allow_header); void decode_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header); void decode_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header); void decode_call_id_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CallId& p_call_id_header); void decode_content_length_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::ContentLength& p_content_length_header); void decode_content_type_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::ContentType& p_content_type_header); void decode_c_seq_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CSeq& p_c_seq_header); void decode_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header); void decode_max_forwards_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::MaxForwards& p_max_forwards_header); void decode_supported_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Supported& p_supported_header); void decode_to_header(const osip_to_t* p_sip_to, LibSip__SIPTypesAndValues::To& p_to_header); void decode_via_header(const osip_message_t* p_sip_via_list, LibSip__SIPTypesAndValues::Via& p_via_header); void decode_host_port(const char* p_host, const char* p_port, LibSip__SIPTypesAndValues::HostPort& p_host_port); void decode_semi_colon_params(const osip_list_t& p_sip_list, OPTIONAL<LibSip__Common::SemicolonParam__List>& p_list); void decode_ampersand_params(const osip_list_t& p_sip_list, OPTIONAL<LibSip__Common::AmpersandParam__List>& p_list); void decode_option_tag_list(const char* p_list, OPTIONAL<LibSip__SIPTypesAndValues::OptionTag__List>& p_options_tags); }; // End of class sip_codec_request