/* * Copyright (C) 2012 Doubango Telecom <http://www.doubango.org> * License: BSD * This file is part of Open Source sipML5 solution <http://www.sipml5.org> */ tsdp_header_C.prototype = Object.create(tsdp_header.prototype); %%{ machine tsdp_machine_parser_header_C; # Includes include tsdp_machine_utils "./tsdp_machine_utils.jrl"; action tag{ i_tag_start = p; } action parse_nettype{ hdr_C.s_nettype = tsk_ragel_parser_get_string(s_str, p, i_tag_start); } action parse_addrtype{ hdr_C.s_addrtype = tsk_ragel_parser_get_string(s_str, p, i_tag_start); } action parse_addr{ hdr_C.s_addr = tsk_ragel_parser_get_string(s_str, p, i_tag_start); } nettype = js_any* >tag %parse_nettype; addrtype = js_any* >tag %parse_addrtype; addr = js_any* >tag %parse_addr; C = 'c' SP* "=" SP*<: nettype :>SP addrtype :>SP addr; # Entry point main := C :>CRLF?; }%% %%write data; function tsdp_header_C(s_nettype, s_addrtype, s_addr){ tsdp_header.call(this, tsdp_header_type_e.C); this.s_nettype = s_nettype; this.s_addrtype = s_addrtype; this.s_addr = s_addr; } tsdp_header_C.prototype.toString = function(){ return tsk_string_format("{0} {1} {2}", this.s_nettype, this.s_addrtype, this.s_addr); } tsdp_header_C.prototype.Parse = function(s_str){ var cs = 0; var p = 0; var pe = s_str.length; var eof = pe; var data = tsk_buff_str2ib(s_str); var i_tag_start; var hdr_C = new tsdp_header_C(null, null, null); %%write init; %%write exec; if( cs < %%{ write first_final; }%% ){ tsk_utils_log_error("Failed to parse \"c=\" header: " + s_str); return null; } return hdr_C; }