From cf8482c83c389b4d1e8d5364212b68dc77a73573 Mon Sep 17 00:00:00 2001 From: Juri Glass Date: Thu, 14 Jul 2011 12:54:11 +0200 Subject: [PATCH] used new number/boolean free methods, utilized new optional handling --- sml/src/sml_get_list_request.c | 25 ++---------- sml/src/sml_get_proc_parameter_request.c | 23 +++-------- sml/src/sml_list.c | 2 + sml/src/sml_message.c | 11 ++++-- sml/src/sml_open_request.c | 50 ++++++------------------ sml/src/sml_open_response.c | 3 +- sml/src/sml_set_proc_parameter_request.c | 17 +++++--- sml/src/sml_status.c | 1 + sml/src/sml_time.c | 8 ++-- sml/src/sml_value.c | 14 +++++-- 10 files changed, 61 insertions(+), 93 deletions(-) diff --git a/sml/src/sml_get_list_request.c b/sml/src/sml_get_list_request.c index 42fa45e..ddaa6e0 100644 --- a/sml/src/sml_get_list_request.c +++ b/sml/src/sml_get_list_request.c @@ -31,27 +31,10 @@ void sml_get_list_request_write(sml_get_list_request *msg, sml_buffer *buf) { sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 5); sml_octet_string_write(msg->client_id, buf); - - // optional server_id - if (msg->server_id != NULL){ - sml_octet_string_write(msg->server_id, buf); - } else sml_buf_optional_write(buf); - - // optional username - if (msg->username != NULL){ - sml_octet_string_write(msg->username, buf); - } else sml_buf_optional_write(buf); - - // optional password - if (msg->password != NULL){ - sml_octet_string_write(msg->password, buf); - } else sml_buf_optional_write(buf); - - // optional list_name - if (msg->list_name != NULL){ - sml_octet_string_write(msg->list_name,buf); - } else sml_buf_optional_write(buf); - + sml_octet_string_write(msg->server_id, buf); + sml_octet_string_write(msg->username, buf); + sml_octet_string_write(msg->password, buf); + sml_octet_string_write(msg->list_name,buf); } diff --git a/sml/src/sml_get_proc_parameter_request.c b/sml/src/sml_get_proc_parameter_request.c index 8309816..9820df7 100644 --- a/sml/src/sml_get_proc_parameter_request.c +++ b/sml/src/sml_get_proc_parameter_request.c @@ -31,24 +31,11 @@ sml_get_proc_parameter_request *sml_get_proc_parameter_request_init() { 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); - // optional server_id - if (msg->server_id != NULL){ - sml_octet_string_write(msg->server_id, buf); - } else sml_buf_optional_write(buf); - - // optional username - if (msg->username != NULL) { - sml_octet_string_write(msg->username, buf); - } else sml_buf_optional_write(buf); - - // optional password - if (msg->password != NULL){ - sml_octet_string_write(msg->password, buf); - } else sml_buf_optional_write(buf); - - sml_tree_path_write(msg->parameter_tree_path, buf); - - sml_tree_write(msg->parameter_tree, buf); + sml_octet_string_write(msg->server_id, buf); + sml_octet_string_write(msg->username, buf); + sml_octet_string_write(msg->password, buf); + sml_tree_path_write(msg->parameter_tree_path, buf); + sml_tree_write(msg->parameter_tree, buf); } void sml_get_proc_parameter_request_free(sml_get_proc_parameter_request *msg) { diff --git a/sml/src/sml_list.c b/sml/src/sml_list.c index ac8096b..2d6e611 100644 --- a/sml/src/sml_list.c +++ b/sml/src/sml_list.c @@ -111,6 +111,8 @@ void sml_list_entry_free(sml_list *list) { sml_octet_string_free(list->obj_name); sml_status_free(list->status); sml_time_free(list->val_time); + sml_number_free(list->unit); + sml_number_free(list->scaler); sml_value_free(list->value); sml_octet_string_free(list->value_signature); free(list); diff --git a/sml/src/sml_message.c b/sml/src/sml_message.c index 4119ef6..6437320 100644 --- a/sml/src/sml_message.c +++ b/sml/src/sml_message.c @@ -84,10 +84,11 @@ sml_message *sml_message_init() { void sml_message_free(sml_message *msg) { if (msg) { - if (msg->transaction_id) - sml_octet_string_free(msg->transaction_id); - if (msg->message_body) - sml_message_body_free(msg->message_body); + sml_octet_string_free(msg->transaction_id); + sml_number_free(msg->group_id); + sml_number_free(msg->abort_on_error); + sml_message_body_free(msg->message_body); + sml_number_free(msg->crc); free(msg); } } @@ -200,6 +201,8 @@ void sml_message_body_write(sml_message_body *message_body, sml_buffer *buf) { void sml_message_body_free(sml_message_body *message_body) { if (message_body) { + sml_number_free(message_body->tag); + switch (*(message_body->tag)) { case SML_MESSAGE_OPEN_REQUEST: sml_open_request_free((sml_open_request *) message_body->data); diff --git a/sml/src/sml_open_request.c b/sml/src/sml_open_request.c index b0748b3..b7f4a51 100644 --- a/sml/src/sml_open_request.c +++ b/sml/src/sml_open_request.c @@ -29,43 +29,16 @@ sml_open_request *sml_open_request_init(){ return open_request; } -/* -sml_open_request *sml_open_request_init(char* client_id,char* req_file_id, char* server_id){ - sml_open_request *open_request = (sml_open_request *) malloc(sizeof(sml_open_request)); - memset(open_request, 0, sizeof(sml_open_request)); - - // printf("TODO: %s\n", __FUNCTION__); - open_request->client_id = sml_octet_string_init((unsigned char *)client_id,strlen(client_id)); - open_request->req_file_id = sml_octet_string_init((unsigned char *)req_file_id,strlen(req_file_id)); - open_request->server_id = sml_octet_string_init((unsigned char *)server_id, strlen(server_id)); - return open_request; -} - -sml_open_request *sml_open_request_init() { - // sml_open_request *open_request = (sml_open_request *) malloc(sizeof(sml_open_request)); - //memset(open_request, 0, sizeof(sml_open_request)); - - // printf("TODO: %s\n", __FUNCTION__); - //open_request->username = sml_octet_string_init((unsigned char *)"kunde",5); - //open_request->username = sml_octet_string_init((unsigned char *)"kunde",5); - //open_request->client_id = sml_octet_string_init((unsigned char *)"SEDICMA", 7); - //open_request->req_file_id = sml_octet_string_init((unsigned char *)"01", 2); - char server_id[] ={0x06, 0x45, 0x4d, 0x48, 0x01, 0x02, 0x71, 0x53, 0x3b, 0xcd}; - //open_request->server_id = sml_octet_string_init(server_id, 10); - return sml_open_request_init("SEDICMA", "02", server_id); -} -*/ void sml_open_request_write(sml_open_request *msg, sml_buffer *buf) { sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 7); - sml_buf_optional_write(buf); + sml_octet_string_write(msg->codepage, buf); sml_octet_string_write(msg->client_id, buf); sml_octet_string_write(msg->req_file_id, buf); sml_octet_string_write(msg->server_id, buf); sml_octet_string_write(msg->username,buf); sml_octet_string_write(msg->password,buf); - sml_buf_optional_write(buf); - + sml_u8_write(msg->sml_version, buf); } sml_open_request *sml_open_request_parse(sml_buffer *buf) { @@ -100,7 +73,7 @@ sml_open_request *sml_open_request_parse(sml_buffer *buf) { msg->password = sml_octet_string_parse(buf); if (sml_buf_has_errors(buf)) goto error; - msg->sml_version = SML_SKIP_OPTIONAL sml_u8_parse(buf); + msg->sml_version = sml_u8_parse(buf); if (sml_buf_has_errors(buf)) goto error; return msg; @@ -111,13 +84,16 @@ error: } void sml_open_request_free(sml_open_request *msg) { - free(msg->client_id); - free(msg->password); - free(msg->req_file_id); - free(msg->server_id); - free(msg->username); - free(msg); - // printf("NYI: %s\n", __FUNCTION__); + if (msg) { + sml_octet_string_free(msg->codepage); + sml_octet_string_free(msg->client_id); + sml_octet_string_free(msg->req_file_id); + sml_octet_string_free(msg->server_id); + sml_octet_string_free(msg->username); + sml_octet_string_free(msg->password); + sml_number_free(msg->sml_version); + free(msg); + } } diff --git a/sml/src/sml_open_response.c b/sml/src/sml_open_response.c index f957c96..ec15844 100644 --- a/sml/src/sml_open_response.c +++ b/sml/src/sml_open_response.c @@ -50,7 +50,7 @@ sml_open_response *sml_open_response_parse(sml_buffer *buf) { msg->ref_time = SML_SKIP_OPTIONAL sml_time_parse(buf); if (sml_buf_has_errors(buf)) goto error; - msg->sml_version = SML_SKIP_OPTIONAL sml_u8_parse(buf); + msg->sml_version = sml_u8_parse(buf); if (sml_buf_has_errors(buf)) goto error; return msg; @@ -66,6 +66,7 @@ void sml_open_response_free(sml_open_response *msg) { sml_octet_string_free(msg->req_file_id); sml_octet_string_free(msg->server_id); sml_time_free(msg->ref_time); + sml_number_free(msg->sml_version); free(msg); } } diff --git a/sml/src/sml_set_proc_parameter_request.c b/sml/src/sml_set_proc_parameter_request.c index b9e4a5e..ac33fb2 100644 --- a/sml/src/sml_set_proc_parameter_request.c +++ b/sml/src/sml_set_proc_parameter_request.c @@ -19,8 +19,6 @@ #include -#include - sml_set_proc_parameter_request *sml_set_proc_parameter_request_init() { sml_set_proc_parameter_request *msg = (sml_set_proc_parameter_request *) malloc(sizeof (sml_set_proc_parameter_request)); memset(msg, 0, sizeof(sml_set_proc_parameter_request)); @@ -29,15 +27,22 @@ sml_set_proc_parameter_request *sml_set_proc_parameter_request_init() { 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_buf_optional_write(buf); - sml_buf_optional_write(buf); - sml_buf_optional_write(buf); + sml_octet_string_write(msg->server_id, buf); + sml_octet_string_write(msg->username, buf); + sml_octet_string_write(msg->password, buf); sml_tree_path_write(msg->parameter_tree_path, buf); sml_tree_write(msg->parameter_tree, buf); } void sml_set_proc_parameter_request_free(sml_set_proc_parameter_request *msg) { - printf("NYI: %s\n", __FUNCTION__); + if (msg) { + sml_octet_string_free(msg->server_id); + sml_octet_string_free(msg->username); + sml_octet_string_free(msg->password); + sml_tree_path_free(msg->parameter_tree_path); + sml_tree_free(msg->parameter_tree); + free(msg); + } } diff --git a/sml/src/sml_status.c b/sml/src/sml_status.c index 359e5ff..65ffc2b 100644 --- a/sml/src/sml_status.c +++ b/sml/src/sml_status.c @@ -63,6 +63,7 @@ sml_status *sml_status_parse(sml_buffer *buf) { void sml_status_free(sml_status *status) { if (status) { + sml_number_free(status->status8); free(status); } } diff --git a/sml/src/sml_time.c b/sml/src/sml_time.c index acf1fdb..83da1ad 100644 --- a/sml/src/sml_time.c +++ b/sml/src/sml_time.c @@ -57,8 +57,10 @@ void sml_time_write(sml_time *time, sml_buffer *buf) { sml_buf_optional_write(buf); } -void sml_time_free(sml_time *time) { - if (time) { - free(time); +void sml_time_free(sml_time *tme) { + if (tme) { + sml_number_free(tme->tag); + sml_number_free(tme->data); + free(tme); } } diff --git a/sml/src/sml_value.c b/sml/src/sml_value.c index bc29804..141b16e 100644 --- a/sml/src/sml_value.c +++ b/sml/src/sml_value.c @@ -117,9 +117,17 @@ sml_value *sml_value_init() { void sml_value_free(sml_value *value) { if (value) { - if (value->type == SML_TYPE_OCTET_STRING) { - sml_octet_string_free(value->data.bytes); - } + switch (value->type) { + case SML_TYPE_OCTET_STRING: + sml_octet_string_free(value->data.bytes); + break; + case SML_TYPE_BOOLEAN: + sml_boolean_free(value->data.boolean); + break; + default: + sml_number_free(value->data.int8); + break; + } free(value); } }