A small memory footprint AMQP implimentation
Dependents: iothub_client_sample_amqp remote_monitoring simplesample_amqp
Diff: amqp_definitions.c
- Revision:
- 23:1111ee8bcba4
- Parent:
- 21:f9c433d8e6ca
- Child:
- 25:1101516ee67d
diff -r 524bded3f7a8 -r 1111ee8bcba4 amqp_definitions.c --- a/amqp_definitions.c Thu Apr 06 14:11:27 2017 -0700 +++ b/amqp_definitions.c Fri Apr 21 14:50:32 2017 -0700 @@ -230,78 +230,116 @@ } else { - do - { - AMQP_VALUE item_value; - /* condition */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - { - error_destroy(*error_handle); - result = __FAILURE__; - break; - } - } - else - { - const char* condition; - if (amqpvalue_get_symbol(item_value, &condition) != 0) - { - error_destroy(*error_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* description */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* description; - if (amqpvalue_get_string(item_value, &description) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - error_destroy(*error_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* info */ - item_value = amqpvalue_get_list_item(list_value, 2); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - fields info; - if (amqpvalue_get_fields(item_value, &info) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - error_destroy(*error_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - error_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* condition */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + { + error_destroy(*error_handle); + result = __FAILURE__; + break; + } + } + else + { + const char* condition; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + error_destroy(*error_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_symbol(item_value, &condition) != 0) + { + error_destroy(*error_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* description */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* description; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_string(item_value, &description) != 0) + { + error_destroy(*error_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* info */ + if (list_item_count > 2) + { + item_value = amqpvalue_get_list_item(list_value, 2); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + fields info; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_fields(item_value, &info) != 0) + { + error_destroy(*error_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + error_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -318,22 +356,38 @@ } else { + uint32_t item_count; ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)error; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(error_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_symbol(item_value, condition_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(error_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(error_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_symbol(item_value, condition_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -384,22 +438,38 @@ } else { + uint32_t item_count; ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)error; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(error_instance->composite_value, 1); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_string(item_value, description_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(error_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(error_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_string(item_value, description_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -450,22 +520,38 @@ } else { + uint32_t item_count; ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)error; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(error_instance->composite_value, 2); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_fields(item_value, info_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(error_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 2) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(error_instance->composite_value, 2); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_fields(item_value, info_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -663,233 +749,320 @@ } else { - do - { - AMQP_VALUE item_value; - /* container-id */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - { - open_destroy(*open_handle); - result = __FAILURE__; - break; - } - } - else - { - const char* container_id; - if (amqpvalue_get_string(item_value, &container_id) != 0) - { - open_destroy(*open_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* hostname */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* hostname; - if (amqpvalue_get_string(item_value, &hostname) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - open_destroy(*open_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* max-frame-size */ - item_value = amqpvalue_get_list_item(list_value, 2); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - uint32_t max_frame_size; - if (amqpvalue_get_uint(item_value, &max_frame_size) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - open_destroy(*open_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* channel-max */ - item_value = amqpvalue_get_list_item(list_value, 3); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - uint16_t channel_max; - if (amqpvalue_get_ushort(item_value, &channel_max) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - open_destroy(*open_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* idle-time-out */ - item_value = amqpvalue_get_list_item(list_value, 4); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - milliseconds idle_time_out; - if (amqpvalue_get_milliseconds(item_value, &idle_time_out) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - open_destroy(*open_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* outgoing-locales */ - item_value = amqpvalue_get_list_item(list_value, 5); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - ietf_language_tag outgoing_locales; - AMQP_VALUE outgoing_locales_array; - if ((amqpvalue_get_array(item_value, &outgoing_locales_array) != 0) && - (amqpvalue_get_ietf_language_tag(item_value, &outgoing_locales) != 0)) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - open_destroy(*open_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* incoming-locales */ - item_value = amqpvalue_get_list_item(list_value, 6); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - ietf_language_tag incoming_locales; - AMQP_VALUE incoming_locales_array; - if ((amqpvalue_get_array(item_value, &incoming_locales_array) != 0) && - (amqpvalue_get_ietf_language_tag(item_value, &incoming_locales) != 0)) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - open_destroy(*open_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* offered-capabilities */ - item_value = amqpvalue_get_list_item(list_value, 7); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* offered_capabilities; - AMQP_VALUE offered_capabilities_array; - if ((amqpvalue_get_array(item_value, &offered_capabilities_array) != 0) && - (amqpvalue_get_symbol(item_value, &offered_capabilities) != 0)) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - open_destroy(*open_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* desired-capabilities */ - item_value = amqpvalue_get_list_item(list_value, 8); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* desired_capabilities; - AMQP_VALUE desired_capabilities_array; - if ((amqpvalue_get_array(item_value, &desired_capabilities_array) != 0) && - (amqpvalue_get_symbol(item_value, &desired_capabilities) != 0)) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - open_destroy(*open_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* properties */ - item_value = amqpvalue_get_list_item(list_value, 9); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - fields properties; - if (amqpvalue_get_fields(item_value, &properties) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - open_destroy(*open_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - open_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* container-id */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + { + open_destroy(*open_handle); + result = __FAILURE__; + break; + } + } + else + { + const char* container_id; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + open_destroy(*open_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_string(item_value, &container_id) != 0) + { + open_destroy(*open_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* hostname */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* hostname; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_string(item_value, &hostname) != 0) + { + open_destroy(*open_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* max-frame-size */ + if (list_item_count > 2) + { + item_value = amqpvalue_get_list_item(list_value, 2); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + uint32_t max_frame_size; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_uint(item_value, &max_frame_size) != 0) + { + open_destroy(*open_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* channel-max */ + if (list_item_count > 3) + { + item_value = amqpvalue_get_list_item(list_value, 3); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + uint16_t channel_max; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_ushort(item_value, &channel_max) != 0) + { + open_destroy(*open_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* idle-time-out */ + if (list_item_count > 4) + { + item_value = amqpvalue_get_list_item(list_value, 4); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + milliseconds idle_time_out; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_milliseconds(item_value, &idle_time_out) != 0) + { + open_destroy(*open_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* outgoing-locales */ + if (list_item_count > 5) + { + item_value = amqpvalue_get_list_item(list_value, 5); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + ietf_language_tag outgoing_locales; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + AMQP_VALUE outgoing_locales_array; + if ((amqpvalue_get_array(item_value, &outgoing_locales_array) != 0) && + (amqpvalue_get_ietf_language_tag(item_value, &outgoing_locales) != 0)) + { + open_destroy(*open_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* incoming-locales */ + if (list_item_count > 6) + { + item_value = amqpvalue_get_list_item(list_value, 6); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + ietf_language_tag incoming_locales; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + AMQP_VALUE incoming_locales_array; + if ((amqpvalue_get_array(item_value, &incoming_locales_array) != 0) && + (amqpvalue_get_ietf_language_tag(item_value, &incoming_locales) != 0)) + { + open_destroy(*open_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* offered-capabilities */ + if (list_item_count > 7) + { + item_value = amqpvalue_get_list_item(list_value, 7); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* offered_capabilities; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + AMQP_VALUE offered_capabilities_array; + if ((amqpvalue_get_array(item_value, &offered_capabilities_array) != 0) && + (amqpvalue_get_symbol(item_value, &offered_capabilities) != 0)) + { + open_destroy(*open_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* desired-capabilities */ + if (list_item_count > 8) + { + item_value = amqpvalue_get_list_item(list_value, 8); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* desired_capabilities; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + AMQP_VALUE desired_capabilities_array; + if ((amqpvalue_get_array(item_value, &desired_capabilities_array) != 0) && + (amqpvalue_get_symbol(item_value, &desired_capabilities) != 0)) + { + open_destroy(*open_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* properties */ + if (list_item_count > 9) + { + item_value = amqpvalue_get_list_item(list_value, 9); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + fields properties; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_fields(item_value, &properties) != 0) + { + open_destroy(*open_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + open_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -906,22 +1079,38 @@ } else { + uint32_t item_count; OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_string(item_value, container_id_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(open_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_string(item_value, container_id_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -972,22 +1161,38 @@ } else { + uint32_t item_count; OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 1); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_string(item_value, hostname_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(open_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_string(item_value, hostname_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -1038,31 +1243,48 @@ } else { + uint32_t item_count; OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 2); - if (item_value == NULL) - { - *max_frame_size_value = 4294967295u; - result = 0; - } - else - { - if (amqpvalue_get_uint(item_value, max_frame_size_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(open_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 2) + { + *max_frame_size_value = 4294967295u; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 2); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *max_frame_size_value = 4294967295u; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_uint(item_value, max_frame_size_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *max_frame_size_value = 4294967295u; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -1113,31 +1335,48 @@ } else { + uint32_t item_count; OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 3); - if (item_value == NULL) - { - *channel_max_value = 65535; - result = 0; - } - else - { - if (amqpvalue_get_ushort(item_value, channel_max_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(open_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 3) + { + *channel_max_value = 65535; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 3); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *channel_max_value = 65535; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_ushort(item_value, channel_max_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *channel_max_value = 65535; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -1188,22 +1427,38 @@ } else { + uint32_t item_count; OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 4); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_milliseconds(item_value, idle_time_out_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(open_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 4) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 4); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_milliseconds(item_value, idle_time_out_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -1254,22 +1509,38 @@ } else { + uint32_t item_count; OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 5); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_array(item_value, outgoing_locales_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(open_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 5) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 5); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_array(item_value, outgoing_locales_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -1287,7 +1558,15 @@ else { OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; - AMQP_VALUE outgoing_locales_amqp_value = amqpvalue_clone(outgoing_locales_value); + AMQP_VALUE outgoing_locales_amqp_value; + if (outgoing_locales_value == NULL) + { + outgoing_locales_amqp_value = NULL; + } + else + { + outgoing_locales_amqp_value = amqpvalue_clone(outgoing_locales_value); + } if (outgoing_locales_amqp_value == NULL) { result = __FAILURE__; @@ -1320,22 +1599,38 @@ } else { + uint32_t item_count; OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 6); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_array(item_value, incoming_locales_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(open_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 6) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 6); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_array(item_value, incoming_locales_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -1353,7 +1648,15 @@ else { OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; - AMQP_VALUE incoming_locales_amqp_value = amqpvalue_clone(incoming_locales_value); + AMQP_VALUE incoming_locales_amqp_value; + if (incoming_locales_value == NULL) + { + incoming_locales_amqp_value = NULL; + } + else + { + incoming_locales_amqp_value = amqpvalue_clone(incoming_locales_value); + } if (incoming_locales_amqp_value == NULL) { result = __FAILURE__; @@ -1386,22 +1689,38 @@ } else { + uint32_t item_count; OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 7); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_array(item_value, offered_capabilities_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(open_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 7) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 7); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_array(item_value, offered_capabilities_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -1419,7 +1738,15 @@ else { OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; - AMQP_VALUE offered_capabilities_amqp_value = amqpvalue_clone(offered_capabilities_value); + AMQP_VALUE offered_capabilities_amqp_value; + if (offered_capabilities_value == NULL) + { + offered_capabilities_amqp_value = NULL; + } + else + { + offered_capabilities_amqp_value = amqpvalue_clone(offered_capabilities_value); + } if (offered_capabilities_amqp_value == NULL) { result = __FAILURE__; @@ -1452,22 +1779,38 @@ } else { + uint32_t item_count; OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 8); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_array(item_value, desired_capabilities_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(open_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 8) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 8); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_array(item_value, desired_capabilities_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -1485,7 +1828,15 @@ else { OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; - AMQP_VALUE desired_capabilities_amqp_value = amqpvalue_clone(desired_capabilities_value); + AMQP_VALUE desired_capabilities_amqp_value; + if (desired_capabilities_value == NULL) + { + desired_capabilities_amqp_value = NULL; + } + else + { + desired_capabilities_amqp_value = amqpvalue_clone(desired_capabilities_value); + } if (desired_capabilities_amqp_value == NULL) { result = __FAILURE__; @@ -1518,22 +1869,38 @@ } else { + uint32_t item_count; OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 9); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_fields(item_value, properties_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(open_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 9) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 9); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_fields(item_value, properties_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -1717,189 +2084,280 @@ } else { - do - { - AMQP_VALUE item_value; - /* remote-channel */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - uint16_t remote_channel; - if (amqpvalue_get_ushort(item_value, &remote_channel) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - begin_destroy(*begin_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* next-outgoing-id */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - { - begin_destroy(*begin_handle); - result = __FAILURE__; - break; - } - } - else - { - transfer_number next_outgoing_id; - if (amqpvalue_get_transfer_number(item_value, &next_outgoing_id) != 0) - { - begin_destroy(*begin_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* incoming-window */ - item_value = amqpvalue_get_list_item(list_value, 2); - if (item_value == NULL) - { - { - begin_destroy(*begin_handle); - result = __FAILURE__; - break; - } - } - else - { - uint32_t incoming_window; - if (amqpvalue_get_uint(item_value, &incoming_window) != 0) - { - begin_destroy(*begin_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* outgoing-window */ - item_value = amqpvalue_get_list_item(list_value, 3); - if (item_value == NULL) - { - { - begin_destroy(*begin_handle); - result = __FAILURE__; - break; - } - } - else - { - uint32_t outgoing_window; - if (amqpvalue_get_uint(item_value, &outgoing_window) != 0) - { - begin_destroy(*begin_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* handle-max */ - item_value = amqpvalue_get_list_item(list_value, 4); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - handle handle_max; - if (amqpvalue_get_handle(item_value, &handle_max) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - begin_destroy(*begin_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* offered-capabilities */ - item_value = amqpvalue_get_list_item(list_value, 5); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* offered_capabilities; - AMQP_VALUE offered_capabilities_array; - if ((amqpvalue_get_array(item_value, &offered_capabilities_array) != 0) && - (amqpvalue_get_symbol(item_value, &offered_capabilities) != 0)) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - begin_destroy(*begin_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* desired-capabilities */ - item_value = amqpvalue_get_list_item(list_value, 6); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* desired_capabilities; - AMQP_VALUE desired_capabilities_array; - if ((amqpvalue_get_array(item_value, &desired_capabilities_array) != 0) && - (amqpvalue_get_symbol(item_value, &desired_capabilities) != 0)) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - begin_destroy(*begin_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* properties */ - item_value = amqpvalue_get_list_item(list_value, 7); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - fields properties; - if (amqpvalue_get_fields(item_value, &properties) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - begin_destroy(*begin_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - begin_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* remote-channel */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + uint16_t remote_channel; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_ushort(item_value, &remote_channel) != 0) + { + begin_destroy(*begin_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* next-outgoing-id */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + { + begin_destroy(*begin_handle); + result = __FAILURE__; + break; + } + } + else + { + transfer_number next_outgoing_id; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + begin_destroy(*begin_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_transfer_number(item_value, &next_outgoing_id) != 0) + { + begin_destroy(*begin_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* incoming-window */ + if (list_item_count > 2) + { + item_value = amqpvalue_get_list_item(list_value, 2); + if (item_value == NULL) + { + { + begin_destroy(*begin_handle); + result = __FAILURE__; + break; + } + } + else + { + uint32_t incoming_window; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + begin_destroy(*begin_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_uint(item_value, &incoming_window) != 0) + { + begin_destroy(*begin_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* outgoing-window */ + if (list_item_count > 3) + { + item_value = amqpvalue_get_list_item(list_value, 3); + if (item_value == NULL) + { + { + begin_destroy(*begin_handle); + result = __FAILURE__; + break; + } + } + else + { + uint32_t outgoing_window; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + begin_destroy(*begin_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_uint(item_value, &outgoing_window) != 0) + { + begin_destroy(*begin_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* handle-max */ + if (list_item_count > 4) + { + item_value = amqpvalue_get_list_item(list_value, 4); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + handle handle_max; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_handle(item_value, &handle_max) != 0) + { + begin_destroy(*begin_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* offered-capabilities */ + if (list_item_count > 5) + { + item_value = amqpvalue_get_list_item(list_value, 5); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* offered_capabilities; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + AMQP_VALUE offered_capabilities_array; + if ((amqpvalue_get_array(item_value, &offered_capabilities_array) != 0) && + (amqpvalue_get_symbol(item_value, &offered_capabilities) != 0)) + { + begin_destroy(*begin_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* desired-capabilities */ + if (list_item_count > 6) + { + item_value = amqpvalue_get_list_item(list_value, 6); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* desired_capabilities; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + AMQP_VALUE desired_capabilities_array; + if ((amqpvalue_get_array(item_value, &desired_capabilities_array) != 0) && + (amqpvalue_get_symbol(item_value, &desired_capabilities) != 0)) + { + begin_destroy(*begin_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* properties */ + if (list_item_count > 7) + { + item_value = amqpvalue_get_list_item(list_value, 7); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + fields properties; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_fields(item_value, &properties) != 0) + { + begin_destroy(*begin_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + begin_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -1916,22 +2374,38 @@ } else { + uint32_t item_count; BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_ushort(item_value, remote_channel_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(begin_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_ushort(item_value, remote_channel_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -1982,22 +2456,38 @@ } else { + uint32_t item_count; BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 1); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_transfer_number(item_value, next_outgoing_id_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(begin_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_transfer_number(item_value, next_outgoing_id_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -2048,22 +2538,38 @@ } else { + uint32_t item_count; BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 2); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_uint(item_value, incoming_window_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(begin_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 2) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 2); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_uint(item_value, incoming_window_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -2114,22 +2620,38 @@ } else { + uint32_t item_count; BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 3); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_uint(item_value, outgoing_window_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(begin_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 3) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 3); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_uint(item_value, outgoing_window_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -2180,31 +2702,48 @@ } else { + uint32_t item_count; BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 4); - if (item_value == NULL) - { - *handle_max_value = 4294967295u; - result = 0; - } - else - { - if (amqpvalue_get_handle(item_value, handle_max_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(begin_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 4) + { + *handle_max_value = 4294967295u; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 4); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *handle_max_value = 4294967295u; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_handle(item_value, handle_max_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *handle_max_value = 4294967295u; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -2255,22 +2794,38 @@ } else { + uint32_t item_count; BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 5); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_array(item_value, offered_capabilities_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(begin_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 5) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 5); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_array(item_value, offered_capabilities_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -2288,7 +2843,15 @@ else { BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; - AMQP_VALUE offered_capabilities_amqp_value = amqpvalue_clone(offered_capabilities_value); + AMQP_VALUE offered_capabilities_amqp_value; + if (offered_capabilities_value == NULL) + { + offered_capabilities_amqp_value = NULL; + } + else + { + offered_capabilities_amqp_value = amqpvalue_clone(offered_capabilities_value); + } if (offered_capabilities_amqp_value == NULL) { result = __FAILURE__; @@ -2321,22 +2884,38 @@ } else { + uint32_t item_count; BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 6); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_array(item_value, desired_capabilities_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(begin_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 6) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 6); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_array(item_value, desired_capabilities_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -2354,7 +2933,15 @@ else { BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; - AMQP_VALUE desired_capabilities_amqp_value = amqpvalue_clone(desired_capabilities_value); + AMQP_VALUE desired_capabilities_amqp_value; + if (desired_capabilities_value == NULL) + { + desired_capabilities_amqp_value = NULL; + } + else + { + desired_capabilities_amqp_value = amqpvalue_clone(desired_capabilities_value); + } if (desired_capabilities_amqp_value == NULL) { result = __FAILURE__; @@ -2387,22 +2974,38 @@ } else { + uint32_t item_count; BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 7); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_fields(item_value, properties_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(begin_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 7) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 7); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_fields(item_value, properties_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -2586,293 +3189,418 @@ } else { - do - { - AMQP_VALUE item_value; - /* name */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - } - else - { - const char* name; - if (amqpvalue_get_string(item_value, &name) != 0) - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* handle */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - } - else - { - handle handle; - if (amqpvalue_get_handle(item_value, &handle) != 0) - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* role */ - item_value = amqpvalue_get_list_item(list_value, 2); - if (item_value == NULL) - { - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - } - else - { - role role; - if (amqpvalue_get_role(item_value, &role) != 0) - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* snd-settle-mode */ - item_value = amqpvalue_get_list_item(list_value, 3); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - sender_settle_mode snd_settle_mode; - if (amqpvalue_get_sender_settle_mode(item_value, &snd_settle_mode) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* rcv-settle-mode */ - item_value = amqpvalue_get_list_item(list_value, 4); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - receiver_settle_mode rcv_settle_mode; - if (amqpvalue_get_receiver_settle_mode(item_value, &rcv_settle_mode) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* source */ - item_value = amqpvalue_get_list_item(list_value, 5); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - amqpvalue_destroy(item_value); - } - /* target */ - item_value = amqpvalue_get_list_item(list_value, 6); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - amqpvalue_destroy(item_value); - } - /* unsettled */ - item_value = amqpvalue_get_list_item(list_value, 7); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - AMQP_VALUE unsettled; - if (amqpvalue_get_map(item_value, &unsettled) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* incomplete-unsettled */ - item_value = amqpvalue_get_list_item(list_value, 8); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool incomplete_unsettled; - if (amqpvalue_get_boolean(item_value, &incomplete_unsettled) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* initial-delivery-count */ - item_value = amqpvalue_get_list_item(list_value, 9); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - sequence_no initial_delivery_count; - if (amqpvalue_get_sequence_no(item_value, &initial_delivery_count) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* max-message-size */ - item_value = amqpvalue_get_list_item(list_value, 10); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - uint64_t max_message_size; - if (amqpvalue_get_ulong(item_value, &max_message_size) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* offered-capabilities */ - item_value = amqpvalue_get_list_item(list_value, 11); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* offered_capabilities; - AMQP_VALUE offered_capabilities_array; - if ((amqpvalue_get_array(item_value, &offered_capabilities_array) != 0) && - (amqpvalue_get_symbol(item_value, &offered_capabilities) != 0)) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* desired-capabilities */ - item_value = amqpvalue_get_list_item(list_value, 12); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* desired_capabilities; - AMQP_VALUE desired_capabilities_array; - if ((amqpvalue_get_array(item_value, &desired_capabilities_array) != 0) && - (amqpvalue_get_symbol(item_value, &desired_capabilities) != 0)) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* properties */ - item_value = amqpvalue_get_list_item(list_value, 13); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - fields properties; - if (amqpvalue_get_fields(item_value, &properties) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - attach_destroy(*attach_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - attach_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* name */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + else + { + const char* name; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_string(item_value, &name) != 0) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* handle */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + else + { + handle handle; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_handle(item_value, &handle) != 0) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* role */ + if (list_item_count > 2) + { + item_value = amqpvalue_get_list_item(list_value, 2); + if (item_value == NULL) + { + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + else + { + role role; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_role(item_value, &role) != 0) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* snd-settle-mode */ + if (list_item_count > 3) + { + item_value = amqpvalue_get_list_item(list_value, 3); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + sender_settle_mode snd_settle_mode; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_sender_settle_mode(item_value, &snd_settle_mode) != 0) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* rcv-settle-mode */ + if (list_item_count > 4) + { + item_value = amqpvalue_get_list_item(list_value, 4); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + receiver_settle_mode rcv_settle_mode; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_receiver_settle_mode(item_value, &rcv_settle_mode) != 0) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* source */ + if (list_item_count > 5) + { + item_value = amqpvalue_get_list_item(list_value, 5); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + amqpvalue_destroy(item_value); + } + } + /* target */ + if (list_item_count > 6) + { + item_value = amqpvalue_get_list_item(list_value, 6); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + amqpvalue_destroy(item_value); + } + } + /* unsettled */ + if (list_item_count > 7) + { + item_value = amqpvalue_get_list_item(list_value, 7); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + AMQP_VALUE unsettled; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_map(item_value, &unsettled) != 0) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* incomplete-unsettled */ + if (list_item_count > 8) + { + item_value = amqpvalue_get_list_item(list_value, 8); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool incomplete_unsettled; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &incomplete_unsettled) != 0) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* initial-delivery-count */ + if (list_item_count > 9) + { + item_value = amqpvalue_get_list_item(list_value, 9); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + sequence_no initial_delivery_count; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_sequence_no(item_value, &initial_delivery_count) != 0) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* max-message-size */ + if (list_item_count > 10) + { + item_value = amqpvalue_get_list_item(list_value, 10); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + uint64_t max_message_size; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_ulong(item_value, &max_message_size) != 0) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* offered-capabilities */ + if (list_item_count > 11) + { + item_value = amqpvalue_get_list_item(list_value, 11); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* offered_capabilities; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + AMQP_VALUE offered_capabilities_array; + if ((amqpvalue_get_array(item_value, &offered_capabilities_array) != 0) && + (amqpvalue_get_symbol(item_value, &offered_capabilities) != 0)) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* desired-capabilities */ + if (list_item_count > 12) + { + item_value = amqpvalue_get_list_item(list_value, 12); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* desired_capabilities; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + AMQP_VALUE desired_capabilities_array; + if ((amqpvalue_get_array(item_value, &desired_capabilities_array) != 0) && + (amqpvalue_get_symbol(item_value, &desired_capabilities) != 0)) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* properties */ + if (list_item_count > 13) + { + item_value = amqpvalue_get_list_item(list_value, 13); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + fields properties; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_fields(item_value, &properties) != 0) + { + attach_destroy(*attach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + attach_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -2889,22 +3617,38 @@ } else { + uint32_t item_count; ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_string(item_value, name_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(attach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_string(item_value, name_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -2955,22 +3699,38 @@ } else { + uint32_t item_count; ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 1); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_handle(item_value, handle_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(attach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_handle(item_value, handle_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -3021,22 +3781,38 @@ } else { + uint32_t item_count; ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 2); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_role(item_value, role_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(attach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 2) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 2); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_role(item_value, role_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -3087,31 +3863,48 @@ } else { + uint32_t item_count; ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 3); - if (item_value == NULL) - { - *snd_settle_mode_value = sender_settle_mode_mixed; - result = 0; - } - else - { - if (amqpvalue_get_sender_settle_mode(item_value, snd_settle_mode_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(attach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 3) + { + *snd_settle_mode_value = sender_settle_mode_mixed; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 3); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *snd_settle_mode_value = sender_settle_mode_mixed; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_sender_settle_mode(item_value, snd_settle_mode_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *snd_settle_mode_value = sender_settle_mode_mixed; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -3162,31 +3955,48 @@ } else { + uint32_t item_count; ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 4); - if (item_value == NULL) - { - *rcv_settle_mode_value = receiver_settle_mode_first; - result = 0; - } - else - { - if (amqpvalue_get_receiver_settle_mode(item_value, rcv_settle_mode_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(attach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 4) + { + *rcv_settle_mode_value = receiver_settle_mode_first; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 4); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *rcv_settle_mode_value = receiver_settle_mode_first; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_receiver_settle_mode(item_value, rcv_settle_mode_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *rcv_settle_mode_value = receiver_settle_mode_first; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -3237,16 +4047,32 @@ } else { + uint32_t item_count; ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 5); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - *source_value = item_value; - result = 0; + if (amqpvalue_get_composite_item_count(attach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 5) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 5); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + *source_value = item_value; + result = 0; + } + } } } @@ -3264,7 +4090,15 @@ else { ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE source_amqp_value = amqpvalue_clone(source_value); + AMQP_VALUE source_amqp_value; + if (source_value == NULL) + { + source_amqp_value = NULL; + } + else + { + source_amqp_value = amqpvalue_clone(source_value); + } if (source_amqp_value == NULL) { result = __FAILURE__; @@ -3297,16 +4131,32 @@ } else { + uint32_t item_count; ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 6); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - *target_value = item_value; - result = 0; + if (amqpvalue_get_composite_item_count(attach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 6) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 6); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + *target_value = item_value; + result = 0; + } + } } } @@ -3324,7 +4174,15 @@ else { ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE target_amqp_value = amqpvalue_clone(target_value); + AMQP_VALUE target_amqp_value; + if (target_value == NULL) + { + target_amqp_value = NULL; + } + else + { + target_amqp_value = amqpvalue_clone(target_value); + } if (target_amqp_value == NULL) { result = __FAILURE__; @@ -3357,22 +4215,38 @@ } else { + uint32_t item_count; ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 7); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_map(item_value, unsettled_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(attach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 7) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 7); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_map(item_value, unsettled_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -3390,7 +4264,15 @@ else { ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE unsettled_amqp_value = amqpvalue_clone(unsettled_value); + AMQP_VALUE unsettled_amqp_value; + if (unsettled_value == NULL) + { + unsettled_amqp_value = NULL; + } + else + { + unsettled_amqp_value = amqpvalue_clone(unsettled_value); + } if (unsettled_amqp_value == NULL) { result = __FAILURE__; @@ -3423,31 +4305,48 @@ } else { + uint32_t item_count; ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 8); - if (item_value == NULL) - { - *incomplete_unsettled_value = false; - result = 0; - } - else - { - if (amqpvalue_get_boolean(item_value, incomplete_unsettled_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(attach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 8) + { + *incomplete_unsettled_value = false; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 8); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *incomplete_unsettled_value = false; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_boolean(item_value, incomplete_unsettled_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *incomplete_unsettled_value = false; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -3498,22 +4397,38 @@ } else { + uint32_t item_count; ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 9); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_sequence_no(item_value, initial_delivery_count_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(attach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 9) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 9); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_sequence_no(item_value, initial_delivery_count_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -3564,22 +4479,38 @@ } else { + uint32_t item_count; ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 10); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_ulong(item_value, max_message_size_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(attach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 10) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 10); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_ulong(item_value, max_message_size_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -3630,22 +4561,38 @@ } else { + uint32_t item_count; ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 11); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_array(item_value, offered_capabilities_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(attach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 11) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 11); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_array(item_value, offered_capabilities_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -3663,7 +4610,15 @@ else { ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE offered_capabilities_amqp_value = amqpvalue_clone(offered_capabilities_value); + AMQP_VALUE offered_capabilities_amqp_value; + if (offered_capabilities_value == NULL) + { + offered_capabilities_amqp_value = NULL; + } + else + { + offered_capabilities_amqp_value = amqpvalue_clone(offered_capabilities_value); + } if (offered_capabilities_amqp_value == NULL) { result = __FAILURE__; @@ -3696,22 +4651,38 @@ } else { + uint32_t item_count; ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 12); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_array(item_value, desired_capabilities_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(attach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 12) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 12); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_array(item_value, desired_capabilities_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -3729,7 +4700,15 @@ else { ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE desired_capabilities_amqp_value = amqpvalue_clone(desired_capabilities_value); + AMQP_VALUE desired_capabilities_amqp_value; + if (desired_capabilities_value == NULL) + { + desired_capabilities_amqp_value = NULL; + } + else + { + desired_capabilities_amqp_value = amqpvalue_clone(desired_capabilities_value); + } if (desired_capabilities_amqp_value == NULL) { result = __FAILURE__; @@ -3762,22 +4741,38 @@ } else { + uint32_t item_count; ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 13); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_fields(item_value, properties_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(attach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 13) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 13); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_fields(item_value, properties_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -3961,248 +4956,360 @@ } else { - do - { - AMQP_VALUE item_value; - /* next-incoming-id */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - transfer_number next_incoming_id; - if (amqpvalue_get_transfer_number(item_value, &next_incoming_id) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - flow_destroy(*flow_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* incoming-window */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - { - flow_destroy(*flow_handle); - result = __FAILURE__; - break; - } - } - else - { - uint32_t incoming_window; - if (amqpvalue_get_uint(item_value, &incoming_window) != 0) - { - flow_destroy(*flow_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* next-outgoing-id */ - item_value = amqpvalue_get_list_item(list_value, 2); - if (item_value == NULL) - { - { - flow_destroy(*flow_handle); - result = __FAILURE__; - break; - } - } - else - { - transfer_number next_outgoing_id; - if (amqpvalue_get_transfer_number(item_value, &next_outgoing_id) != 0) - { - flow_destroy(*flow_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* outgoing-window */ - item_value = amqpvalue_get_list_item(list_value, 3); - if (item_value == NULL) - { - { - flow_destroy(*flow_handle); - result = __FAILURE__; - break; - } - } - else - { - uint32_t outgoing_window; - if (amqpvalue_get_uint(item_value, &outgoing_window) != 0) - { - flow_destroy(*flow_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* handle */ - item_value = amqpvalue_get_list_item(list_value, 4); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - handle handle; - if (amqpvalue_get_handle(item_value, &handle) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - flow_destroy(*flow_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* delivery-count */ - item_value = amqpvalue_get_list_item(list_value, 5); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - sequence_no delivery_count; - if (amqpvalue_get_sequence_no(item_value, &delivery_count) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - flow_destroy(*flow_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* link-credit */ - item_value = amqpvalue_get_list_item(list_value, 6); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - uint32_t link_credit; - if (amqpvalue_get_uint(item_value, &link_credit) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - flow_destroy(*flow_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* available */ - item_value = amqpvalue_get_list_item(list_value, 7); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - uint32_t available; - if (amqpvalue_get_uint(item_value, &available) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - flow_destroy(*flow_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* drain */ - item_value = amqpvalue_get_list_item(list_value, 8); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool drain; - if (amqpvalue_get_boolean(item_value, &drain) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - flow_destroy(*flow_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* echo */ - item_value = amqpvalue_get_list_item(list_value, 9); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool echo; - if (amqpvalue_get_boolean(item_value, &echo) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - flow_destroy(*flow_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* properties */ - item_value = amqpvalue_get_list_item(list_value, 10); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - fields properties; - if (amqpvalue_get_fields(item_value, &properties) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - flow_destroy(*flow_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - flow_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* next-incoming-id */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + transfer_number next_incoming_id; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_transfer_number(item_value, &next_incoming_id) != 0) + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* incoming-window */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + } + else + { + uint32_t incoming_window; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_uint(item_value, &incoming_window) != 0) + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* next-outgoing-id */ + if (list_item_count > 2) + { + item_value = amqpvalue_get_list_item(list_value, 2); + if (item_value == NULL) + { + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + } + else + { + transfer_number next_outgoing_id; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_transfer_number(item_value, &next_outgoing_id) != 0) + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* outgoing-window */ + if (list_item_count > 3) + { + item_value = amqpvalue_get_list_item(list_value, 3); + if (item_value == NULL) + { + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + } + else + { + uint32_t outgoing_window; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_uint(item_value, &outgoing_window) != 0) + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* handle */ + if (list_item_count > 4) + { + item_value = amqpvalue_get_list_item(list_value, 4); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + handle handle; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_handle(item_value, &handle) != 0) + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* delivery-count */ + if (list_item_count > 5) + { + item_value = amqpvalue_get_list_item(list_value, 5); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + sequence_no delivery_count; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_sequence_no(item_value, &delivery_count) != 0) + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* link-credit */ + if (list_item_count > 6) + { + item_value = amqpvalue_get_list_item(list_value, 6); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + uint32_t link_credit; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_uint(item_value, &link_credit) != 0) + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* available */ + if (list_item_count > 7) + { + item_value = amqpvalue_get_list_item(list_value, 7); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + uint32_t available; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_uint(item_value, &available) != 0) + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* drain */ + if (list_item_count > 8) + { + item_value = amqpvalue_get_list_item(list_value, 8); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool drain; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &drain) != 0) + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* echo */ + if (list_item_count > 9) + { + item_value = amqpvalue_get_list_item(list_value, 9); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool echo; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &echo) != 0) + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* properties */ + if (list_item_count > 10) + { + item_value = amqpvalue_get_list_item(list_value, 10); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + fields properties; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_fields(item_value, &properties) != 0) + { + flow_destroy(*flow_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + flow_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -4219,22 +5326,38 @@ } else { + uint32_t item_count; FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_transfer_number(item_value, next_incoming_id_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(flow_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_transfer_number(item_value, next_incoming_id_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -4285,22 +5408,38 @@ } else { + uint32_t item_count; FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 1); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_uint(item_value, incoming_window_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(flow_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_uint(item_value, incoming_window_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -4351,22 +5490,38 @@ } else { + uint32_t item_count; FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 2); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_transfer_number(item_value, next_outgoing_id_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(flow_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 2) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 2); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_transfer_number(item_value, next_outgoing_id_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -4417,22 +5572,38 @@ } else { + uint32_t item_count; FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 3); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_uint(item_value, outgoing_window_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(flow_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 3) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 3); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_uint(item_value, outgoing_window_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -4483,22 +5654,38 @@ } else { + uint32_t item_count; FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 4); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_handle(item_value, handle_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(flow_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 4) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 4); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_handle(item_value, handle_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -4549,22 +5736,38 @@ } else { + uint32_t item_count; FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 5); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_sequence_no(item_value, delivery_count_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(flow_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 5) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 5); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_sequence_no(item_value, delivery_count_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -4615,22 +5818,38 @@ } else { + uint32_t item_count; FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 6); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_uint(item_value, link_credit_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(flow_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 6) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 6); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_uint(item_value, link_credit_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -4681,22 +5900,38 @@ } else { + uint32_t item_count; FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 7); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_uint(item_value, available_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(flow_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 7) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 7); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_uint(item_value, available_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -4747,31 +5982,48 @@ } else { + uint32_t item_count; FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 8); - if (item_value == NULL) - { - *drain_value = false; - result = 0; - } - else - { - if (amqpvalue_get_boolean(item_value, drain_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(flow_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 8) + { + *drain_value = false; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 8); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *drain_value = false; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_boolean(item_value, drain_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *drain_value = false; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -4822,31 +6074,48 @@ } else { + uint32_t item_count; FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 9); - if (item_value == NULL) - { - *echo_value = false; - result = 0; - } - else - { - if (amqpvalue_get_boolean(item_value, echo_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(flow_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 9) + { + *echo_value = false; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 9); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *echo_value = false; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_boolean(item_value, echo_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *echo_value = false; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -4897,22 +6166,38 @@ } else { + uint32_t item_count; FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 10); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_fields(item_value, properties_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(flow_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 10) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 10); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_fields(item_value, properties_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -5082,235 +6367,325 @@ } else { - do - { - AMQP_VALUE item_value; - /* handle */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - { - transfer_destroy(*transfer_handle); - result = __FAILURE__; - break; - } - } - else - { - handle handle; - if (amqpvalue_get_handle(item_value, &handle) != 0) - { - transfer_destroy(*transfer_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* delivery-id */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - delivery_number delivery_id; - if (amqpvalue_get_delivery_number(item_value, &delivery_id) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - transfer_destroy(*transfer_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* delivery-tag */ - item_value = amqpvalue_get_list_item(list_value, 2); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - delivery_tag delivery_tag; - if (amqpvalue_get_delivery_tag(item_value, &delivery_tag) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - transfer_destroy(*transfer_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* message-format */ - item_value = amqpvalue_get_list_item(list_value, 3); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - message_format message_format; - if (amqpvalue_get_message_format(item_value, &message_format) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - transfer_destroy(*transfer_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* settled */ - item_value = amqpvalue_get_list_item(list_value, 4); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool settled; - if (amqpvalue_get_boolean(item_value, &settled) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - transfer_destroy(*transfer_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* more */ - item_value = amqpvalue_get_list_item(list_value, 5); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool more; - if (amqpvalue_get_boolean(item_value, &more) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - transfer_destroy(*transfer_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* rcv-settle-mode */ - item_value = amqpvalue_get_list_item(list_value, 6); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - receiver_settle_mode rcv_settle_mode; - if (amqpvalue_get_receiver_settle_mode(item_value, &rcv_settle_mode) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - transfer_destroy(*transfer_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* state */ - item_value = amqpvalue_get_list_item(list_value, 7); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - amqpvalue_destroy(item_value); - } - /* resume */ - item_value = amqpvalue_get_list_item(list_value, 8); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool resume; - if (amqpvalue_get_boolean(item_value, &resume) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - transfer_destroy(*transfer_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* aborted */ - item_value = amqpvalue_get_list_item(list_value, 9); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool aborted; - if (amqpvalue_get_boolean(item_value, &aborted) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - transfer_destroy(*transfer_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* batchable */ - item_value = amqpvalue_get_list_item(list_value, 10); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool batchable; - if (amqpvalue_get_boolean(item_value, &batchable) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - transfer_destroy(*transfer_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - transfer_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* handle */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + { + transfer_destroy(*transfer_handle); + result = __FAILURE__; + break; + } + } + else + { + handle handle; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + transfer_destroy(*transfer_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_handle(item_value, &handle) != 0) + { + transfer_destroy(*transfer_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* delivery-id */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + delivery_number delivery_id; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_delivery_number(item_value, &delivery_id) != 0) + { + transfer_destroy(*transfer_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* delivery-tag */ + if (list_item_count > 2) + { + item_value = amqpvalue_get_list_item(list_value, 2); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + delivery_tag delivery_tag; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_delivery_tag(item_value, &delivery_tag) != 0) + { + transfer_destroy(*transfer_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* message-format */ + if (list_item_count > 3) + { + item_value = amqpvalue_get_list_item(list_value, 3); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + message_format message_format; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_message_format(item_value, &message_format) != 0) + { + transfer_destroy(*transfer_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* settled */ + if (list_item_count > 4) + { + item_value = amqpvalue_get_list_item(list_value, 4); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool settled; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &settled) != 0) + { + transfer_destroy(*transfer_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* more */ + if (list_item_count > 5) + { + item_value = amqpvalue_get_list_item(list_value, 5); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool more; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &more) != 0) + { + transfer_destroy(*transfer_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* rcv-settle-mode */ + if (list_item_count > 6) + { + item_value = amqpvalue_get_list_item(list_value, 6); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + receiver_settle_mode rcv_settle_mode; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_receiver_settle_mode(item_value, &rcv_settle_mode) != 0) + { + transfer_destroy(*transfer_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* state */ + if (list_item_count > 7) + { + item_value = amqpvalue_get_list_item(list_value, 7); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + amqpvalue_destroy(item_value); + } + } + /* resume */ + if (list_item_count > 8) + { + item_value = amqpvalue_get_list_item(list_value, 8); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool resume; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &resume) != 0) + { + transfer_destroy(*transfer_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* aborted */ + if (list_item_count > 9) + { + item_value = amqpvalue_get_list_item(list_value, 9); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool aborted; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &aborted) != 0) + { + transfer_destroy(*transfer_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* batchable */ + if (list_item_count > 10) + { + item_value = amqpvalue_get_list_item(list_value, 10); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool batchable; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &batchable) != 0) + { + transfer_destroy(*transfer_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + transfer_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -5327,22 +6702,38 @@ } else { + uint32_t item_count; TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_handle(item_value, handle_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(transfer_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_handle(item_value, handle_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -5393,22 +6784,38 @@ } else { + uint32_t item_count; TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 1); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_delivery_number(item_value, delivery_id_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(transfer_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_delivery_number(item_value, delivery_id_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -5459,22 +6866,38 @@ } else { + uint32_t item_count; TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 2); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_delivery_tag(item_value, delivery_tag_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(transfer_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 2) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 2); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_delivery_tag(item_value, delivery_tag_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -5525,22 +6948,38 @@ } else { + uint32_t item_count; TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 3); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_message_format(item_value, message_format_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(transfer_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 3) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 3); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_message_format(item_value, message_format_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -5591,22 +7030,38 @@ } else { + uint32_t item_count; TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 4); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_boolean(item_value, settled_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(transfer_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 4) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 4); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_boolean(item_value, settled_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -5657,31 +7112,48 @@ } else { + uint32_t item_count; TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 5); - if (item_value == NULL) - { - *more_value = false; - result = 0; - } - else - { - if (amqpvalue_get_boolean(item_value, more_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(transfer_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 5) + { + *more_value = false; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 5); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *more_value = false; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_boolean(item_value, more_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *more_value = false; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -5732,22 +7204,38 @@ } else { + uint32_t item_count; TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 6); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_receiver_settle_mode(item_value, rcv_settle_mode_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(transfer_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 6) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 6); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_receiver_settle_mode(item_value, rcv_settle_mode_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -5798,16 +7286,32 @@ } else { + uint32_t item_count; TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 7); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - *state_value = item_value; - result = 0; + if (amqpvalue_get_composite_item_count(transfer_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 7) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 7); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + *state_value = item_value; + result = 0; + } + } } } @@ -5825,7 +7329,15 @@ else { TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; - AMQP_VALUE state_amqp_value = amqpvalue_clone(state_value); + AMQP_VALUE state_amqp_value; + if (state_value == NULL) + { + state_amqp_value = NULL; + } + else + { + state_amqp_value = amqpvalue_clone(state_value); + } if (state_amqp_value == NULL) { result = __FAILURE__; @@ -5858,31 +7370,48 @@ } else { + uint32_t item_count; TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 8); - if (item_value == NULL) - { - *resume_value = false; - result = 0; - } - else - { - if (amqpvalue_get_boolean(item_value, resume_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(transfer_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 8) + { + *resume_value = false; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 8); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *resume_value = false; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_boolean(item_value, resume_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *resume_value = false; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -5933,31 +7462,48 @@ } else { + uint32_t item_count; TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 9); - if (item_value == NULL) - { - *aborted_value = false; - result = 0; - } - else - { - if (amqpvalue_get_boolean(item_value, aborted_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(transfer_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 9) + { + *aborted_value = false; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 9); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *aborted_value = false; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_boolean(item_value, aborted_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *aborted_value = false; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -6008,31 +7554,48 @@ } else { + uint32_t item_count; TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 10); - if (item_value == NULL) - { - *batchable_value = false; - result = 0; - } - else - { - if (amqpvalue_get_boolean(item_value, batchable_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(transfer_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 10) + { + *batchable_value = false; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 10); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *batchable_value = false; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_boolean(item_value, batchable_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *batchable_value = false; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -6209,131 +7772,195 @@ } else { - do - { - AMQP_VALUE item_value; - /* role */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - { - disposition_destroy(*disposition_handle); - result = __FAILURE__; - break; - } - } - else - { - role role; - if (amqpvalue_get_role(item_value, &role) != 0) - { - disposition_destroy(*disposition_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* first */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - { - disposition_destroy(*disposition_handle); - result = __FAILURE__; - break; - } - } - else - { - delivery_number first; - if (amqpvalue_get_delivery_number(item_value, &first) != 0) - { - disposition_destroy(*disposition_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* last */ - item_value = amqpvalue_get_list_item(list_value, 2); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - delivery_number last; - if (amqpvalue_get_delivery_number(item_value, &last) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - disposition_destroy(*disposition_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* settled */ - item_value = amqpvalue_get_list_item(list_value, 3); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool settled; - if (amqpvalue_get_boolean(item_value, &settled) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - disposition_destroy(*disposition_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* state */ - item_value = amqpvalue_get_list_item(list_value, 4); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - amqpvalue_destroy(item_value); - } - /* batchable */ - item_value = amqpvalue_get_list_item(list_value, 5); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool batchable; - if (amqpvalue_get_boolean(item_value, &batchable) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - disposition_destroy(*disposition_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - disposition_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* role */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + { + disposition_destroy(*disposition_handle); + result = __FAILURE__; + break; + } + } + else + { + role role; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + disposition_destroy(*disposition_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_role(item_value, &role) != 0) + { + disposition_destroy(*disposition_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* first */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + { + disposition_destroy(*disposition_handle); + result = __FAILURE__; + break; + } + } + else + { + delivery_number first; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + disposition_destroy(*disposition_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_delivery_number(item_value, &first) != 0) + { + disposition_destroy(*disposition_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* last */ + if (list_item_count > 2) + { + item_value = amqpvalue_get_list_item(list_value, 2); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + delivery_number last; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_delivery_number(item_value, &last) != 0) + { + disposition_destroy(*disposition_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* settled */ + if (list_item_count > 3) + { + item_value = amqpvalue_get_list_item(list_value, 3); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool settled; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &settled) != 0) + { + disposition_destroy(*disposition_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* state */ + if (list_item_count > 4) + { + item_value = amqpvalue_get_list_item(list_value, 4); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + amqpvalue_destroy(item_value); + } + } + /* batchable */ + if (list_item_count > 5) + { + item_value = amqpvalue_get_list_item(list_value, 5); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool batchable; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &batchable) != 0) + { + disposition_destroy(*disposition_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + disposition_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -6350,22 +7977,38 @@ } else { + uint32_t item_count; DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_role(item_value, role_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(disposition_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_role(item_value, role_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -6416,22 +8059,38 @@ } else { + uint32_t item_count; DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 1); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_delivery_number(item_value, first_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(disposition_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_delivery_number(item_value, first_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -6482,22 +8141,38 @@ } else { + uint32_t item_count; DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 2); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_delivery_number(item_value, last_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(disposition_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 2) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 2); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_delivery_number(item_value, last_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -6548,31 +8223,48 @@ } else { + uint32_t item_count; DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 3); - if (item_value == NULL) - { - *settled_value = false; - result = 0; - } - else - { - if (amqpvalue_get_boolean(item_value, settled_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(disposition_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 3) + { + *settled_value = false; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 3); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *settled_value = false; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_boolean(item_value, settled_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *settled_value = false; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -6623,16 +8315,32 @@ } else { + uint32_t item_count; DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 4); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - *state_value = item_value; - result = 0; + if (amqpvalue_get_composite_item_count(disposition_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 4) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 4); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + *state_value = item_value; + result = 0; + } + } } } @@ -6650,7 +8358,15 @@ else { DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; - AMQP_VALUE state_amqp_value = amqpvalue_clone(state_value); + AMQP_VALUE state_amqp_value; + if (state_value == NULL) + { + state_amqp_value = NULL; + } + else + { + state_amqp_value = amqpvalue_clone(state_value); + } if (state_amqp_value == NULL) { result = __FAILURE__; @@ -6683,31 +8399,48 @@ } else { + uint32_t item_count; DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 5); - if (item_value == NULL) - { - *batchable_value = false; - result = 0; - } - else - { - if (amqpvalue_get_boolean(item_value, batchable_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(disposition_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 5) + { + *batchable_value = false; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 5); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *batchable_value = false; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_boolean(item_value, batchable_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *batchable_value = false; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -6877,78 +8610,116 @@ } else { - do - { - AMQP_VALUE item_value; - /* handle */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - { - detach_destroy(*detach_handle); - result = __FAILURE__; - break; - } - } - else - { - handle handle; - if (amqpvalue_get_handle(item_value, &handle) != 0) - { - detach_destroy(*detach_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* closed */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool closed; - if (amqpvalue_get_boolean(item_value, &closed) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - detach_destroy(*detach_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* error */ - item_value = amqpvalue_get_list_item(list_value, 2); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - ERROR_HANDLE error; - if (amqpvalue_get_error(item_value, &error) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - detach_destroy(*detach_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - detach_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* handle */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + { + detach_destroy(*detach_handle); + result = __FAILURE__; + break; + } + } + else + { + handle handle; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + detach_destroy(*detach_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_handle(item_value, &handle) != 0) + { + detach_destroy(*detach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* closed */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool closed; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &closed) != 0) + { + detach_destroy(*detach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* error */ + if (list_item_count > 2) + { + item_value = amqpvalue_get_list_item(list_value, 2); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + ERROR_HANDLE error; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_error(item_value, &error) != 0) + { + detach_destroy(*detach_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + detach_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -6965,22 +8736,38 @@ } else { + uint32_t item_count; DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)detach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(detach_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_handle(item_value, handle_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(detach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(detach_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_handle(item_value, handle_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -7031,31 +8818,48 @@ } else { + uint32_t item_count; DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)detach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(detach_instance->composite_value, 1); - if (item_value == NULL) - { - *closed_value = false; - result = 0; - } - else - { - if (amqpvalue_get_boolean(item_value, closed_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(detach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + *closed_value = false; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(detach_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *closed_value = false; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_boolean(item_value, closed_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *closed_value = false; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -7106,22 +8910,38 @@ } else { + uint32_t item_count; DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)detach; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(detach_instance->composite_value, 2); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_error(item_value, error_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(detach_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 2) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(detach_instance->composite_value, 2); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_error(item_value, error_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -7278,35 +9098,50 @@ } else { - do - { - AMQP_VALUE item_value; - /* error */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - ERROR_HANDLE error; - if (amqpvalue_get_error(item_value, &error) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - end_destroy(*end_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - end_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* error */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + ERROR_HANDLE error; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_error(item_value, &error) != 0) + { + end_destroy(*end_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + end_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -7323,22 +9158,38 @@ } else { + uint32_t item_count; END_INSTANCE* end_instance = (END_INSTANCE*)end; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(end_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_error(item_value, error_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(end_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(end_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_error(item_value, error_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -7495,35 +9346,50 @@ } else { - do - { - AMQP_VALUE item_value; - /* error */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - ERROR_HANDLE error; - if (amqpvalue_get_error(item_value, &error) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - close_destroy(*close_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - close_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* error */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + ERROR_HANDLE error; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_error(item_value, &error) != 0) + { + close_destroy(*close_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + close_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -7540,22 +9406,38 @@ } else { + uint32_t item_count; CLOSE_INSTANCE* close_instance = (CLOSE_INSTANCE*)close; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(close_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_error(item_value, error_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(close_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(close_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_error(item_value, error_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -7732,38 +9614,62 @@ } else { - do - { - AMQP_VALUE item_value; - /* sasl-server-mechanisms */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - { - sasl_mechanisms_destroy(*sasl_mechanisms_handle); - result = __FAILURE__; - break; - } - } - else - { - const char* sasl_server_mechanisms; - AMQP_VALUE sasl_server_mechanisms_array; - if ((amqpvalue_get_array(item_value, &sasl_server_mechanisms_array) != 0) && - (amqpvalue_get_symbol(item_value, &sasl_server_mechanisms) != 0)) - { - sasl_mechanisms_destroy(*sasl_mechanisms_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - - sasl_mechanisms_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* sasl-server-mechanisms */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + { + sasl_mechanisms_destroy(*sasl_mechanisms_handle); + result = __FAILURE__; + break; + } + } + else + { + const char* sasl_server_mechanisms; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + sasl_mechanisms_destroy(*sasl_mechanisms_handle); + result = __FAILURE__; + break; + } + else + { + AMQP_VALUE sasl_server_mechanisms_array; + if ((amqpvalue_get_array(item_value, &sasl_server_mechanisms_array) != 0) && + (amqpvalue_get_symbol(item_value, &sasl_server_mechanisms) != 0)) + { + sasl_mechanisms_destroy(*sasl_mechanisms_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + + sasl_mechanisms_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -7780,22 +9686,38 @@ } else { + uint32_t item_count; SASL_MECHANISMS_INSTANCE* sasl_mechanisms_instance = (SASL_MECHANISMS_INSTANCE*)sasl_mechanisms; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_mechanisms_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_array(item_value, sasl_server_mechanisms_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(sasl_mechanisms_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_mechanisms_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_array(item_value, sasl_server_mechanisms_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -7813,7 +9735,15 @@ else { SASL_MECHANISMS_INSTANCE* sasl_mechanisms_instance = (SASL_MECHANISMS_INSTANCE*)sasl_mechanisms; - AMQP_VALUE sasl_server_mechanisms_amqp_value = amqpvalue_clone(sasl_server_mechanisms_value); + AMQP_VALUE sasl_server_mechanisms_amqp_value; + if (sasl_server_mechanisms_value == NULL) + { + sasl_server_mechanisms_amqp_value = NULL; + } + else + { + sasl_server_mechanisms_amqp_value = amqpvalue_clone(sasl_server_mechanisms_value); + } if (sasl_server_mechanisms_amqp_value == NULL) { result = __FAILURE__; @@ -7965,78 +9895,116 @@ } else { - do - { - AMQP_VALUE item_value; - /* mechanism */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - { - sasl_init_destroy(*sasl_init_handle); - result = __FAILURE__; - break; - } - } - else - { - const char* mechanism; - if (amqpvalue_get_symbol(item_value, &mechanism) != 0) - { - sasl_init_destroy(*sasl_init_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* initial-response */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - amqp_binary initial_response; - if (amqpvalue_get_binary(item_value, &initial_response) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - sasl_init_destroy(*sasl_init_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* hostname */ - item_value = amqpvalue_get_list_item(list_value, 2); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* hostname; - if (amqpvalue_get_string(item_value, &hostname) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - sasl_init_destroy(*sasl_init_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - sasl_init_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* mechanism */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + { + sasl_init_destroy(*sasl_init_handle); + result = __FAILURE__; + break; + } + } + else + { + const char* mechanism; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + sasl_init_destroy(*sasl_init_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_symbol(item_value, &mechanism) != 0) + { + sasl_init_destroy(*sasl_init_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* initial-response */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + amqp_binary initial_response; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_binary(item_value, &initial_response) != 0) + { + sasl_init_destroy(*sasl_init_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* hostname */ + if (list_item_count > 2) + { + item_value = amqpvalue_get_list_item(list_value, 2); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* hostname; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_string(item_value, &hostname) != 0) + { + sasl_init_destroy(*sasl_init_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + sasl_init_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -8053,22 +10021,38 @@ } else { + uint32_t item_count; SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)sasl_init; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_init_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_symbol(item_value, mechanism_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(sasl_init_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_init_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_symbol(item_value, mechanism_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -8119,22 +10103,38 @@ } else { + uint32_t item_count; SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)sasl_init; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_init_instance->composite_value, 1); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_binary(item_value, initial_response_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(sasl_init_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_init_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_binary(item_value, initial_response_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -8185,22 +10185,38 @@ } else { + uint32_t item_count; SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)sasl_init; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_init_instance->composite_value, 2); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_string(item_value, hostname_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(sasl_init_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 2) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_init_instance->composite_value, 2); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_string(item_value, hostname_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -8370,36 +10386,60 @@ } else { - do - { - AMQP_VALUE item_value; - /* challenge */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - { - sasl_challenge_destroy(*sasl_challenge_handle); - result = __FAILURE__; - break; - } - } - else - { - amqp_binary challenge; - if (amqpvalue_get_binary(item_value, &challenge) != 0) - { - sasl_challenge_destroy(*sasl_challenge_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - - sasl_challenge_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* challenge */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + { + sasl_challenge_destroy(*sasl_challenge_handle); + result = __FAILURE__; + break; + } + } + else + { + amqp_binary challenge; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + sasl_challenge_destroy(*sasl_challenge_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_binary(item_value, &challenge) != 0) + { + sasl_challenge_destroy(*sasl_challenge_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + + sasl_challenge_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -8416,22 +10456,38 @@ } else { + uint32_t item_count; SASL_CHALLENGE_INSTANCE* sasl_challenge_instance = (SASL_CHALLENGE_INSTANCE*)sasl_challenge; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_challenge_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_binary(item_value, challenge_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(sasl_challenge_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_challenge_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_binary(item_value, challenge_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -8601,36 +10657,60 @@ } else { - do - { - AMQP_VALUE item_value; - /* response */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - { - sasl_response_destroy(*sasl_response_handle); - result = __FAILURE__; - break; - } - } - else - { - amqp_binary response; - if (amqpvalue_get_binary(item_value, &response) != 0) - { - sasl_response_destroy(*sasl_response_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - - sasl_response_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* response */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + { + sasl_response_destroy(*sasl_response_handle); + result = __FAILURE__; + break; + } + } + else + { + amqp_binary response; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + sasl_response_destroy(*sasl_response_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_binary(item_value, &response) != 0) + { + sasl_response_destroy(*sasl_response_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + + sasl_response_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -8647,22 +10727,38 @@ } else { + uint32_t item_count; SASL_RESPONSE_INSTANCE* sasl_response_instance = (SASL_RESPONSE_INSTANCE*)sasl_response; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_response_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_binary(item_value, response_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(sasl_response_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_response_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_binary(item_value, response_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -8832,57 +10928,88 @@ } else { - do - { - AMQP_VALUE item_value; - /* code */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - { - sasl_outcome_destroy(*sasl_outcome_handle); - result = __FAILURE__; - break; - } - } - else - { - sasl_code code; - if (amqpvalue_get_sasl_code(item_value, &code) != 0) - { - sasl_outcome_destroy(*sasl_outcome_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* additional-data */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - amqp_binary additional_data; - if (amqpvalue_get_binary(item_value, &additional_data) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - sasl_outcome_destroy(*sasl_outcome_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - sasl_outcome_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* code */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + { + sasl_outcome_destroy(*sasl_outcome_handle); + result = __FAILURE__; + break; + } + } + else + { + sasl_code code; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + sasl_outcome_destroy(*sasl_outcome_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_sasl_code(item_value, &code) != 0) + { + sasl_outcome_destroy(*sasl_outcome_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* additional-data */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + amqp_binary additional_data; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_binary(item_value, &additional_data) != 0) + { + sasl_outcome_destroy(*sasl_outcome_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + sasl_outcome_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -8899,22 +11026,38 @@ } else { + uint32_t item_count; SASL_OUTCOME_INSTANCE* sasl_outcome_instance = (SASL_OUTCOME_INSTANCE*)sasl_outcome; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_outcome_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_sasl_code(item_value, code_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(sasl_outcome_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_outcome_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_sasl_code(item_value, code_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -8965,22 +11108,38 @@ } else { + uint32_t item_count; SASL_OUTCOME_INSTANCE* sasl_outcome_instance = (SASL_OUTCOME_INSTANCE*)sasl_outcome; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_outcome_instance->composite_value, 1); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_binary(item_value, additional_data_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(sasl_outcome_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_outcome_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_binary(item_value, additional_data_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -9165,227 +11324,304 @@ } else { - do - { - AMQP_VALUE item_value; - /* address */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - amqpvalue_destroy(item_value); - } - /* durable */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - terminus_durability durable; - if (amqpvalue_get_terminus_durability(item_value, &durable) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - source_destroy(*source_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* expiry-policy */ - item_value = amqpvalue_get_list_item(list_value, 2); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - terminus_expiry_policy expiry_policy; - if (amqpvalue_get_terminus_expiry_policy(item_value, &expiry_policy) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - source_destroy(*source_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* timeout */ - item_value = amqpvalue_get_list_item(list_value, 3); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - seconds timeout; - if (amqpvalue_get_seconds(item_value, &timeout) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - source_destroy(*source_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* dynamic */ - item_value = amqpvalue_get_list_item(list_value, 4); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool dynamic; - if (amqpvalue_get_boolean(item_value, &dynamic) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - source_destroy(*source_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* dynamic-node-properties */ - item_value = amqpvalue_get_list_item(list_value, 5); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - node_properties dynamic_node_properties; - if (amqpvalue_get_node_properties(item_value, &dynamic_node_properties) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - source_destroy(*source_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* distribution-mode */ - item_value = amqpvalue_get_list_item(list_value, 6); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* distribution_mode; - if (amqpvalue_get_symbol(item_value, &distribution_mode) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - source_destroy(*source_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* filter */ - item_value = amqpvalue_get_list_item(list_value, 7); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - filter_set filter; - if (amqpvalue_get_filter_set(item_value, &filter) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - source_destroy(*source_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* default-outcome */ - item_value = amqpvalue_get_list_item(list_value, 8); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - amqpvalue_destroy(item_value); - } - /* outcomes */ - item_value = amqpvalue_get_list_item(list_value, 9); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* outcomes; - AMQP_VALUE outcomes_array; - if ((amqpvalue_get_array(item_value, &outcomes_array) != 0) && - (amqpvalue_get_symbol(item_value, &outcomes) != 0)) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - source_destroy(*source_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* capabilities */ - item_value = amqpvalue_get_list_item(list_value, 10); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* capabilities; - AMQP_VALUE capabilities_array; - if ((amqpvalue_get_array(item_value, &capabilities_array) != 0) && - (amqpvalue_get_symbol(item_value, &capabilities) != 0)) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - source_destroy(*source_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - source_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* address */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + amqpvalue_destroy(item_value); + } + } + /* durable */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + terminus_durability durable; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_terminus_durability(item_value, &durable) != 0) + { + source_destroy(*source_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* expiry-policy */ + if (list_item_count > 2) + { + item_value = amqpvalue_get_list_item(list_value, 2); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + terminus_expiry_policy expiry_policy; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_terminus_expiry_policy(item_value, &expiry_policy) != 0) + { + source_destroy(*source_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* timeout */ + if (list_item_count > 3) + { + item_value = amqpvalue_get_list_item(list_value, 3); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + seconds timeout; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_seconds(item_value, &timeout) != 0) + { + source_destroy(*source_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* dynamic */ + if (list_item_count > 4) + { + item_value = amqpvalue_get_list_item(list_value, 4); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool dynamic; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &dynamic) != 0) + { + source_destroy(*source_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* dynamic-node-properties */ + if (list_item_count > 5) + { + item_value = amqpvalue_get_list_item(list_value, 5); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + node_properties dynamic_node_properties; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_node_properties(item_value, &dynamic_node_properties) != 0) + { + source_destroy(*source_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* distribution-mode */ + if (list_item_count > 6) + { + item_value = amqpvalue_get_list_item(list_value, 6); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* distribution_mode; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_symbol(item_value, &distribution_mode) != 0) + { + source_destroy(*source_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* filter */ + if (list_item_count > 7) + { + item_value = amqpvalue_get_list_item(list_value, 7); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + filter_set filter; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_filter_set(item_value, &filter) != 0) + { + source_destroy(*source_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* default-outcome */ + if (list_item_count > 8) + { + item_value = amqpvalue_get_list_item(list_value, 8); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + amqpvalue_destroy(item_value); + } + } + /* outcomes */ + if (list_item_count > 9) + { + item_value = amqpvalue_get_list_item(list_value, 9); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* outcomes; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + AMQP_VALUE outcomes_array; + if ((amqpvalue_get_array(item_value, &outcomes_array) != 0) && + (amqpvalue_get_symbol(item_value, &outcomes) != 0)) + { + source_destroy(*source_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* capabilities */ + if (list_item_count > 10) + { + item_value = amqpvalue_get_list_item(list_value, 10); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* capabilities; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + AMQP_VALUE capabilities_array; + if ((amqpvalue_get_array(item_value, &capabilities_array) != 0) && + (amqpvalue_get_symbol(item_value, &capabilities) != 0)) + { + source_destroy(*source_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + source_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -9402,16 +11638,32 @@ } else { + uint32_t item_count; SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - *address_value = item_value; - result = 0; + if (amqpvalue_get_composite_item_count(source_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + *address_value = item_value; + result = 0; + } + } } } @@ -9429,7 +11681,15 @@ else { SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE address_amqp_value = amqpvalue_clone(address_value); + AMQP_VALUE address_amqp_value; + if (address_value == NULL) + { + address_amqp_value = NULL; + } + else + { + address_amqp_value = amqpvalue_clone(address_value); + } if (address_amqp_value == NULL) { result = __FAILURE__; @@ -9462,31 +11722,48 @@ } else { + uint32_t item_count; SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 1); - if (item_value == NULL) - { - *durable_value = terminus_durability_none; - result = 0; - } - else - { - if (amqpvalue_get_terminus_durability(item_value, durable_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(source_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + *durable_value = terminus_durability_none; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *durable_value = terminus_durability_none; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_terminus_durability(item_value, durable_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *durable_value = terminus_durability_none; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -9537,31 +11814,48 @@ } else { + uint32_t item_count; SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 2); - if (item_value == NULL) - { - *expiry_policy_value = terminus_expiry_policy_session_end; - result = 0; - } - else - { - if (amqpvalue_get_terminus_expiry_policy(item_value, expiry_policy_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(source_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 2) + { + *expiry_policy_value = terminus_expiry_policy_session_end; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 2); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *expiry_policy_value = terminus_expiry_policy_session_end; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_terminus_expiry_policy(item_value, expiry_policy_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *expiry_policy_value = terminus_expiry_policy_session_end; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -9612,31 +11906,48 @@ } else { + uint32_t item_count; SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 3); - if (item_value == NULL) - { - *timeout_value = 0; - result = 0; - } - else - { - if (amqpvalue_get_seconds(item_value, timeout_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(source_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 3) + { + *timeout_value = 0; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 3); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *timeout_value = 0; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_seconds(item_value, timeout_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *timeout_value = 0; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -9687,31 +11998,48 @@ } else { + uint32_t item_count; SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 4); - if (item_value == NULL) - { - *dynamic_value = false; - result = 0; - } - else - { - if (amqpvalue_get_boolean(item_value, dynamic_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(source_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 4) + { + *dynamic_value = false; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 4); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *dynamic_value = false; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_boolean(item_value, dynamic_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *dynamic_value = false; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -9762,22 +12090,38 @@ } else { + uint32_t item_count; SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 5); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_node_properties(item_value, dynamic_node_properties_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(source_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 5) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 5); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_node_properties(item_value, dynamic_node_properties_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -9828,22 +12172,38 @@ } else { + uint32_t item_count; SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 6); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_symbol(item_value, distribution_mode_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(source_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 6) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 6); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_symbol(item_value, distribution_mode_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -9894,22 +12254,38 @@ } else { + uint32_t item_count; SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 7); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_filter_set(item_value, filter_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(source_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 7) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 7); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_filter_set(item_value, filter_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -9960,16 +12336,32 @@ } else { + uint32_t item_count; SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 8); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - *default_outcome_value = item_value; - result = 0; + if (amqpvalue_get_composite_item_count(source_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 8) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 8); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + *default_outcome_value = item_value; + result = 0; + } + } } } @@ -9987,7 +12379,15 @@ else { SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE default_outcome_amqp_value = amqpvalue_clone(default_outcome_value); + AMQP_VALUE default_outcome_amqp_value; + if (default_outcome_value == NULL) + { + default_outcome_amqp_value = NULL; + } + else + { + default_outcome_amqp_value = amqpvalue_clone(default_outcome_value); + } if (default_outcome_amqp_value == NULL) { result = __FAILURE__; @@ -10020,22 +12420,38 @@ } else { + uint32_t item_count; SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 9); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_array(item_value, outcomes_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(source_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 9) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 9); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_array(item_value, outcomes_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -10053,7 +12469,15 @@ else { SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE outcomes_amqp_value = amqpvalue_clone(outcomes_value); + AMQP_VALUE outcomes_amqp_value; + if (outcomes_value == NULL) + { + outcomes_amqp_value = NULL; + } + else + { + outcomes_amqp_value = amqpvalue_clone(outcomes_value); + } if (outcomes_amqp_value == NULL) { result = __FAILURE__; @@ -10086,22 +12510,38 @@ } else { + uint32_t item_count; SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 10); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_array(item_value, capabilities_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(source_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 10) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 10); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_array(item_value, capabilities_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -10119,7 +12559,15 @@ else { SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; - AMQP_VALUE capabilities_amqp_value = amqpvalue_clone(capabilities_value); + AMQP_VALUE capabilities_amqp_value; + if (capabilities_value == NULL) + { + capabilities_amqp_value = NULL; + } + else + { + capabilities_amqp_value = amqpvalue_clone(capabilities_value); + } if (capabilities_amqp_value == NULL) { result = __FAILURE__; @@ -10258,152 +12706,205 @@ } else { - do - { - AMQP_VALUE item_value; - /* address */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - amqpvalue_destroy(item_value); - } - /* durable */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - terminus_durability durable; - if (amqpvalue_get_terminus_durability(item_value, &durable) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - target_destroy(*target_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* expiry-policy */ - item_value = amqpvalue_get_list_item(list_value, 2); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - terminus_expiry_policy expiry_policy; - if (amqpvalue_get_terminus_expiry_policy(item_value, &expiry_policy) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - target_destroy(*target_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* timeout */ - item_value = amqpvalue_get_list_item(list_value, 3); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - seconds timeout; - if (amqpvalue_get_seconds(item_value, &timeout) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - target_destroy(*target_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* dynamic */ - item_value = amqpvalue_get_list_item(list_value, 4); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool dynamic; - if (amqpvalue_get_boolean(item_value, &dynamic) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - target_destroy(*target_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* dynamic-node-properties */ - item_value = amqpvalue_get_list_item(list_value, 5); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - node_properties dynamic_node_properties; - if (amqpvalue_get_node_properties(item_value, &dynamic_node_properties) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - target_destroy(*target_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* capabilities */ - item_value = amqpvalue_get_list_item(list_value, 6); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* capabilities; - AMQP_VALUE capabilities_array; - if ((amqpvalue_get_array(item_value, &capabilities_array) != 0) && - (amqpvalue_get_symbol(item_value, &capabilities) != 0)) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - target_destroy(*target_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - target_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* address */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + amqpvalue_destroy(item_value); + } + } + /* durable */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + terminus_durability durable; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_terminus_durability(item_value, &durable) != 0) + { + target_destroy(*target_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* expiry-policy */ + if (list_item_count > 2) + { + item_value = amqpvalue_get_list_item(list_value, 2); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + terminus_expiry_policy expiry_policy; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_terminus_expiry_policy(item_value, &expiry_policy) != 0) + { + target_destroy(*target_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* timeout */ + if (list_item_count > 3) + { + item_value = amqpvalue_get_list_item(list_value, 3); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + seconds timeout; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_seconds(item_value, &timeout) != 0) + { + target_destroy(*target_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* dynamic */ + if (list_item_count > 4) + { + item_value = amqpvalue_get_list_item(list_value, 4); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool dynamic; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &dynamic) != 0) + { + target_destroy(*target_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* dynamic-node-properties */ + if (list_item_count > 5) + { + item_value = amqpvalue_get_list_item(list_value, 5); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + node_properties dynamic_node_properties; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_node_properties(item_value, &dynamic_node_properties) != 0) + { + target_destroy(*target_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* capabilities */ + if (list_item_count > 6) + { + item_value = amqpvalue_get_list_item(list_value, 6); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* capabilities; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + AMQP_VALUE capabilities_array; + if ((amqpvalue_get_array(item_value, &capabilities_array) != 0) && + (amqpvalue_get_symbol(item_value, &capabilities) != 0)) + { + target_destroy(*target_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + target_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -10420,16 +12921,32 @@ } else { + uint32_t item_count; TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - *address_value = item_value; - result = 0; + if (amqpvalue_get_composite_item_count(target_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + *address_value = item_value; + result = 0; + } + } } } @@ -10447,7 +12964,15 @@ else { TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; - AMQP_VALUE address_amqp_value = amqpvalue_clone(address_value); + AMQP_VALUE address_amqp_value; + if (address_value == NULL) + { + address_amqp_value = NULL; + } + else + { + address_amqp_value = amqpvalue_clone(address_value); + } if (address_amqp_value == NULL) { result = __FAILURE__; @@ -10480,31 +13005,48 @@ } else { + uint32_t item_count; TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 1); - if (item_value == NULL) - { - *durable_value = terminus_durability_none; - result = 0; - } - else - { - if (amqpvalue_get_terminus_durability(item_value, durable_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(target_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + *durable_value = terminus_durability_none; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *durable_value = terminus_durability_none; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_terminus_durability(item_value, durable_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *durable_value = terminus_durability_none; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -10555,31 +13097,48 @@ } else { + uint32_t item_count; TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 2); - if (item_value == NULL) - { - *expiry_policy_value = terminus_expiry_policy_session_end; - result = 0; - } - else - { - if (amqpvalue_get_terminus_expiry_policy(item_value, expiry_policy_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(target_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 2) + { + *expiry_policy_value = terminus_expiry_policy_session_end; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 2); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *expiry_policy_value = terminus_expiry_policy_session_end; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_terminus_expiry_policy(item_value, expiry_policy_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *expiry_policy_value = terminus_expiry_policy_session_end; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -10630,31 +13189,48 @@ } else { + uint32_t item_count; TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 3); - if (item_value == NULL) - { - *timeout_value = 0; - result = 0; - } - else - { - if (amqpvalue_get_seconds(item_value, timeout_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(target_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 3) + { + *timeout_value = 0; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 3); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *timeout_value = 0; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_seconds(item_value, timeout_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *timeout_value = 0; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -10705,31 +13281,48 @@ } else { + uint32_t item_count; TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 4); - if (item_value == NULL) - { - *dynamic_value = false; - result = 0; - } - else - { - if (amqpvalue_get_boolean(item_value, dynamic_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(target_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 4) + { + *dynamic_value = false; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 4); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *dynamic_value = false; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_boolean(item_value, dynamic_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *dynamic_value = false; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -10780,22 +13373,38 @@ } else { + uint32_t item_count; TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 5); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_node_properties(item_value, dynamic_node_properties_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(target_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 5) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 5); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_node_properties(item_value, dynamic_node_properties_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -10846,22 +13455,38 @@ } else { + uint32_t item_count; TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 6); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_array(item_value, capabilities_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(target_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 6) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 6); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_array(item_value, capabilities_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -10879,7 +13504,15 @@ else { TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; - AMQP_VALUE capabilities_amqp_value = amqpvalue_clone(capabilities_value); + AMQP_VALUE capabilities_amqp_value; + if (capabilities_value == NULL) + { + capabilities_amqp_value = NULL; + } + else + { + capabilities_amqp_value = amqpvalue_clone(capabilities_value); + } if (capabilities_amqp_value == NULL) { result = __FAILURE__; @@ -11060,119 +13693,162 @@ } else { - do - { - AMQP_VALUE item_value; - /* durable */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool durable; - if (amqpvalue_get_boolean(item_value, &durable) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - header_destroy(*header_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* priority */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - uint8_t priority; - if (amqpvalue_get_ubyte(item_value, &priority) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - header_destroy(*header_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* ttl */ - item_value = amqpvalue_get_list_item(list_value, 2); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - milliseconds ttl; - if (amqpvalue_get_milliseconds(item_value, &ttl) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - header_destroy(*header_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* first-acquirer */ - item_value = amqpvalue_get_list_item(list_value, 3); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool first_acquirer; - if (amqpvalue_get_boolean(item_value, &first_acquirer) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - header_destroy(*header_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* delivery-count */ - item_value = amqpvalue_get_list_item(list_value, 4); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - uint32_t delivery_count; - if (amqpvalue_get_uint(item_value, &delivery_count) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - header_destroy(*header_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - header_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* durable */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool durable; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &durable) != 0) + { + header_destroy(*header_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* priority */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + uint8_t priority; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_ubyte(item_value, &priority) != 0) + { + header_destroy(*header_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* ttl */ + if (list_item_count > 2) + { + item_value = amqpvalue_get_list_item(list_value, 2); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + milliseconds ttl; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_milliseconds(item_value, &ttl) != 0) + { + header_destroy(*header_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* first-acquirer */ + if (list_item_count > 3) + { + item_value = amqpvalue_get_list_item(list_value, 3); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool first_acquirer; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &first_acquirer) != 0) + { + header_destroy(*header_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* delivery-count */ + if (list_item_count > 4) + { + item_value = amqpvalue_get_list_item(list_value, 4); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + uint32_t delivery_count; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_uint(item_value, &delivery_count) != 0) + { + header_destroy(*header_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + header_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -11189,31 +13865,48 @@ } else { + uint32_t item_count; HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 0); - if (item_value == NULL) - { - *durable_value = false; - result = 0; - } - else - { - if (amqpvalue_get_boolean(item_value, durable_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(header_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + *durable_value = false; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *durable_value = false; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_boolean(item_value, durable_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *durable_value = false; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -11264,31 +13957,48 @@ } else { + uint32_t item_count; HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 1); - if (item_value == NULL) - { - *priority_value = 4; - result = 0; - } - else - { - if (amqpvalue_get_ubyte(item_value, priority_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(header_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + *priority_value = 4; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *priority_value = 4; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_ubyte(item_value, priority_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *priority_value = 4; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -11339,22 +14049,38 @@ } else { + uint32_t item_count; HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 2); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_milliseconds(item_value, ttl_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(header_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 2) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 2); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_milliseconds(item_value, ttl_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -11405,31 +14131,48 @@ } else { + uint32_t item_count; HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 3); - if (item_value == NULL) - { - *first_acquirer_value = false; - result = 0; - } - else - { - if (amqpvalue_get_boolean(item_value, first_acquirer_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(header_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 3) + { + *first_acquirer_value = false; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 3); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *first_acquirer_value = false; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_boolean(item_value, first_acquirer_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *first_acquirer_value = false; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -11480,31 +14223,48 @@ } else { + uint32_t item_count; HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 4); - if (item_value == NULL) - { - *delivery_count_value = 0; - result = 0; - } - else - { - if (amqpvalue_get_uint(item_value, delivery_count_value) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - result = __FAILURE__; - } - else - { + if (amqpvalue_get_composite_item_count(header_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 4) + { + *delivery_count_value = 0; + result = 0; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 4); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { *delivery_count_value = 0; result = 0; - } - } - else - { - result = 0; - } + } + else + { + if (amqpvalue_get_uint(item_value, delivery_count_value) != 0) + { + if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) + { + result = __FAILURE__; + } + else + { + *delivery_count_value = 0; + result = 0; + } + } + else + { + result = 0; + } + } + } } } @@ -11997,243 +14757,326 @@ } else { - do - { - AMQP_VALUE item_value; - /* message-id */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - amqpvalue_destroy(item_value); - } - /* user-id */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - amqp_binary user_id; - if (amqpvalue_get_binary(item_value, &user_id) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - properties_destroy(*properties_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* to */ - item_value = amqpvalue_get_list_item(list_value, 2); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - amqpvalue_destroy(item_value); - } - /* subject */ - item_value = amqpvalue_get_list_item(list_value, 3); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* subject; - if (amqpvalue_get_string(item_value, &subject) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - properties_destroy(*properties_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* reply-to */ - item_value = amqpvalue_get_list_item(list_value, 4); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - amqpvalue_destroy(item_value); - } - /* correlation-id */ - item_value = amqpvalue_get_list_item(list_value, 5); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - amqpvalue_destroy(item_value); - } - /* content-type */ - item_value = amqpvalue_get_list_item(list_value, 6); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* content_type; - if (amqpvalue_get_symbol(item_value, &content_type) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - properties_destroy(*properties_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* content-encoding */ - item_value = amqpvalue_get_list_item(list_value, 7); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* content_encoding; - if (amqpvalue_get_symbol(item_value, &content_encoding) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - properties_destroy(*properties_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* absolute-expiry-time */ - item_value = amqpvalue_get_list_item(list_value, 8); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - timestamp absolute_expiry_time; - if (amqpvalue_get_timestamp(item_value, &absolute_expiry_time) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - properties_destroy(*properties_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* creation-time */ - item_value = amqpvalue_get_list_item(list_value, 9); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - timestamp creation_time; - if (amqpvalue_get_timestamp(item_value, &creation_time) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - properties_destroy(*properties_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* group-id */ - item_value = amqpvalue_get_list_item(list_value, 10); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* group_id; - if (amqpvalue_get_string(item_value, &group_id) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - properties_destroy(*properties_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* group-sequence */ - item_value = amqpvalue_get_list_item(list_value, 11); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - sequence_no group_sequence; - if (amqpvalue_get_sequence_no(item_value, &group_sequence) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - properties_destroy(*properties_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* reply-to-group-id */ - item_value = amqpvalue_get_list_item(list_value, 12); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - const char* reply_to_group_id; - if (amqpvalue_get_string(item_value, &reply_to_group_id) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - properties_destroy(*properties_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - properties_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* message-id */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + amqpvalue_destroy(item_value); + } + } + /* user-id */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + amqp_binary user_id; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_binary(item_value, &user_id) != 0) + { + properties_destroy(*properties_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* to */ + if (list_item_count > 2) + { + item_value = amqpvalue_get_list_item(list_value, 2); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + amqpvalue_destroy(item_value); + } + } + /* subject */ + if (list_item_count > 3) + { + item_value = amqpvalue_get_list_item(list_value, 3); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* subject; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_string(item_value, &subject) != 0) + { + properties_destroy(*properties_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* reply-to */ + if (list_item_count > 4) + { + item_value = amqpvalue_get_list_item(list_value, 4); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + amqpvalue_destroy(item_value); + } + } + /* correlation-id */ + if (list_item_count > 5) + { + item_value = amqpvalue_get_list_item(list_value, 5); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + amqpvalue_destroy(item_value); + } + } + /* content-type */ + if (list_item_count > 6) + { + item_value = amqpvalue_get_list_item(list_value, 6); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* content_type; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_symbol(item_value, &content_type) != 0) + { + properties_destroy(*properties_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* content-encoding */ + if (list_item_count > 7) + { + item_value = amqpvalue_get_list_item(list_value, 7); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* content_encoding; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_symbol(item_value, &content_encoding) != 0) + { + properties_destroy(*properties_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* absolute-expiry-time */ + if (list_item_count > 8) + { + item_value = amqpvalue_get_list_item(list_value, 8); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + timestamp absolute_expiry_time; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_timestamp(item_value, &absolute_expiry_time) != 0) + { + properties_destroy(*properties_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* creation-time */ + if (list_item_count > 9) + { + item_value = amqpvalue_get_list_item(list_value, 9); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + timestamp creation_time; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_timestamp(item_value, &creation_time) != 0) + { + properties_destroy(*properties_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* group-id */ + if (list_item_count > 10) + { + item_value = amqpvalue_get_list_item(list_value, 10); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* group_id; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_string(item_value, &group_id) != 0) + { + properties_destroy(*properties_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* group-sequence */ + if (list_item_count > 11) + { + item_value = amqpvalue_get_list_item(list_value, 11); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + sequence_no group_sequence; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_sequence_no(item_value, &group_sequence) != 0) + { + properties_destroy(*properties_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* reply-to-group-id */ + if (list_item_count > 12) + { + item_value = amqpvalue_get_list_item(list_value, 12); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + const char* reply_to_group_id; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_string(item_value, &reply_to_group_id) != 0) + { + properties_destroy(*properties_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + properties_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -12250,16 +15093,32 @@ } else { + uint32_t item_count; PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - *message_id_value = item_value; - result = 0; + if (amqpvalue_get_composite_item_count(properties_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + *message_id_value = item_value; + result = 0; + } + } } } @@ -12277,7 +15136,15 @@ else { PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE message_id_amqp_value = amqpvalue_clone(message_id_value); + AMQP_VALUE message_id_amqp_value; + if (message_id_value == NULL) + { + message_id_amqp_value = NULL; + } + else + { + message_id_amqp_value = amqpvalue_clone(message_id_value); + } if (message_id_amqp_value == NULL) { result = __FAILURE__; @@ -12310,22 +15177,38 @@ } else { + uint32_t item_count; PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 1); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_binary(item_value, user_id_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(properties_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_binary(item_value, user_id_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -12376,16 +15259,32 @@ } else { + uint32_t item_count; PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 2); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - *to_value = item_value; - result = 0; + if (amqpvalue_get_composite_item_count(properties_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 2) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 2); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + *to_value = item_value; + result = 0; + } + } } } @@ -12403,7 +15302,15 @@ else { PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE to_amqp_value = amqpvalue_clone(to_value); + AMQP_VALUE to_amqp_value; + if (to_value == NULL) + { + to_amqp_value = NULL; + } + else + { + to_amqp_value = amqpvalue_clone(to_value); + } if (to_amqp_value == NULL) { result = __FAILURE__; @@ -12436,22 +15343,38 @@ } else { + uint32_t item_count; PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 3); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_string(item_value, subject_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(properties_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 3) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 3); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_string(item_value, subject_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -12502,16 +15425,32 @@ } else { + uint32_t item_count; PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 4); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - *reply_to_value = item_value; - result = 0; + if (amqpvalue_get_composite_item_count(properties_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 4) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 4); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + *reply_to_value = item_value; + result = 0; + } + } } } @@ -12529,7 +15468,15 @@ else { PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE reply_to_amqp_value = amqpvalue_clone(reply_to_value); + AMQP_VALUE reply_to_amqp_value; + if (reply_to_value == NULL) + { + reply_to_amqp_value = NULL; + } + else + { + reply_to_amqp_value = amqpvalue_clone(reply_to_value); + } if (reply_to_amqp_value == NULL) { result = __FAILURE__; @@ -12562,16 +15509,32 @@ } else { + uint32_t item_count; PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 5); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - *correlation_id_value = item_value; - result = 0; + if (amqpvalue_get_composite_item_count(properties_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 5) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 5); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + *correlation_id_value = item_value; + result = 0; + } + } } } @@ -12589,7 +15552,15 @@ else { PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE correlation_id_amqp_value = amqpvalue_clone(correlation_id_value); + AMQP_VALUE correlation_id_amqp_value; + if (correlation_id_value == NULL) + { + correlation_id_amqp_value = NULL; + } + else + { + correlation_id_amqp_value = amqpvalue_clone(correlation_id_value); + } if (correlation_id_amqp_value == NULL) { result = __FAILURE__; @@ -12622,22 +15593,38 @@ } else { + uint32_t item_count; PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 6); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_symbol(item_value, content_type_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(properties_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 6) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 6); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_symbol(item_value, content_type_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -12688,22 +15675,38 @@ } else { + uint32_t item_count; PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 7); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_symbol(item_value, content_encoding_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(properties_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 7) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 7); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_symbol(item_value, content_encoding_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -12754,22 +15757,38 @@ } else { + uint32_t item_count; PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 8); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_timestamp(item_value, absolute_expiry_time_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(properties_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 8) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 8); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_timestamp(item_value, absolute_expiry_time_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -12820,22 +15839,38 @@ } else { + uint32_t item_count; PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 9); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_timestamp(item_value, creation_time_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(properties_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 9) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 9); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_timestamp(item_value, creation_time_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -12886,22 +15921,38 @@ } else { + uint32_t item_count; PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 10); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_string(item_value, group_id_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(properties_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 10) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 10); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_string(item_value, group_id_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -12952,22 +16003,38 @@ } else { + uint32_t item_count; PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 11); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_sequence_no(item_value, group_sequence_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(properties_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 11) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 11); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_sequence_no(item_value, group_sequence_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -13018,22 +16085,38 @@ } else { + uint32_t item_count; PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 12); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_string(item_value, reply_to_group_id_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(properties_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 12) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 12); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_string(item_value, reply_to_group_id_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -13210,58 +16293,98 @@ } else { - do - { - AMQP_VALUE item_value; - /* section-number */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - { - received_destroy(*received_handle); - result = __FAILURE__; - break; - } - } - else - { - uint32_t section_number; - if (amqpvalue_get_uint(item_value, §ion_number) != 0) - { - received_destroy(*received_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - /* section-offset */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - { - received_destroy(*received_handle); - result = __FAILURE__; - break; - } - } - else - { - uint64_t section_offset; - if (amqpvalue_get_ulong(item_value, §ion_offset) != 0) - { - received_destroy(*received_handle); - result = __FAILURE__; - break; - } - - amqpvalue_destroy(item_value); - } - - received_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* section-number */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + { + received_destroy(*received_handle); + result = __FAILURE__; + break; + } + } + else + { + uint32_t section_number; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + received_destroy(*received_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_uint(item_value, §ion_number) != 0) + { + received_destroy(*received_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + /* section-offset */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + { + received_destroy(*received_handle); + result = __FAILURE__; + break; + } + } + else + { + uint64_t section_offset; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + received_destroy(*received_handle); + result = __FAILURE__; + break; + } + else + { + if (amqpvalue_get_ulong(item_value, §ion_offset) != 0) + { + received_destroy(*received_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + else + { + result = __FAILURE__; + } + + received_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -13278,22 +16401,38 @@ } else { + uint32_t item_count; RECEIVED_INSTANCE* received_instance = (RECEIVED_INSTANCE*)received; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(received_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_uint(item_value, section_number_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(received_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(received_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_uint(item_value, section_number_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -13344,22 +16483,38 @@ } else { + uint32_t item_count; RECEIVED_INSTANCE* received_instance = (RECEIVED_INSTANCE*)received; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(received_instance->composite_value, 1); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_ulong(item_value, section_offset_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(received_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(received_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_ulong(item_value, section_offset_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -13516,13 +16671,21 @@ } else { - do - { - - accepted_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + + accepted_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -13645,35 +16808,50 @@ } else { - do - { - AMQP_VALUE item_value; - /* error */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - ERROR_HANDLE error; - if (amqpvalue_get_error(item_value, &error) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - rejected_destroy(*rejected_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - rejected_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* error */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + ERROR_HANDLE error; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_error(item_value, &error) != 0) + { + rejected_destroy(*rejected_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + rejected_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -13690,22 +16868,38 @@ } else { + uint32_t item_count; REJECTED_INSTANCE* rejected_instance = (REJECTED_INSTANCE*)rejected; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(rejected_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_error(item_value, error_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(rejected_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(rejected_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_error(item_value, error_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -13862,13 +17056,21 @@ } else { - do - { - - released_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + + released_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -13991,77 +17193,106 @@ } else { - do - { - AMQP_VALUE item_value; - /* delivery-failed */ - item_value = amqpvalue_get_list_item(list_value, 0); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool delivery_failed; - if (amqpvalue_get_boolean(item_value, &delivery_failed) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - modified_destroy(*modified_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* undeliverable-here */ - item_value = amqpvalue_get_list_item(list_value, 1); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - bool undeliverable_here; - if (amqpvalue_get_boolean(item_value, &undeliverable_here) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - modified_destroy(*modified_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - /* message-annotations */ - item_value = amqpvalue_get_list_item(list_value, 2); - if (item_value == NULL) - { - /* do nothing */ - } - else - { - fields message_annotations; - if (amqpvalue_get_fields(item_value, &message_annotations) != 0) - { - if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) - { - modified_destroy(*modified_handle); - result = __FAILURE__; - break; - } - } - - amqpvalue_destroy(item_value); - } - - modified_instance->composite_value = amqpvalue_clone(value); - - result = 0; - } while (0); + uint32_t list_item_count; + if (amqpvalue_get_list_item_count(list_value, &list_item_count) != 0) + { + result = __FAILURE__; + } + else + { + do + { + AMQP_VALUE item_value; + /* delivery-failed */ + if (list_item_count > 0) + { + item_value = amqpvalue_get_list_item(list_value, 0); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool delivery_failed; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &delivery_failed) != 0) + { + modified_destroy(*modified_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* undeliverable-here */ + if (list_item_count > 1) + { + item_value = amqpvalue_get_list_item(list_value, 1); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + bool undeliverable_here; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_boolean(item_value, &undeliverable_here) != 0) + { + modified_destroy(*modified_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + /* message-annotations */ + if (list_item_count > 2) + { + item_value = amqpvalue_get_list_item(list_value, 2); + if (item_value == NULL) + { + /* do nothing */ + } + else + { + fields message_annotations; + if (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL) + { + /* no error, field is not mandatory */ + } + else + { + if (amqpvalue_get_fields(item_value, &message_annotations) != 0) + { + modified_destroy(*modified_handle); + result = __FAILURE__; + break; + } + } + + amqpvalue_destroy(item_value); + } + } + + modified_instance->composite_value = amqpvalue_clone(value); + + result = 0; + } while (0); + } } } @@ -14078,22 +17309,38 @@ } else { + uint32_t item_count; MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)modified; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(modified_instance->composite_value, 0); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_boolean(item_value, delivery_failed_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(modified_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 0) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(modified_instance->composite_value, 0); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_boolean(item_value, delivery_failed_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -14144,22 +17391,38 @@ } else { + uint32_t item_count; MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)modified; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(modified_instance->composite_value, 1); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_boolean(item_value, undeliverable_here_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(modified_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 1) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(modified_instance->composite_value, 1); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_boolean(item_value, undeliverable_here_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } } @@ -14210,22 +17473,38 @@ } else { + uint32_t item_count; MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)modified; - AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(modified_instance->composite_value, 2); - if (item_value == NULL) - { - result = __FAILURE__; - } - else - { - if (amqpvalue_get_fields(item_value, message_annotations_value) != 0) - { - result = __FAILURE__; - } - else - { - result = 0; - } + if (amqpvalue_get_composite_item_count(modified_instance->composite_value, &item_count) != 0) + { + result = __FAILURE__; + } + else + { + if (item_count <= 2) + { + result = __FAILURE__; + } + else + { + AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(modified_instance->composite_value, 2); + if ((item_value == NULL) || + (amqpvalue_get_type(item_value) == AMQP_TYPE_NULL)) + { + result = __FAILURE__; + } + else + { + if (amqpvalue_get_fields(item_value, message_annotations_value) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } } }