From b2a6c23b41fdc640590f364d909bbda2bf847dac Mon Sep 17 00:00:00 2001 From: Juri Glass Date: Mon, 22 Aug 2011 17:08:32 +0200 Subject: [PATCH] added parse to get_proc_parameter_request --- .../sml/sml_get_proc_parameter_request.h | 3 +- sml/src/sml_get_proc_parameter_request.c | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/sml/include/sml/sml_get_proc_parameter_request.h b/sml/include/sml/sml_get_proc_parameter_request.h index 5651235..7c5a6c2 100644 --- a/sml/include/sml/sml_get_proc_parameter_request.h +++ b/sml/include/sml/sml_get_proc_parameter_request.h @@ -37,9 +37,8 @@ typedef struct { } sml_get_proc_parameter_request; sml_get_proc_parameter_request *sml_get_proc_parameter_request_init(); - +sml_get_proc_parameter_request *sml_get_proc_parameter_request_parse(sml_buffer *buf); void sml_get_proc_parameter_request_write(sml_get_proc_parameter_request *msg, sml_buffer *buf); - void sml_get_proc_parameter_request_free(sml_get_proc_parameter_request *msg); #ifdef __cplusplus diff --git a/sml/src/sml_get_proc_parameter_request.c b/sml/src/sml_get_proc_parameter_request.c index 9820df7..77915c5 100644 --- a/sml/src/sml_get_proc_parameter_request.c +++ b/sml/src/sml_get_proc_parameter_request.c @@ -28,6 +28,36 @@ sml_get_proc_parameter_request *sml_get_proc_parameter_request_init() { return msg; } +sml_get_proc_parameter_request *sml_get_proc_parameter_request_parse(sml_buffer *buf) { + sml_get_proc_parameter_request *msg = sml_get_proc_parameter_request_init(); + + if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) { + buf->error = 1; + goto error; + } + + if (sml_buf_get_next_length(buf) != 5) { + buf->error = 1; + goto error; + } + + msg->server_id = sml_octet_string_parse(buf); + if (sml_buf_has_errors(buf)) goto error; + msg->username = sml_octet_string_parse(buf); + if (sml_buf_has_errors(buf)) goto error; + msg->password = sml_octet_string_parse(buf); + if (sml_buf_has_errors(buf)) goto error; + msg->parameter_tree_path = sml_tree_path_parse(buf); + if (sml_buf_has_errors(buf)) goto error; + msg->parameter_tree = sml_tree_parse(buf); + if (sml_buf_has_errors(buf)) goto error; + + return msg; +error: + sml_get_proc_parameter_request_free(msg); + return 0; +} + void sml_get_proc_parameter_request_write(sml_get_proc_parameter_request *msg, sml_buffer *buf) { sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 5);