sml_attention_response *sml_attention_response_parse(sml_buffer *buf){ sml_attention_response *msg = sml_attention_response_init(); if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) { buf->error = 1; goto error; } if (sml_buf_get_next_length(buf) != 4) { buf->error = 1; goto error; } msg->server_id = sml_octet_string_parse(buf); if (sml_buf_has_errors(buf)) goto error; msg->attention_number = sml_octet_string_parse(buf); if (sml_buf_has_errors(buf)) goto error; msg->attention_message = sml_octet_string_parse(buf); if (sml_buf_has_errors(buf)) goto error; msg->attention_details = sml_tree_parse(buf); if (sml_buf_has_errors(buf)) goto error; return msg; error: sml_attention_response_free(msg); return 0; }
void sml_message_body_free(sml_message_body *message_body) { if (message_body) { switch (*(message_body->tag)) { case SML_MESSAGE_OPEN_REQUEST: sml_open_request_free((sml_open_request *) message_body->data); break; case SML_MESSAGE_OPEN_RESPONSE: sml_open_response_free((sml_open_response *) message_body->data); break; case SML_MESSAGE_CLOSE_REQUEST: sml_close_request_free((sml_close_request *) message_body->data); break; case SML_MESSAGE_CLOSE_RESPONSE: sml_close_response_free((sml_close_response *) message_body->data); break; case SML_MESSAGE_GET_PROFILE_PACK_REQUEST: sml_get_profile_pack_request_free((sml_get_profile_pack_request *) message_body->data); break; case SML_MESSAGE_GET_PROFILE_PACK_RESPONSE: sml_get_profile_pack_response_free((sml_get_profile_pack_response *) message_body->data); break; case SML_MESSAGE_GET_PROFILE_LIST_REQUEST: sml_get_profile_list_request_free((sml_get_profile_list_request *) message_body->data); break; case SML_MESSAGE_GET_PROFILE_LIST_RESPONSE: sml_get_profile_list_response_free((sml_get_profile_list_response *) message_body->data); break; case SML_MESSAGE_GET_PROC_PARAMETER_REQUEST: sml_get_proc_parameter_request_free((sml_get_proc_parameter_request *) message_body->data); break; case SML_MESSAGE_GET_PROC_PARAMETER_RESPONSE: sml_get_proc_parameter_response_free((sml_get_proc_parameter_response *) message_body->data); break; case SML_MESSAGE_SET_PROC_PARAMETER_REQUEST: sml_set_proc_parameter_request_free((sml_set_proc_parameter_request *) message_body->data); break; case SML_MESSAGE_GET_LIST_REQUEST: sml_get_list_request_free((sml_get_list_request *) message_body->data); break; case SML_MESSAGE_GET_LIST_RESPONSE: sml_get_list_response_free((sml_get_list_response *) message_body->data); break; case SML_MESSAGE_ATTENTION_RESPONSE: sml_attention_response_free((sml_attention_response *) message_body->data); break; default: printf("NYI: %s for message type %04X\n", __FUNCTION__, *(message_body->tag)); break; } sml_number_free(message_body->tag); free(message_body); } }