From 2b00599087529801cd71aa87294bda5f8390f564 Mon Sep 17 00:00:00 2001 From: Juri Glass Date: Mon, 22 Aug 2011 18:11:02 +0200 Subject: [PATCH] added parse to set_proc_parameter_request --- .../sml/sml_set_proc_parameter_request.h | 3 +- sml/src/sml_set_proc_parameter_request.c | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/sml/include/sml/sml_set_proc_parameter_request.h b/sml/include/sml/sml_set_proc_parameter_request.h index f1b3146..3201dab 100644 --- a/sml/include/sml/sml_set_proc_parameter_request.h +++ b/sml/include/sml/sml_set_proc_parameter_request.h @@ -37,9 +37,8 @@ typedef struct { } sml_set_proc_parameter_request; sml_set_proc_parameter_request *sml_set_proc_parameter_request_init(); - +sml_set_proc_parameter_request *sml_set_proc_parameter_request_parse(sml_buffer *buf); void sml_set_proc_parameter_request_write(sml_set_proc_parameter_request *msg, sml_buffer *buf); - void sml_set_proc_parameter_request_free(sml_set_proc_parameter_request *msg); #ifdef __cplusplus diff --git a/sml/src/sml_set_proc_parameter_request.c b/sml/src/sml_set_proc_parameter_request.c index ac33fb2..f2f56fd 100644 --- a/sml/src/sml_set_proc_parameter_request.c +++ b/sml/src/sml_set_proc_parameter_request.c @@ -25,6 +25,36 @@ sml_set_proc_parameter_request *sml_set_proc_parameter_request_init() { return msg; } +sml_set_proc_parameter_request *sml_set_proc_parameter_request_parse(sml_buffer *buf) { + sml_set_proc_parameter_request *msg = sml_set_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_set_proc_parameter_request_free(msg); + return 0; +} + void sml_set_proc_parameter_request_write(sml_set_proc_parameter_request *msg, sml_buffer *buf) { sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 5); sml_octet_string_write(msg->server_id, buf);