diff --git a/sml/include/sml/sml_close_request.h b/sml/include/sml/sml_close_request.h index 240549c..db62da2 100644 --- a/sml/include/sml/sml_close_request.h +++ b/sml/include/sml/sml_close_request.h @@ -31,11 +31,8 @@ typedef struct { } sml_close_request; sml_close_request *sml_close_request_init(); - -void sml_close_request_write(sml_close_request *msg, sml_buffer *buf); - sml_close_request * sml_close_request_parse(sml_buffer *buf); - +void sml_close_request_write(sml_close_request *msg, sml_buffer *buf); void sml_close_request_free(sml_close_request *msg); #ifdef __cplusplus diff --git a/sml/include/sml/sml_close_response.h b/sml/include/sml/sml_close_response.h index 0a6a2fb..2603313 100644 --- a/sml/include/sml/sml_close_response.h +++ b/sml/include/sml/sml_close_response.h @@ -28,8 +28,9 @@ extern "C" { typedef sml_close_request sml_close_response; +sml_close_response *sml_close_response_init(); sml_close_response *sml_close_response_parse(sml_buffer *buf); - +void sml_close_response_write(sml_close_response *msg, sml_buffer *buf); void sml_close_response_free(sml_close_response *msg); #ifdef __cplusplus diff --git a/sml/src/sml_close_request.c b/sml/src/sml_close_request.c index 1a64893..b7a6a38 100644 --- a/sml/src/sml_close_request.c +++ b/sml/src/sml_close_request.c @@ -27,17 +27,8 @@ sml_close_request *sml_close_request_init() { return close_request; } -void sml_close_request_write(sml_close_request *msg, sml_buffer *buf) { - sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 1); - - if (msg->global_signature != NULL){ - sml_octet_string_write(msg->global_signature,buf); - } else sml_buf_optional_write(buf); -} - sml_close_request * sml_close_request_parse(sml_buffer *buf) { - sml_close_request *msg = (sml_close_request *) malloc(sizeof(sml_close_request)); - memset(msg, 0, sizeof(sml_close_request)); + sml_close_request *msg = sml_close_request_init(); if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) { buf->error = 1; @@ -59,11 +50,15 @@ error: return 0; } +void sml_close_request_write(sml_close_request *msg, sml_buffer *buf) { + sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 1); + sml_octet_string_write(msg->global_signature,buf); +} + void sml_close_request_free(sml_close_request *msg) { if (msg) { sml_octet_string_free(msg->global_signature); free(msg); - } } diff --git a/sml/src/sml_close_response.c b/sml/src/sml_close_response.c index f34690c..5518290 100644 --- a/sml/src/sml_close_response.c +++ b/sml/src/sml_close_response.c @@ -20,12 +20,16 @@ #include #include +sml_close_response *sml_close_response_init() { + sml_close_response *msg = (sml_close_response *) malloc(sizeof(sml_close_response)); + memset(msg, 0, sizeof(sml_close_response)); + return msg; +} + sml_close_response *sml_close_response_parse(sml_buffer *buf) { - - sml_close_response *msg = (sml_close_response *) malloc(sizeof(sml_close_response)); - memset(msg, 0, sizeof(sml_close_response)); - - if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) { + sml_close_response *msg = sml_close_response_init(); + + if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) { buf->error = 1; goto error; } @@ -34,21 +38,25 @@ sml_close_response *sml_close_response_parse(sml_buffer *buf) { buf->error = 1; goto error; } - - msg->global_signature = sml_octet_string_parse(buf); - if (sml_buf_has_errors(buf)) goto error; - - return msg; - + + msg->global_signature = sml_octet_string_parse(buf); + if (sml_buf_has_errors(buf)) goto error; + + return msg; + error: sml_close_response_free(msg); return 0; - +} + +void sml_close_response_write(sml_close_response *msg, sml_buffer *buf) { + sml_buf_set_type_and_length(buf, SML_TYPE_LIST, 1); + sml_octet_string_write(msg->global_signature,buf); } void sml_close_response_free(sml_close_response *msg) { - if (msg) { - sml_octet_string_free(msg->global_signature); - free(msg); - } + if (msg) { + sml_octet_string_free(msg->global_signature); + free(msg); + } }