Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterface NTPClient iothub_amqp_transport iothub_client mbed-rtos mbed
Fork of iothub_client_sample_amqp by
amqp_definitions.c
00001 00002 00003 // Copyright (c) Microsoft. All rights reserved. 00004 // Licensed under the MIT license. See LICENSE file in the project root for full license information. 00005 00006 #include <stdlib.h> 00007 #ifdef _CRTDBG_MAP_ALLOC 00008 #include <crtdbg.h> 00009 #endif 00010 #include "azure_uamqp_c/amqpvalue.h" 00011 #include "azure_uamqp_c/amqp_definitions.h" 00012 #include "azure_uamqp_c/amqpalloc.h" 00013 #include <stdlib.h> 00014 #include <stdbool.h> 00015 00016 /* role */ 00017 00018 AMQP_VALUE amqpvalue_create_role(role value) 00019 { 00020 return amqpvalue_create_boolean(value); 00021 } 00022 00023 /* sender-settle-mode */ 00024 00025 AMQP_VALUE amqpvalue_create_sender_settle_mode(sender_settle_mode value) 00026 { 00027 return amqpvalue_create_ubyte(value); 00028 } 00029 00030 /* receiver-settle-mode */ 00031 00032 AMQP_VALUE amqpvalue_create_receiver_settle_mode(receiver_settle_mode value) 00033 { 00034 return amqpvalue_create_ubyte(value); 00035 } 00036 00037 /* handle */ 00038 00039 AMQP_VALUE amqpvalue_create_handle(handle value) 00040 { 00041 return amqpvalue_create_uint(value); 00042 } 00043 00044 /* seconds */ 00045 00046 AMQP_VALUE amqpvalue_create_seconds(seconds value) 00047 { 00048 return amqpvalue_create_uint(value); 00049 } 00050 00051 /* milliseconds */ 00052 00053 AMQP_VALUE amqpvalue_create_milliseconds(milliseconds value) 00054 { 00055 return amqpvalue_create_uint(value); 00056 } 00057 00058 /* delivery-tag */ 00059 00060 AMQP_VALUE amqpvalue_create_delivery_tag(delivery_tag value) 00061 { 00062 return amqpvalue_create_binary(value); 00063 } 00064 00065 /* sequence-no */ 00066 00067 AMQP_VALUE amqpvalue_create_sequence_no(sequence_no value) 00068 { 00069 return amqpvalue_create_uint(value); 00070 } 00071 00072 /* delivery-number */ 00073 00074 AMQP_VALUE amqpvalue_create_delivery_number(delivery_number value) 00075 { 00076 return amqpvalue_create_sequence_no(value); 00077 } 00078 00079 /* transfer-number */ 00080 00081 AMQP_VALUE amqpvalue_create_transfer_number(transfer_number value) 00082 { 00083 return amqpvalue_create_sequence_no(value); 00084 } 00085 00086 /* message-format */ 00087 00088 AMQP_VALUE amqpvalue_create_message_format(message_format value) 00089 { 00090 return amqpvalue_create_uint(value); 00091 } 00092 00093 /* ietf-language-tag */ 00094 00095 AMQP_VALUE amqpvalue_create_ietf_language_tag(ietf_language_tag value) 00096 { 00097 return amqpvalue_create_symbol(value); 00098 } 00099 00100 /* fields */ 00101 00102 AMQP_VALUE amqpvalue_create_fields(AMQP_VALUE value) 00103 { 00104 return amqpvalue_clone(value); 00105 } 00106 00107 /* error */ 00108 00109 typedef struct ERROR_INSTANCE_TAG 00110 { 00111 AMQP_VALUE composite_value; 00112 } ERROR_INSTANCE; 00113 00114 static ERROR_HANDLE error_create_internal(void) 00115 { 00116 ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)amqpalloc_malloc(sizeof(ERROR_INSTANCE)); 00117 if (error_instance != NULL) 00118 { 00119 error_instance->composite_value = NULL; 00120 } 00121 00122 return error_instance; 00123 } 00124 00125 ERROR_HANDLE error_create(const char* condition_value) 00126 { 00127 ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)amqpalloc_malloc(sizeof(ERROR_INSTANCE)); 00128 if (error_instance != NULL) 00129 { 00130 error_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(29); 00131 if (error_instance->composite_value == NULL) 00132 { 00133 amqpalloc_free(error_instance); 00134 error_instance = NULL; 00135 } 00136 else 00137 { 00138 AMQP_VALUE condition_amqp_value; 00139 int result = 0; 00140 00141 condition_amqp_value = amqpvalue_create_symbol(condition_value); 00142 if ((result == 0) && (amqpvalue_set_composite_item(error_instance->composite_value, 0, condition_amqp_value) != 0)) 00143 { 00144 result = __LINE__; 00145 } 00146 00147 amqpvalue_destroy(condition_amqp_value); 00148 } 00149 } 00150 00151 return error_instance; 00152 } 00153 00154 ERROR_HANDLE error_clone(ERROR_HANDLE value) 00155 { 00156 ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)amqpalloc_malloc(sizeof(ERROR_INSTANCE)); 00157 if (error_instance != NULL) 00158 { 00159 error_instance->composite_value = amqpvalue_clone(((ERROR_INSTANCE*)value)->composite_value); 00160 if (error_instance->composite_value == NULL) 00161 { 00162 amqpalloc_free(error_instance); 00163 error_instance = NULL; 00164 } 00165 } 00166 00167 return error_instance; 00168 } 00169 00170 void error_destroy(ERROR_HANDLE error) 00171 { 00172 if (error != NULL) 00173 { 00174 ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)error; 00175 amqpvalue_destroy(error_instance->composite_value); 00176 amqpalloc_free(error_instance); 00177 } 00178 } 00179 00180 AMQP_VALUE amqpvalue_create_error(ERROR_HANDLE error) 00181 { 00182 AMQP_VALUE result; 00183 00184 if (error == NULL) 00185 { 00186 result = NULL; 00187 } 00188 else 00189 { 00190 ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)error; 00191 result = amqpvalue_clone(error_instance->composite_value); 00192 } 00193 00194 return result; 00195 } 00196 00197 bool is_error_type_by_descriptor(AMQP_VALUE descriptor) 00198 { 00199 bool result; 00200 00201 uint64_t descriptor_ulong; 00202 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 00203 (descriptor_ulong == 29)) 00204 { 00205 result = true; 00206 } 00207 else 00208 { 00209 result = false; 00210 } 00211 00212 return result; 00213 } 00214 00215 00216 int amqpvalue_get_error(AMQP_VALUE value, ERROR_HANDLE* error_handle) 00217 { 00218 int result; 00219 ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)error_create_internal(); 00220 *error_handle = error_instance; 00221 if (*error_handle == NULL) 00222 { 00223 result = __LINE__; 00224 } 00225 else 00226 { 00227 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 00228 if (list_value == NULL) 00229 { 00230 error_destroy(*error_handle); 00231 result = __LINE__; 00232 } 00233 else 00234 { 00235 do 00236 { 00237 AMQP_VALUE item_value; 00238 /* condition */ 00239 item_value = amqpvalue_get_list_item(list_value, 0); 00240 if (item_value == NULL) 00241 { 00242 { 00243 error_destroy(*error_handle); 00244 result = __LINE__; 00245 break; 00246 } 00247 } 00248 else 00249 { 00250 const char* condition; 00251 if (amqpvalue_get_symbol(item_value, &condition) != 0) 00252 { 00253 error_destroy(*error_handle); 00254 result = __LINE__; 00255 break; 00256 } 00257 00258 amqpvalue_destroy(item_value); 00259 } 00260 /* description */ 00261 item_value = amqpvalue_get_list_item(list_value, 1); 00262 if (item_value == NULL) 00263 { 00264 /* do nothing */ 00265 } 00266 else 00267 { 00268 const char* description; 00269 if (amqpvalue_get_string(item_value, &description) != 0) 00270 { 00271 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 00272 { 00273 error_destroy(*error_handle); 00274 result = __LINE__; 00275 break; 00276 } 00277 } 00278 00279 amqpvalue_destroy(item_value); 00280 } 00281 /* info */ 00282 item_value = amqpvalue_get_list_item(list_value, 2); 00283 if (item_value == NULL) 00284 { 00285 /* do nothing */ 00286 } 00287 else 00288 { 00289 fields info; 00290 if (amqpvalue_get_fields(item_value, &info) != 0) 00291 { 00292 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 00293 { 00294 error_destroy(*error_handle); 00295 result = __LINE__; 00296 break; 00297 } 00298 } 00299 00300 amqpvalue_destroy(item_value); 00301 } 00302 00303 error_instance->composite_value = amqpvalue_clone(value); 00304 00305 result = 0; 00306 } while (0); 00307 } 00308 } 00309 00310 return result; 00311 } 00312 00313 int error_get_condition(ERROR_HANDLE error, const char** condition_value) 00314 { 00315 int result; 00316 00317 if (error == NULL) 00318 { 00319 result = __LINE__; 00320 } 00321 else 00322 { 00323 ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)error; 00324 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(error_instance->composite_value, 0); 00325 if (item_value == NULL) 00326 { 00327 result = __LINE__; 00328 } 00329 else 00330 { 00331 if (amqpvalue_get_symbol(item_value, condition_value) != 0) 00332 { 00333 result = __LINE__; 00334 } 00335 else 00336 { 00337 result = 0; 00338 } 00339 } 00340 } 00341 00342 return result; 00343 } 00344 00345 int error_set_condition(ERROR_HANDLE error, const char* condition_value) 00346 { 00347 int result; 00348 00349 if (error == NULL) 00350 { 00351 result = __LINE__; 00352 } 00353 else 00354 { 00355 ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)error; 00356 AMQP_VALUE condition_amqp_value = amqpvalue_create_symbol(condition_value); 00357 if (condition_amqp_value == NULL) 00358 { 00359 result = __LINE__; 00360 } 00361 else 00362 { 00363 if (amqpvalue_set_composite_item(error_instance->composite_value, 0, condition_amqp_value) != 0) 00364 { 00365 result = __LINE__; 00366 } 00367 else 00368 { 00369 result = 0; 00370 } 00371 00372 amqpvalue_destroy(condition_amqp_value); 00373 } 00374 } 00375 00376 return result; 00377 } 00378 00379 int error_get_description(ERROR_HANDLE error, const char** description_value) 00380 { 00381 int result; 00382 00383 if (error == NULL) 00384 { 00385 result = __LINE__; 00386 } 00387 else 00388 { 00389 ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)error; 00390 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(error_instance->composite_value, 1); 00391 if (item_value == NULL) 00392 { 00393 result = __LINE__; 00394 } 00395 else 00396 { 00397 if (amqpvalue_get_string(item_value, description_value) != 0) 00398 { 00399 result = __LINE__; 00400 } 00401 else 00402 { 00403 result = 0; 00404 } 00405 } 00406 } 00407 00408 return result; 00409 } 00410 00411 int error_set_description(ERROR_HANDLE error, const char* description_value) 00412 { 00413 int result; 00414 00415 if (error == NULL) 00416 { 00417 result = __LINE__; 00418 } 00419 else 00420 { 00421 ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)error; 00422 AMQP_VALUE description_amqp_value = amqpvalue_create_string(description_value); 00423 if (description_amqp_value == NULL) 00424 { 00425 result = __LINE__; 00426 } 00427 else 00428 { 00429 if (amqpvalue_set_composite_item(error_instance->composite_value, 1, description_amqp_value) != 0) 00430 { 00431 result = __LINE__; 00432 } 00433 else 00434 { 00435 result = 0; 00436 } 00437 00438 amqpvalue_destroy(description_amqp_value); 00439 } 00440 } 00441 00442 return result; 00443 } 00444 00445 int error_get_info(ERROR_HANDLE error, fields* info_value) 00446 { 00447 int result; 00448 00449 if (error == NULL) 00450 { 00451 result = __LINE__; 00452 } 00453 else 00454 { 00455 ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)error; 00456 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(error_instance->composite_value, 2); 00457 if (item_value == NULL) 00458 { 00459 result = __LINE__; 00460 } 00461 else 00462 { 00463 if (amqpvalue_get_fields(item_value, info_value) != 0) 00464 { 00465 result = __LINE__; 00466 } 00467 else 00468 { 00469 result = 0; 00470 } 00471 } 00472 } 00473 00474 return result; 00475 } 00476 00477 int error_set_info(ERROR_HANDLE error, fields info_value) 00478 { 00479 int result; 00480 00481 if (error == NULL) 00482 { 00483 result = __LINE__; 00484 } 00485 else 00486 { 00487 ERROR_INSTANCE* error_instance = (ERROR_INSTANCE*)error; 00488 AMQP_VALUE info_amqp_value = amqpvalue_create_fields(info_value); 00489 if (info_amqp_value == NULL) 00490 { 00491 result = __LINE__; 00492 } 00493 else 00494 { 00495 if (amqpvalue_set_composite_item(error_instance->composite_value, 2, info_amqp_value) != 0) 00496 { 00497 result = __LINE__; 00498 } 00499 else 00500 { 00501 result = 0; 00502 } 00503 00504 amqpvalue_destroy(info_amqp_value); 00505 } 00506 } 00507 00508 return result; 00509 } 00510 00511 00512 /* amqp-error */ 00513 00514 AMQP_VALUE amqpvalue_create_amqp_error(amqp_error value) 00515 { 00516 return amqpvalue_create_symbol(value); 00517 } 00518 00519 /* connection-error */ 00520 00521 AMQP_VALUE amqpvalue_create_connection_error(connection_error value) 00522 { 00523 return amqpvalue_create_symbol(value); 00524 } 00525 00526 /* session-error */ 00527 00528 AMQP_VALUE amqpvalue_create_session_error(session_error value) 00529 { 00530 return amqpvalue_create_symbol(value); 00531 } 00532 00533 /* link-error */ 00534 00535 AMQP_VALUE amqpvalue_create_link_error(link_error value) 00536 { 00537 return amqpvalue_create_symbol(value); 00538 } 00539 00540 /* open */ 00541 00542 typedef struct OPEN_INSTANCE_TAG 00543 { 00544 AMQP_VALUE composite_value; 00545 } OPEN_INSTANCE; 00546 00547 static OPEN_HANDLE open_create_internal(void) 00548 { 00549 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)amqpalloc_malloc(sizeof(OPEN_INSTANCE)); 00550 if (open_instance != NULL) 00551 { 00552 open_instance->composite_value = NULL; 00553 } 00554 00555 return open_instance; 00556 } 00557 00558 OPEN_HANDLE open_create(const char* container_id_value) 00559 { 00560 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)amqpalloc_malloc(sizeof(OPEN_INSTANCE)); 00561 if (open_instance != NULL) 00562 { 00563 open_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(16); 00564 if (open_instance->composite_value == NULL) 00565 { 00566 amqpalloc_free(open_instance); 00567 open_instance = NULL; 00568 } 00569 else 00570 { 00571 AMQP_VALUE container_id_amqp_value; 00572 int result = 0; 00573 00574 container_id_amqp_value = amqpvalue_create_string(container_id_value); 00575 if ((result == 0) && (amqpvalue_set_composite_item(open_instance->composite_value, 0, container_id_amqp_value) != 0)) 00576 { 00577 result = __LINE__; 00578 } 00579 00580 amqpvalue_destroy(container_id_amqp_value); 00581 } 00582 } 00583 00584 return open_instance; 00585 } 00586 00587 OPEN_HANDLE open_clone(OPEN_HANDLE value) 00588 { 00589 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)amqpalloc_malloc(sizeof(OPEN_INSTANCE)); 00590 if (open_instance != NULL) 00591 { 00592 open_instance->composite_value = amqpvalue_clone(((OPEN_INSTANCE*)value)->composite_value); 00593 if (open_instance->composite_value == NULL) 00594 { 00595 amqpalloc_free(open_instance); 00596 open_instance = NULL; 00597 } 00598 } 00599 00600 return open_instance; 00601 } 00602 00603 void open_destroy(OPEN_HANDLE open) 00604 { 00605 if (open != NULL) 00606 { 00607 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 00608 amqpvalue_destroy(open_instance->composite_value); 00609 amqpalloc_free(open_instance); 00610 } 00611 } 00612 00613 AMQP_VALUE amqpvalue_create_open(OPEN_HANDLE open) 00614 { 00615 AMQP_VALUE result; 00616 00617 if (open == NULL) 00618 { 00619 result = NULL; 00620 } 00621 else 00622 { 00623 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 00624 result = amqpvalue_clone(open_instance->composite_value); 00625 } 00626 00627 return result; 00628 } 00629 00630 bool is_open_type_by_descriptor(AMQP_VALUE descriptor) 00631 { 00632 bool result; 00633 00634 uint64_t descriptor_ulong; 00635 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 00636 (descriptor_ulong == 16)) 00637 { 00638 result = true; 00639 } 00640 else 00641 { 00642 result = false; 00643 } 00644 00645 return result; 00646 } 00647 00648 00649 int amqpvalue_get_open(AMQP_VALUE value, OPEN_HANDLE* open_handle) 00650 { 00651 int result; 00652 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open_create_internal(); 00653 *open_handle = open_instance; 00654 if (*open_handle == NULL) 00655 { 00656 result = __LINE__; 00657 } 00658 else 00659 { 00660 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 00661 if (list_value == NULL) 00662 { 00663 open_destroy(*open_handle); 00664 result = __LINE__; 00665 } 00666 else 00667 { 00668 do 00669 { 00670 AMQP_VALUE item_value; 00671 /* container-id */ 00672 item_value = amqpvalue_get_list_item(list_value, 0); 00673 if (item_value == NULL) 00674 { 00675 { 00676 open_destroy(*open_handle); 00677 result = __LINE__; 00678 break; 00679 } 00680 } 00681 else 00682 { 00683 const char* container_id; 00684 if (amqpvalue_get_string(item_value, &container_id) != 0) 00685 { 00686 open_destroy(*open_handle); 00687 result = __LINE__; 00688 break; 00689 } 00690 00691 amqpvalue_destroy(item_value); 00692 } 00693 /* hostname */ 00694 item_value = amqpvalue_get_list_item(list_value, 1); 00695 if (item_value == NULL) 00696 { 00697 /* do nothing */ 00698 } 00699 else 00700 { 00701 const char* hostname; 00702 if (amqpvalue_get_string(item_value, &hostname) != 0) 00703 { 00704 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 00705 { 00706 open_destroy(*open_handle); 00707 result = __LINE__; 00708 break; 00709 } 00710 } 00711 00712 amqpvalue_destroy(item_value); 00713 } 00714 /* max-frame-size */ 00715 item_value = amqpvalue_get_list_item(list_value, 2); 00716 if (item_value == NULL) 00717 { 00718 /* do nothing */ 00719 } 00720 else 00721 { 00722 uint32_t max_frame_size; 00723 if (amqpvalue_get_uint(item_value, &max_frame_size) != 0) 00724 { 00725 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 00726 { 00727 open_destroy(*open_handle); 00728 result = __LINE__; 00729 break; 00730 } 00731 } 00732 00733 amqpvalue_destroy(item_value); 00734 } 00735 /* channel-max */ 00736 item_value = amqpvalue_get_list_item(list_value, 3); 00737 if (item_value == NULL) 00738 { 00739 /* do nothing */ 00740 } 00741 else 00742 { 00743 uint16_t channel_max; 00744 if (amqpvalue_get_ushort(item_value, &channel_max) != 0) 00745 { 00746 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 00747 { 00748 open_destroy(*open_handle); 00749 result = __LINE__; 00750 break; 00751 } 00752 } 00753 00754 amqpvalue_destroy(item_value); 00755 } 00756 /* idle-time-out */ 00757 item_value = amqpvalue_get_list_item(list_value, 4); 00758 if (item_value == NULL) 00759 { 00760 /* do nothing */ 00761 } 00762 else 00763 { 00764 milliseconds idle_time_out; 00765 if (amqpvalue_get_milliseconds(item_value, &idle_time_out) != 0) 00766 { 00767 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 00768 { 00769 open_destroy(*open_handle); 00770 result = __LINE__; 00771 break; 00772 } 00773 } 00774 00775 amqpvalue_destroy(item_value); 00776 } 00777 /* outgoing-locales */ 00778 item_value = amqpvalue_get_list_item(list_value, 5); 00779 if (item_value == NULL) 00780 { 00781 /* do nothing */ 00782 } 00783 else 00784 { 00785 ietf_language_tag outgoing_locales; 00786 AMQP_VALUE outgoing_locales_array; 00787 if ((amqpvalue_get_array(item_value, &outgoing_locales_array) != 0) && 00788 (amqpvalue_get_ietf_language_tag(item_value, &outgoing_locales) != 0)) 00789 { 00790 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 00791 { 00792 open_destroy(*open_handle); 00793 result = __LINE__; 00794 break; 00795 } 00796 } 00797 00798 amqpvalue_destroy(item_value); 00799 } 00800 /* incoming-locales */ 00801 item_value = amqpvalue_get_list_item(list_value, 6); 00802 if (item_value == NULL) 00803 { 00804 /* do nothing */ 00805 } 00806 else 00807 { 00808 ietf_language_tag incoming_locales; 00809 AMQP_VALUE incoming_locales_array; 00810 if ((amqpvalue_get_array(item_value, &incoming_locales_array) != 0) && 00811 (amqpvalue_get_ietf_language_tag(item_value, &incoming_locales) != 0)) 00812 { 00813 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 00814 { 00815 open_destroy(*open_handle); 00816 result = __LINE__; 00817 break; 00818 } 00819 } 00820 00821 amqpvalue_destroy(item_value); 00822 } 00823 /* offered-capabilities */ 00824 item_value = amqpvalue_get_list_item(list_value, 7); 00825 if (item_value == NULL) 00826 { 00827 /* do nothing */ 00828 } 00829 else 00830 { 00831 const char* offered_capabilities; 00832 AMQP_VALUE offered_capabilities_array; 00833 if ((amqpvalue_get_array(item_value, &offered_capabilities_array) != 0) && 00834 (amqpvalue_get_symbol(item_value, &offered_capabilities) != 0)) 00835 { 00836 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 00837 { 00838 open_destroy(*open_handle); 00839 result = __LINE__; 00840 break; 00841 } 00842 } 00843 00844 amqpvalue_destroy(item_value); 00845 } 00846 /* desired-capabilities */ 00847 item_value = amqpvalue_get_list_item(list_value, 8); 00848 if (item_value == NULL) 00849 { 00850 /* do nothing */ 00851 } 00852 else 00853 { 00854 const char* desired_capabilities; 00855 AMQP_VALUE desired_capabilities_array; 00856 if ((amqpvalue_get_array(item_value, &desired_capabilities_array) != 0) && 00857 (amqpvalue_get_symbol(item_value, &desired_capabilities) != 0)) 00858 { 00859 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 00860 { 00861 open_destroy(*open_handle); 00862 result = __LINE__; 00863 break; 00864 } 00865 } 00866 00867 amqpvalue_destroy(item_value); 00868 } 00869 /* properties */ 00870 item_value = amqpvalue_get_list_item(list_value, 9); 00871 if (item_value == NULL) 00872 { 00873 /* do nothing */ 00874 } 00875 else 00876 { 00877 fields properties; 00878 if (amqpvalue_get_fields(item_value, &properties) != 0) 00879 { 00880 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 00881 { 00882 open_destroy(*open_handle); 00883 result = __LINE__; 00884 break; 00885 } 00886 } 00887 00888 amqpvalue_destroy(item_value); 00889 } 00890 00891 open_instance->composite_value = amqpvalue_clone(value); 00892 00893 result = 0; 00894 } while (0); 00895 } 00896 } 00897 00898 return result; 00899 } 00900 00901 int open_get_container_id(OPEN_HANDLE open, const char** container_id_value) 00902 { 00903 int result; 00904 00905 if (open == NULL) 00906 { 00907 result = __LINE__; 00908 } 00909 else 00910 { 00911 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 00912 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 0); 00913 if (item_value == NULL) 00914 { 00915 result = __LINE__; 00916 } 00917 else 00918 { 00919 if (amqpvalue_get_string(item_value, container_id_value) != 0) 00920 { 00921 result = __LINE__; 00922 } 00923 else 00924 { 00925 result = 0; 00926 } 00927 } 00928 } 00929 00930 return result; 00931 } 00932 00933 int open_set_container_id(OPEN_HANDLE open, const char* container_id_value) 00934 { 00935 int result; 00936 00937 if (open == NULL) 00938 { 00939 result = __LINE__; 00940 } 00941 else 00942 { 00943 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 00944 AMQP_VALUE container_id_amqp_value = amqpvalue_create_string(container_id_value); 00945 if (container_id_amqp_value == NULL) 00946 { 00947 result = __LINE__; 00948 } 00949 else 00950 { 00951 if (amqpvalue_set_composite_item(open_instance->composite_value, 0, container_id_amqp_value) != 0) 00952 { 00953 result = __LINE__; 00954 } 00955 else 00956 { 00957 result = 0; 00958 } 00959 00960 amqpvalue_destroy(container_id_amqp_value); 00961 } 00962 } 00963 00964 return result; 00965 } 00966 00967 int open_get_hostname(OPEN_HANDLE open, const char** hostname_value) 00968 { 00969 int result; 00970 00971 if (open == NULL) 00972 { 00973 result = __LINE__; 00974 } 00975 else 00976 { 00977 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 00978 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 1); 00979 if (item_value == NULL) 00980 { 00981 result = __LINE__; 00982 } 00983 else 00984 { 00985 if (amqpvalue_get_string(item_value, hostname_value) != 0) 00986 { 00987 result = __LINE__; 00988 } 00989 else 00990 { 00991 result = 0; 00992 } 00993 } 00994 } 00995 00996 return result; 00997 } 00998 00999 int open_set_hostname(OPEN_HANDLE open, const char* hostname_value) 01000 { 01001 int result; 01002 01003 if (open == NULL) 01004 { 01005 result = __LINE__; 01006 } 01007 else 01008 { 01009 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01010 AMQP_VALUE hostname_amqp_value = amqpvalue_create_string(hostname_value); 01011 if (hostname_amqp_value == NULL) 01012 { 01013 result = __LINE__; 01014 } 01015 else 01016 { 01017 if (amqpvalue_set_composite_item(open_instance->composite_value, 1, hostname_amqp_value) != 0) 01018 { 01019 result = __LINE__; 01020 } 01021 else 01022 { 01023 result = 0; 01024 } 01025 01026 amqpvalue_destroy(hostname_amqp_value); 01027 } 01028 } 01029 01030 return result; 01031 } 01032 01033 int open_get_max_frame_size(OPEN_HANDLE open, uint32_t* max_frame_size_value) 01034 { 01035 int result; 01036 01037 if (open == NULL) 01038 { 01039 result = __LINE__; 01040 } 01041 else 01042 { 01043 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01044 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 2); 01045 if (item_value == NULL) 01046 { 01047 result = __LINE__; 01048 } 01049 else 01050 { 01051 if (amqpvalue_get_uint(item_value, max_frame_size_value) != 0) 01052 { 01053 result = __LINE__; 01054 } 01055 else 01056 { 01057 result = 0; 01058 } 01059 } 01060 } 01061 01062 return result; 01063 } 01064 01065 int open_set_max_frame_size(OPEN_HANDLE open, uint32_t max_frame_size_value) 01066 { 01067 int result; 01068 01069 if (open == NULL) 01070 { 01071 result = __LINE__; 01072 } 01073 else 01074 { 01075 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01076 AMQP_VALUE max_frame_size_amqp_value = amqpvalue_create_uint(max_frame_size_value); 01077 if (max_frame_size_amqp_value == NULL) 01078 { 01079 result = __LINE__; 01080 } 01081 else 01082 { 01083 if (amqpvalue_set_composite_item(open_instance->composite_value, 2, max_frame_size_amqp_value) != 0) 01084 { 01085 result = __LINE__; 01086 } 01087 else 01088 { 01089 result = 0; 01090 } 01091 01092 amqpvalue_destroy(max_frame_size_amqp_value); 01093 } 01094 } 01095 01096 return result; 01097 } 01098 01099 int open_get_channel_max(OPEN_HANDLE open, uint16_t* channel_max_value) 01100 { 01101 int result; 01102 01103 if (open == NULL) 01104 { 01105 result = __LINE__; 01106 } 01107 else 01108 { 01109 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01110 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 3); 01111 if (item_value == NULL) 01112 { 01113 result = __LINE__; 01114 } 01115 else 01116 { 01117 if (amqpvalue_get_ushort(item_value, channel_max_value) != 0) 01118 { 01119 result = __LINE__; 01120 } 01121 else 01122 { 01123 result = 0; 01124 } 01125 } 01126 } 01127 01128 return result; 01129 } 01130 01131 int open_set_channel_max(OPEN_HANDLE open, uint16_t channel_max_value) 01132 { 01133 int result; 01134 01135 if (open == NULL) 01136 { 01137 result = __LINE__; 01138 } 01139 else 01140 { 01141 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01142 AMQP_VALUE channel_max_amqp_value = amqpvalue_create_ushort(channel_max_value); 01143 if (channel_max_amqp_value == NULL) 01144 { 01145 result = __LINE__; 01146 } 01147 else 01148 { 01149 if (amqpvalue_set_composite_item(open_instance->composite_value, 3, channel_max_amqp_value) != 0) 01150 { 01151 result = __LINE__; 01152 } 01153 else 01154 { 01155 result = 0; 01156 } 01157 01158 amqpvalue_destroy(channel_max_amqp_value); 01159 } 01160 } 01161 01162 return result; 01163 } 01164 01165 int open_get_idle_time_out(OPEN_HANDLE open, milliseconds* idle_time_out_value) 01166 { 01167 int result; 01168 01169 if (open == NULL) 01170 { 01171 result = __LINE__; 01172 } 01173 else 01174 { 01175 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01176 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 4); 01177 if (item_value == NULL) 01178 { 01179 result = __LINE__; 01180 } 01181 else 01182 { 01183 if (amqpvalue_get_milliseconds(item_value, idle_time_out_value) != 0) 01184 { 01185 result = __LINE__; 01186 } 01187 else 01188 { 01189 result = 0; 01190 } 01191 } 01192 } 01193 01194 return result; 01195 } 01196 01197 int open_set_idle_time_out(OPEN_HANDLE open, milliseconds idle_time_out_value) 01198 { 01199 int result; 01200 01201 if (open == NULL) 01202 { 01203 result = __LINE__; 01204 } 01205 else 01206 { 01207 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01208 AMQP_VALUE idle_time_out_amqp_value = amqpvalue_create_milliseconds(idle_time_out_value); 01209 if (idle_time_out_amqp_value == NULL) 01210 { 01211 result = __LINE__; 01212 } 01213 else 01214 { 01215 if (amqpvalue_set_composite_item(open_instance->composite_value, 4, idle_time_out_amqp_value) != 0) 01216 { 01217 result = __LINE__; 01218 } 01219 else 01220 { 01221 result = 0; 01222 } 01223 01224 amqpvalue_destroy(idle_time_out_amqp_value); 01225 } 01226 } 01227 01228 return result; 01229 } 01230 01231 int open_get_outgoing_locales(OPEN_HANDLE open, AMQP_VALUE* outgoing_locales_value) 01232 { 01233 int result; 01234 01235 if (open == NULL) 01236 { 01237 result = __LINE__; 01238 } 01239 else 01240 { 01241 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01242 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 5); 01243 if (item_value == NULL) 01244 { 01245 result = __LINE__; 01246 } 01247 else 01248 { 01249 if (amqpvalue_get_array(item_value, outgoing_locales_value) != 0) 01250 { 01251 result = __LINE__; 01252 } 01253 else 01254 { 01255 result = 0; 01256 } 01257 } 01258 } 01259 01260 return result; 01261 } 01262 01263 int open_set_outgoing_locales(OPEN_HANDLE open, AMQP_VALUE outgoing_locales_value) 01264 { 01265 int result; 01266 01267 if (open == NULL) 01268 { 01269 result = __LINE__; 01270 } 01271 else 01272 { 01273 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01274 AMQP_VALUE outgoing_locales_amqp_value = amqpvalue_clone(outgoing_locales_value); 01275 if (outgoing_locales_amqp_value == NULL) 01276 { 01277 result = __LINE__; 01278 } 01279 else 01280 { 01281 if (amqpvalue_set_composite_item(open_instance->composite_value, 5, outgoing_locales_amqp_value) != 0) 01282 { 01283 result = __LINE__; 01284 } 01285 else 01286 { 01287 result = 0; 01288 } 01289 01290 amqpvalue_destroy(outgoing_locales_amqp_value); 01291 } 01292 } 01293 01294 return result; 01295 } 01296 01297 int open_get_incoming_locales(OPEN_HANDLE open, AMQP_VALUE* incoming_locales_value) 01298 { 01299 int result; 01300 01301 if (open == NULL) 01302 { 01303 result = __LINE__; 01304 } 01305 else 01306 { 01307 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01308 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 6); 01309 if (item_value == NULL) 01310 { 01311 result = __LINE__; 01312 } 01313 else 01314 { 01315 if (amqpvalue_get_array(item_value, incoming_locales_value) != 0) 01316 { 01317 result = __LINE__; 01318 } 01319 else 01320 { 01321 result = 0; 01322 } 01323 } 01324 } 01325 01326 return result; 01327 } 01328 01329 int open_set_incoming_locales(OPEN_HANDLE open, AMQP_VALUE incoming_locales_value) 01330 { 01331 int result; 01332 01333 if (open == NULL) 01334 { 01335 result = __LINE__; 01336 } 01337 else 01338 { 01339 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01340 AMQP_VALUE incoming_locales_amqp_value = amqpvalue_clone(incoming_locales_value); 01341 if (incoming_locales_amqp_value == NULL) 01342 { 01343 result = __LINE__; 01344 } 01345 else 01346 { 01347 if (amqpvalue_set_composite_item(open_instance->composite_value, 6, incoming_locales_amqp_value) != 0) 01348 { 01349 result = __LINE__; 01350 } 01351 else 01352 { 01353 result = 0; 01354 } 01355 01356 amqpvalue_destroy(incoming_locales_amqp_value); 01357 } 01358 } 01359 01360 return result; 01361 } 01362 01363 int open_get_offered_capabilities(OPEN_HANDLE open, AMQP_VALUE* offered_capabilities_value) 01364 { 01365 int result; 01366 01367 if (open == NULL) 01368 { 01369 result = __LINE__; 01370 } 01371 else 01372 { 01373 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01374 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 7); 01375 if (item_value == NULL) 01376 { 01377 result = __LINE__; 01378 } 01379 else 01380 { 01381 if (amqpvalue_get_array(item_value, offered_capabilities_value) != 0) 01382 { 01383 result = __LINE__; 01384 } 01385 else 01386 { 01387 result = 0; 01388 } 01389 } 01390 } 01391 01392 return result; 01393 } 01394 01395 int open_set_offered_capabilities(OPEN_HANDLE open, AMQP_VALUE offered_capabilities_value) 01396 { 01397 int result; 01398 01399 if (open == NULL) 01400 { 01401 result = __LINE__; 01402 } 01403 else 01404 { 01405 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01406 AMQP_VALUE offered_capabilities_amqp_value = amqpvalue_clone(offered_capabilities_value); 01407 if (offered_capabilities_amqp_value == NULL) 01408 { 01409 result = __LINE__; 01410 } 01411 else 01412 { 01413 if (amqpvalue_set_composite_item(open_instance->composite_value, 7, offered_capabilities_amqp_value) != 0) 01414 { 01415 result = __LINE__; 01416 } 01417 else 01418 { 01419 result = 0; 01420 } 01421 01422 amqpvalue_destroy(offered_capabilities_amqp_value); 01423 } 01424 } 01425 01426 return result; 01427 } 01428 01429 int open_get_desired_capabilities(OPEN_HANDLE open, AMQP_VALUE* desired_capabilities_value) 01430 { 01431 int result; 01432 01433 if (open == NULL) 01434 { 01435 result = __LINE__; 01436 } 01437 else 01438 { 01439 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01440 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 8); 01441 if (item_value == NULL) 01442 { 01443 result = __LINE__; 01444 } 01445 else 01446 { 01447 if (amqpvalue_get_array(item_value, desired_capabilities_value) != 0) 01448 { 01449 result = __LINE__; 01450 } 01451 else 01452 { 01453 result = 0; 01454 } 01455 } 01456 } 01457 01458 return result; 01459 } 01460 01461 int open_set_desired_capabilities(OPEN_HANDLE open, AMQP_VALUE desired_capabilities_value) 01462 { 01463 int result; 01464 01465 if (open == NULL) 01466 { 01467 result = __LINE__; 01468 } 01469 else 01470 { 01471 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01472 AMQP_VALUE desired_capabilities_amqp_value = amqpvalue_clone(desired_capabilities_value); 01473 if (desired_capabilities_amqp_value == NULL) 01474 { 01475 result = __LINE__; 01476 } 01477 else 01478 { 01479 if (amqpvalue_set_composite_item(open_instance->composite_value, 8, desired_capabilities_amqp_value) != 0) 01480 { 01481 result = __LINE__; 01482 } 01483 else 01484 { 01485 result = 0; 01486 } 01487 01488 amqpvalue_destroy(desired_capabilities_amqp_value); 01489 } 01490 } 01491 01492 return result; 01493 } 01494 01495 int open_get_properties(OPEN_HANDLE open, fields* properties_value) 01496 { 01497 int result; 01498 01499 if (open == NULL) 01500 { 01501 result = __LINE__; 01502 } 01503 else 01504 { 01505 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01506 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(open_instance->composite_value, 9); 01507 if (item_value == NULL) 01508 { 01509 result = __LINE__; 01510 } 01511 else 01512 { 01513 if (amqpvalue_get_fields(item_value, properties_value) != 0) 01514 { 01515 result = __LINE__; 01516 } 01517 else 01518 { 01519 result = 0; 01520 } 01521 } 01522 } 01523 01524 return result; 01525 } 01526 01527 int open_set_properties(OPEN_HANDLE open, fields properties_value) 01528 { 01529 int result; 01530 01531 if (open == NULL) 01532 { 01533 result = __LINE__; 01534 } 01535 else 01536 { 01537 OPEN_INSTANCE* open_instance = (OPEN_INSTANCE*)open; 01538 AMQP_VALUE properties_amqp_value = amqpvalue_create_fields(properties_value); 01539 if (properties_amqp_value == NULL) 01540 { 01541 result = __LINE__; 01542 } 01543 else 01544 { 01545 if (amqpvalue_set_composite_item(open_instance->composite_value, 9, properties_amqp_value) != 0) 01546 { 01547 result = __LINE__; 01548 } 01549 else 01550 { 01551 result = 0; 01552 } 01553 01554 amqpvalue_destroy(properties_amqp_value); 01555 } 01556 } 01557 01558 return result; 01559 } 01560 01561 01562 /* begin */ 01563 01564 typedef struct BEGIN_INSTANCE_TAG 01565 { 01566 AMQP_VALUE composite_value; 01567 } BEGIN_INSTANCE; 01568 01569 static BEGIN_HANDLE begin_create_internal(void) 01570 { 01571 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)amqpalloc_malloc(sizeof(BEGIN_INSTANCE)); 01572 if (begin_instance != NULL) 01573 { 01574 begin_instance->composite_value = NULL; 01575 } 01576 01577 return begin_instance; 01578 } 01579 01580 BEGIN_HANDLE begin_create(transfer_number next_outgoing_id_value, uint32_t incoming_window_value, uint32_t outgoing_window_value) 01581 { 01582 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)amqpalloc_malloc(sizeof(BEGIN_INSTANCE)); 01583 if (begin_instance != NULL) 01584 { 01585 begin_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(17); 01586 if (begin_instance->composite_value == NULL) 01587 { 01588 amqpalloc_free(begin_instance); 01589 begin_instance = NULL; 01590 } 01591 else 01592 { 01593 AMQP_VALUE next_outgoing_id_amqp_value; 01594 AMQP_VALUE incoming_window_amqp_value; 01595 AMQP_VALUE outgoing_window_amqp_value; 01596 int result = 0; 01597 01598 next_outgoing_id_amqp_value = amqpvalue_create_transfer_number(next_outgoing_id_value); 01599 if ((result == 0) && (amqpvalue_set_composite_item(begin_instance->composite_value, 1, next_outgoing_id_amqp_value) != 0)) 01600 { 01601 result = __LINE__; 01602 } 01603 incoming_window_amqp_value = amqpvalue_create_uint(incoming_window_value); 01604 if ((result == 0) && (amqpvalue_set_composite_item(begin_instance->composite_value, 2, incoming_window_amqp_value) != 0)) 01605 { 01606 result = __LINE__; 01607 } 01608 outgoing_window_amqp_value = amqpvalue_create_uint(outgoing_window_value); 01609 if ((result == 0) && (amqpvalue_set_composite_item(begin_instance->composite_value, 3, outgoing_window_amqp_value) != 0)) 01610 { 01611 result = __LINE__; 01612 } 01613 01614 amqpvalue_destroy(next_outgoing_id_amqp_value); 01615 amqpvalue_destroy(incoming_window_amqp_value); 01616 amqpvalue_destroy(outgoing_window_amqp_value); 01617 } 01618 } 01619 01620 return begin_instance; 01621 } 01622 01623 BEGIN_HANDLE begin_clone(BEGIN_HANDLE value) 01624 { 01625 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)amqpalloc_malloc(sizeof(BEGIN_INSTANCE)); 01626 if (begin_instance != NULL) 01627 { 01628 begin_instance->composite_value = amqpvalue_clone(((BEGIN_INSTANCE*)value)->composite_value); 01629 if (begin_instance->composite_value == NULL) 01630 { 01631 amqpalloc_free(begin_instance); 01632 begin_instance = NULL; 01633 } 01634 } 01635 01636 return begin_instance; 01637 } 01638 01639 void begin_destroy(BEGIN_HANDLE begin) 01640 { 01641 if (begin != NULL) 01642 { 01643 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 01644 amqpvalue_destroy(begin_instance->composite_value); 01645 amqpalloc_free(begin_instance); 01646 } 01647 } 01648 01649 AMQP_VALUE amqpvalue_create_begin(BEGIN_HANDLE begin) 01650 { 01651 AMQP_VALUE result; 01652 01653 if (begin == NULL) 01654 { 01655 result = NULL; 01656 } 01657 else 01658 { 01659 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 01660 result = amqpvalue_clone(begin_instance->composite_value); 01661 } 01662 01663 return result; 01664 } 01665 01666 bool is_begin_type_by_descriptor(AMQP_VALUE descriptor) 01667 { 01668 bool result; 01669 01670 uint64_t descriptor_ulong; 01671 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 01672 (descriptor_ulong == 17)) 01673 { 01674 result = true; 01675 } 01676 else 01677 { 01678 result = false; 01679 } 01680 01681 return result; 01682 } 01683 01684 01685 int amqpvalue_get_begin(AMQP_VALUE value, BEGIN_HANDLE* begin_handle) 01686 { 01687 int result; 01688 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin_create_internal(); 01689 *begin_handle = begin_instance; 01690 if (*begin_handle == NULL) 01691 { 01692 result = __LINE__; 01693 } 01694 else 01695 { 01696 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 01697 if (list_value == NULL) 01698 { 01699 begin_destroy(*begin_handle); 01700 result = __LINE__; 01701 } 01702 else 01703 { 01704 do 01705 { 01706 AMQP_VALUE item_value; 01707 /* remote-channel */ 01708 item_value = amqpvalue_get_list_item(list_value, 0); 01709 if (item_value == NULL) 01710 { 01711 /* do nothing */ 01712 } 01713 else 01714 { 01715 uint16_t remote_channel; 01716 if (amqpvalue_get_ushort(item_value, &remote_channel) != 0) 01717 { 01718 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 01719 { 01720 begin_destroy(*begin_handle); 01721 result = __LINE__; 01722 break; 01723 } 01724 } 01725 01726 amqpvalue_destroy(item_value); 01727 } 01728 /* next-outgoing-id */ 01729 item_value = amqpvalue_get_list_item(list_value, 1); 01730 if (item_value == NULL) 01731 { 01732 { 01733 begin_destroy(*begin_handle); 01734 result = __LINE__; 01735 break; 01736 } 01737 } 01738 else 01739 { 01740 transfer_number next_outgoing_id; 01741 if (amqpvalue_get_transfer_number(item_value, &next_outgoing_id) != 0) 01742 { 01743 begin_destroy(*begin_handle); 01744 result = __LINE__; 01745 break; 01746 } 01747 01748 amqpvalue_destroy(item_value); 01749 } 01750 /* incoming-window */ 01751 item_value = amqpvalue_get_list_item(list_value, 2); 01752 if (item_value == NULL) 01753 { 01754 { 01755 begin_destroy(*begin_handle); 01756 result = __LINE__; 01757 break; 01758 } 01759 } 01760 else 01761 { 01762 uint32_t incoming_window; 01763 if (amqpvalue_get_uint(item_value, &incoming_window) != 0) 01764 { 01765 begin_destroy(*begin_handle); 01766 result = __LINE__; 01767 break; 01768 } 01769 01770 amqpvalue_destroy(item_value); 01771 } 01772 /* outgoing-window */ 01773 item_value = amqpvalue_get_list_item(list_value, 3); 01774 if (item_value == NULL) 01775 { 01776 { 01777 begin_destroy(*begin_handle); 01778 result = __LINE__; 01779 break; 01780 } 01781 } 01782 else 01783 { 01784 uint32_t outgoing_window; 01785 if (amqpvalue_get_uint(item_value, &outgoing_window) != 0) 01786 { 01787 begin_destroy(*begin_handle); 01788 result = __LINE__; 01789 break; 01790 } 01791 01792 amqpvalue_destroy(item_value); 01793 } 01794 /* handle-max */ 01795 item_value = amqpvalue_get_list_item(list_value, 4); 01796 if (item_value == NULL) 01797 { 01798 /* do nothing */ 01799 } 01800 else 01801 { 01802 handle handle_max; 01803 if (amqpvalue_get_handle(item_value, &handle_max) != 0) 01804 { 01805 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 01806 { 01807 begin_destroy(*begin_handle); 01808 result = __LINE__; 01809 break; 01810 } 01811 } 01812 01813 amqpvalue_destroy(item_value); 01814 } 01815 /* offered-capabilities */ 01816 item_value = amqpvalue_get_list_item(list_value, 5); 01817 if (item_value == NULL) 01818 { 01819 /* do nothing */ 01820 } 01821 else 01822 { 01823 const char* offered_capabilities; 01824 AMQP_VALUE offered_capabilities_array; 01825 if ((amqpvalue_get_array(item_value, &offered_capabilities_array) != 0) && 01826 (amqpvalue_get_symbol(item_value, &offered_capabilities) != 0)) 01827 { 01828 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 01829 { 01830 begin_destroy(*begin_handle); 01831 result = __LINE__; 01832 break; 01833 } 01834 } 01835 01836 amqpvalue_destroy(item_value); 01837 } 01838 /* desired-capabilities */ 01839 item_value = amqpvalue_get_list_item(list_value, 6); 01840 if (item_value == NULL) 01841 { 01842 /* do nothing */ 01843 } 01844 else 01845 { 01846 const char* desired_capabilities; 01847 AMQP_VALUE desired_capabilities_array; 01848 if ((amqpvalue_get_array(item_value, &desired_capabilities_array) != 0) && 01849 (amqpvalue_get_symbol(item_value, &desired_capabilities) != 0)) 01850 { 01851 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 01852 { 01853 begin_destroy(*begin_handle); 01854 result = __LINE__; 01855 break; 01856 } 01857 } 01858 01859 amqpvalue_destroy(item_value); 01860 } 01861 /* properties */ 01862 item_value = amqpvalue_get_list_item(list_value, 7); 01863 if (item_value == NULL) 01864 { 01865 /* do nothing */ 01866 } 01867 else 01868 { 01869 fields properties; 01870 if (amqpvalue_get_fields(item_value, &properties) != 0) 01871 { 01872 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 01873 { 01874 begin_destroy(*begin_handle); 01875 result = __LINE__; 01876 break; 01877 } 01878 } 01879 01880 amqpvalue_destroy(item_value); 01881 } 01882 01883 begin_instance->composite_value = amqpvalue_clone(value); 01884 01885 result = 0; 01886 } while (0); 01887 } 01888 } 01889 01890 return result; 01891 } 01892 01893 int begin_get_remote_channel(BEGIN_HANDLE begin, uint16_t* remote_channel_value) 01894 { 01895 int result; 01896 01897 if (begin == NULL) 01898 { 01899 result = __LINE__; 01900 } 01901 else 01902 { 01903 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 01904 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 0); 01905 if (item_value == NULL) 01906 { 01907 result = __LINE__; 01908 } 01909 else 01910 { 01911 if (amqpvalue_get_ushort(item_value, remote_channel_value) != 0) 01912 { 01913 result = __LINE__; 01914 } 01915 else 01916 { 01917 result = 0; 01918 } 01919 } 01920 } 01921 01922 return result; 01923 } 01924 01925 int begin_set_remote_channel(BEGIN_HANDLE begin, uint16_t remote_channel_value) 01926 { 01927 int result; 01928 01929 if (begin == NULL) 01930 { 01931 result = __LINE__; 01932 } 01933 else 01934 { 01935 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 01936 AMQP_VALUE remote_channel_amqp_value = amqpvalue_create_ushort(remote_channel_value); 01937 if (remote_channel_amqp_value == NULL) 01938 { 01939 result = __LINE__; 01940 } 01941 else 01942 { 01943 if (amqpvalue_set_composite_item(begin_instance->composite_value, 0, remote_channel_amqp_value) != 0) 01944 { 01945 result = __LINE__; 01946 } 01947 else 01948 { 01949 result = 0; 01950 } 01951 01952 amqpvalue_destroy(remote_channel_amqp_value); 01953 } 01954 } 01955 01956 return result; 01957 } 01958 01959 int begin_get_next_outgoing_id(BEGIN_HANDLE begin, transfer_number* next_outgoing_id_value) 01960 { 01961 int result; 01962 01963 if (begin == NULL) 01964 { 01965 result = __LINE__; 01966 } 01967 else 01968 { 01969 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 01970 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 1); 01971 if (item_value == NULL) 01972 { 01973 result = __LINE__; 01974 } 01975 else 01976 { 01977 if (amqpvalue_get_transfer_number(item_value, next_outgoing_id_value) != 0) 01978 { 01979 result = __LINE__; 01980 } 01981 else 01982 { 01983 result = 0; 01984 } 01985 } 01986 } 01987 01988 return result; 01989 } 01990 01991 int begin_set_next_outgoing_id(BEGIN_HANDLE begin, transfer_number next_outgoing_id_value) 01992 { 01993 int result; 01994 01995 if (begin == NULL) 01996 { 01997 result = __LINE__; 01998 } 01999 else 02000 { 02001 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 02002 AMQP_VALUE next_outgoing_id_amqp_value = amqpvalue_create_transfer_number(next_outgoing_id_value); 02003 if (next_outgoing_id_amqp_value == NULL) 02004 { 02005 result = __LINE__; 02006 } 02007 else 02008 { 02009 if (amqpvalue_set_composite_item(begin_instance->composite_value, 1, next_outgoing_id_amqp_value) != 0) 02010 { 02011 result = __LINE__; 02012 } 02013 else 02014 { 02015 result = 0; 02016 } 02017 02018 amqpvalue_destroy(next_outgoing_id_amqp_value); 02019 } 02020 } 02021 02022 return result; 02023 } 02024 02025 int begin_get_incoming_window(BEGIN_HANDLE begin, uint32_t* incoming_window_value) 02026 { 02027 int result; 02028 02029 if (begin == NULL) 02030 { 02031 result = __LINE__; 02032 } 02033 else 02034 { 02035 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 02036 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 2); 02037 if (item_value == NULL) 02038 { 02039 result = __LINE__; 02040 } 02041 else 02042 { 02043 if (amqpvalue_get_uint(item_value, incoming_window_value) != 0) 02044 { 02045 result = __LINE__; 02046 } 02047 else 02048 { 02049 result = 0; 02050 } 02051 } 02052 } 02053 02054 return result; 02055 } 02056 02057 int begin_set_incoming_window(BEGIN_HANDLE begin, uint32_t incoming_window_value) 02058 { 02059 int result; 02060 02061 if (begin == NULL) 02062 { 02063 result = __LINE__; 02064 } 02065 else 02066 { 02067 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 02068 AMQP_VALUE incoming_window_amqp_value = amqpvalue_create_uint(incoming_window_value); 02069 if (incoming_window_amqp_value == NULL) 02070 { 02071 result = __LINE__; 02072 } 02073 else 02074 { 02075 if (amqpvalue_set_composite_item(begin_instance->composite_value, 2, incoming_window_amqp_value) != 0) 02076 { 02077 result = __LINE__; 02078 } 02079 else 02080 { 02081 result = 0; 02082 } 02083 02084 amqpvalue_destroy(incoming_window_amqp_value); 02085 } 02086 } 02087 02088 return result; 02089 } 02090 02091 int begin_get_outgoing_window(BEGIN_HANDLE begin, uint32_t* outgoing_window_value) 02092 { 02093 int result; 02094 02095 if (begin == NULL) 02096 { 02097 result = __LINE__; 02098 } 02099 else 02100 { 02101 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 02102 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 3); 02103 if (item_value == NULL) 02104 { 02105 result = __LINE__; 02106 } 02107 else 02108 { 02109 if (amqpvalue_get_uint(item_value, outgoing_window_value) != 0) 02110 { 02111 result = __LINE__; 02112 } 02113 else 02114 { 02115 result = 0; 02116 } 02117 } 02118 } 02119 02120 return result; 02121 } 02122 02123 int begin_set_outgoing_window(BEGIN_HANDLE begin, uint32_t outgoing_window_value) 02124 { 02125 int result; 02126 02127 if (begin == NULL) 02128 { 02129 result = __LINE__; 02130 } 02131 else 02132 { 02133 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 02134 AMQP_VALUE outgoing_window_amqp_value = amqpvalue_create_uint(outgoing_window_value); 02135 if (outgoing_window_amqp_value == NULL) 02136 { 02137 result = __LINE__; 02138 } 02139 else 02140 { 02141 if (amqpvalue_set_composite_item(begin_instance->composite_value, 3, outgoing_window_amqp_value) != 0) 02142 { 02143 result = __LINE__; 02144 } 02145 else 02146 { 02147 result = 0; 02148 } 02149 02150 amqpvalue_destroy(outgoing_window_amqp_value); 02151 } 02152 } 02153 02154 return result; 02155 } 02156 02157 int begin_get_handle_max(BEGIN_HANDLE begin, handle* handle_max_value) 02158 { 02159 int result; 02160 02161 if (begin == NULL) 02162 { 02163 result = __LINE__; 02164 } 02165 else 02166 { 02167 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 02168 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 4); 02169 if (item_value == NULL) 02170 { 02171 result = __LINE__; 02172 } 02173 else 02174 { 02175 if (amqpvalue_get_handle(item_value, handle_max_value) != 0) 02176 { 02177 result = __LINE__; 02178 } 02179 else 02180 { 02181 result = 0; 02182 } 02183 } 02184 } 02185 02186 return result; 02187 } 02188 02189 int begin_set_handle_max(BEGIN_HANDLE begin, handle handle_max_value) 02190 { 02191 int result; 02192 02193 if (begin == NULL) 02194 { 02195 result = __LINE__; 02196 } 02197 else 02198 { 02199 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 02200 AMQP_VALUE handle_max_amqp_value = amqpvalue_create_handle(handle_max_value); 02201 if (handle_max_amqp_value == NULL) 02202 { 02203 result = __LINE__; 02204 } 02205 else 02206 { 02207 if (amqpvalue_set_composite_item(begin_instance->composite_value, 4, handle_max_amqp_value) != 0) 02208 { 02209 result = __LINE__; 02210 } 02211 else 02212 { 02213 result = 0; 02214 } 02215 02216 amqpvalue_destroy(handle_max_amqp_value); 02217 } 02218 } 02219 02220 return result; 02221 } 02222 02223 int begin_get_offered_capabilities(BEGIN_HANDLE begin, AMQP_VALUE* offered_capabilities_value) 02224 { 02225 int result; 02226 02227 if (begin == NULL) 02228 { 02229 result = __LINE__; 02230 } 02231 else 02232 { 02233 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 02234 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 5); 02235 if (item_value == NULL) 02236 { 02237 result = __LINE__; 02238 } 02239 else 02240 { 02241 if (amqpvalue_get_array(item_value, offered_capabilities_value) != 0) 02242 { 02243 result = __LINE__; 02244 } 02245 else 02246 { 02247 result = 0; 02248 } 02249 } 02250 } 02251 02252 return result; 02253 } 02254 02255 int begin_set_offered_capabilities(BEGIN_HANDLE begin, AMQP_VALUE offered_capabilities_value) 02256 { 02257 int result; 02258 02259 if (begin == NULL) 02260 { 02261 result = __LINE__; 02262 } 02263 else 02264 { 02265 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 02266 AMQP_VALUE offered_capabilities_amqp_value = amqpvalue_clone(offered_capabilities_value); 02267 if (offered_capabilities_amqp_value == NULL) 02268 { 02269 result = __LINE__; 02270 } 02271 else 02272 { 02273 if (amqpvalue_set_composite_item(begin_instance->composite_value, 5, offered_capabilities_amqp_value) != 0) 02274 { 02275 result = __LINE__; 02276 } 02277 else 02278 { 02279 result = 0; 02280 } 02281 02282 amqpvalue_destroy(offered_capabilities_amqp_value); 02283 } 02284 } 02285 02286 return result; 02287 } 02288 02289 int begin_get_desired_capabilities(BEGIN_HANDLE begin, AMQP_VALUE* desired_capabilities_value) 02290 { 02291 int result; 02292 02293 if (begin == NULL) 02294 { 02295 result = __LINE__; 02296 } 02297 else 02298 { 02299 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 02300 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 6); 02301 if (item_value == NULL) 02302 { 02303 result = __LINE__; 02304 } 02305 else 02306 { 02307 if (amqpvalue_get_array(item_value, desired_capabilities_value) != 0) 02308 { 02309 result = __LINE__; 02310 } 02311 else 02312 { 02313 result = 0; 02314 } 02315 } 02316 } 02317 02318 return result; 02319 } 02320 02321 int begin_set_desired_capabilities(BEGIN_HANDLE begin, AMQP_VALUE desired_capabilities_value) 02322 { 02323 int result; 02324 02325 if (begin == NULL) 02326 { 02327 result = __LINE__; 02328 } 02329 else 02330 { 02331 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 02332 AMQP_VALUE desired_capabilities_amqp_value = amqpvalue_clone(desired_capabilities_value); 02333 if (desired_capabilities_amqp_value == NULL) 02334 { 02335 result = __LINE__; 02336 } 02337 else 02338 { 02339 if (amqpvalue_set_composite_item(begin_instance->composite_value, 6, desired_capabilities_amqp_value) != 0) 02340 { 02341 result = __LINE__; 02342 } 02343 else 02344 { 02345 result = 0; 02346 } 02347 02348 amqpvalue_destroy(desired_capabilities_amqp_value); 02349 } 02350 } 02351 02352 return result; 02353 } 02354 02355 int begin_get_properties(BEGIN_HANDLE begin, fields* properties_value) 02356 { 02357 int result; 02358 02359 if (begin == NULL) 02360 { 02361 result = __LINE__; 02362 } 02363 else 02364 { 02365 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 02366 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(begin_instance->composite_value, 7); 02367 if (item_value == NULL) 02368 { 02369 result = __LINE__; 02370 } 02371 else 02372 { 02373 if (amqpvalue_get_fields(item_value, properties_value) != 0) 02374 { 02375 result = __LINE__; 02376 } 02377 else 02378 { 02379 result = 0; 02380 } 02381 } 02382 } 02383 02384 return result; 02385 } 02386 02387 int begin_set_properties(BEGIN_HANDLE begin, fields properties_value) 02388 { 02389 int result; 02390 02391 if (begin == NULL) 02392 { 02393 result = __LINE__; 02394 } 02395 else 02396 { 02397 BEGIN_INSTANCE* begin_instance = (BEGIN_INSTANCE*)begin; 02398 AMQP_VALUE properties_amqp_value = amqpvalue_create_fields(properties_value); 02399 if (properties_amqp_value == NULL) 02400 { 02401 result = __LINE__; 02402 } 02403 else 02404 { 02405 if (amqpvalue_set_composite_item(begin_instance->composite_value, 7, properties_amqp_value) != 0) 02406 { 02407 result = __LINE__; 02408 } 02409 else 02410 { 02411 result = 0; 02412 } 02413 02414 amqpvalue_destroy(properties_amqp_value); 02415 } 02416 } 02417 02418 return result; 02419 } 02420 02421 02422 /* attach */ 02423 02424 typedef struct ATTACH_INSTANCE_TAG 02425 { 02426 AMQP_VALUE composite_value; 02427 } ATTACH_INSTANCE; 02428 02429 static ATTACH_HANDLE attach_create_internal(void) 02430 { 02431 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)amqpalloc_malloc(sizeof(ATTACH_INSTANCE)); 02432 if (attach_instance != NULL) 02433 { 02434 attach_instance->composite_value = NULL; 02435 } 02436 02437 return attach_instance; 02438 } 02439 02440 ATTACH_HANDLE attach_create(const char* name_value, handle handle_value, role role_value) 02441 { 02442 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)amqpalloc_malloc(sizeof(ATTACH_INSTANCE)); 02443 if (attach_instance != NULL) 02444 { 02445 attach_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(18); 02446 if (attach_instance->composite_value == NULL) 02447 { 02448 amqpalloc_free(attach_instance); 02449 attach_instance = NULL; 02450 } 02451 else 02452 { 02453 AMQP_VALUE name_amqp_value; 02454 AMQP_VALUE handle_amqp_value; 02455 AMQP_VALUE role_amqp_value; 02456 int result = 0; 02457 02458 name_amqp_value = amqpvalue_create_string(name_value); 02459 if ((result == 0) && (amqpvalue_set_composite_item(attach_instance->composite_value, 0, name_amqp_value) != 0)) 02460 { 02461 result = __LINE__; 02462 } 02463 handle_amqp_value = amqpvalue_create_handle(handle_value); 02464 if ((result == 0) && (amqpvalue_set_composite_item(attach_instance->composite_value, 1, handle_amqp_value) != 0)) 02465 { 02466 result = __LINE__; 02467 } 02468 role_amqp_value = amqpvalue_create_role(role_value); 02469 if ((result == 0) && (amqpvalue_set_composite_item(attach_instance->composite_value, 2, role_amqp_value) != 0)) 02470 { 02471 result = __LINE__; 02472 } 02473 02474 amqpvalue_destroy(name_amqp_value); 02475 amqpvalue_destroy(handle_amqp_value); 02476 amqpvalue_destroy(role_amqp_value); 02477 } 02478 } 02479 02480 return attach_instance; 02481 } 02482 02483 ATTACH_HANDLE attach_clone(ATTACH_HANDLE value) 02484 { 02485 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)amqpalloc_malloc(sizeof(ATTACH_INSTANCE)); 02486 if (attach_instance != NULL) 02487 { 02488 attach_instance->composite_value = amqpvalue_clone(((ATTACH_INSTANCE*)value)->composite_value); 02489 if (attach_instance->composite_value == NULL) 02490 { 02491 amqpalloc_free(attach_instance); 02492 attach_instance = NULL; 02493 } 02494 } 02495 02496 return attach_instance; 02497 } 02498 02499 void attach_destroy(ATTACH_HANDLE attach) 02500 { 02501 if (attach != NULL) 02502 { 02503 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 02504 amqpvalue_destroy(attach_instance->composite_value); 02505 amqpalloc_free(attach_instance); 02506 } 02507 } 02508 02509 AMQP_VALUE amqpvalue_create_attach(ATTACH_HANDLE attach) 02510 { 02511 AMQP_VALUE result; 02512 02513 if (attach == NULL) 02514 { 02515 result = NULL; 02516 } 02517 else 02518 { 02519 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 02520 result = amqpvalue_clone(attach_instance->composite_value); 02521 } 02522 02523 return result; 02524 } 02525 02526 bool is_attach_type_by_descriptor(AMQP_VALUE descriptor) 02527 { 02528 bool result; 02529 02530 uint64_t descriptor_ulong; 02531 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 02532 (descriptor_ulong == 18)) 02533 { 02534 result = true; 02535 } 02536 else 02537 { 02538 result = false; 02539 } 02540 02541 return result; 02542 } 02543 02544 02545 int amqpvalue_get_attach(AMQP_VALUE value, ATTACH_HANDLE* attach_handle) 02546 { 02547 int result; 02548 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach_create_internal(); 02549 *attach_handle = attach_instance; 02550 if (*attach_handle == NULL) 02551 { 02552 result = __LINE__; 02553 } 02554 else 02555 { 02556 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 02557 if (list_value == NULL) 02558 { 02559 attach_destroy(*attach_handle); 02560 result = __LINE__; 02561 } 02562 else 02563 { 02564 do 02565 { 02566 AMQP_VALUE item_value; 02567 /* name */ 02568 item_value = amqpvalue_get_list_item(list_value, 0); 02569 if (item_value == NULL) 02570 { 02571 { 02572 attach_destroy(*attach_handle); 02573 result = __LINE__; 02574 break; 02575 } 02576 } 02577 else 02578 { 02579 const char* name; 02580 if (amqpvalue_get_string(item_value, &name) != 0) 02581 { 02582 attach_destroy(*attach_handle); 02583 result = __LINE__; 02584 break; 02585 } 02586 02587 amqpvalue_destroy(item_value); 02588 } 02589 /* handle */ 02590 item_value = amqpvalue_get_list_item(list_value, 1); 02591 if (item_value == NULL) 02592 { 02593 { 02594 attach_destroy(*attach_handle); 02595 result = __LINE__; 02596 break; 02597 } 02598 } 02599 else 02600 { 02601 handle handle; 02602 if (amqpvalue_get_handle(item_value, &handle) != 0) 02603 { 02604 attach_destroy(*attach_handle); 02605 result = __LINE__; 02606 break; 02607 } 02608 02609 amqpvalue_destroy(item_value); 02610 } 02611 /* role */ 02612 item_value = amqpvalue_get_list_item(list_value, 2); 02613 if (item_value == NULL) 02614 { 02615 { 02616 attach_destroy(*attach_handle); 02617 result = __LINE__; 02618 break; 02619 } 02620 } 02621 else 02622 { 02623 role role; 02624 if (amqpvalue_get_role(item_value, &role) != 0) 02625 { 02626 attach_destroy(*attach_handle); 02627 result = __LINE__; 02628 break; 02629 } 02630 02631 amqpvalue_destroy(item_value); 02632 } 02633 /* snd-settle-mode */ 02634 item_value = amqpvalue_get_list_item(list_value, 3); 02635 if (item_value == NULL) 02636 { 02637 /* do nothing */ 02638 } 02639 else 02640 { 02641 sender_settle_mode snd_settle_mode; 02642 if (amqpvalue_get_sender_settle_mode(item_value, &snd_settle_mode) != 0) 02643 { 02644 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 02645 { 02646 attach_destroy(*attach_handle); 02647 result = __LINE__; 02648 break; 02649 } 02650 } 02651 02652 amqpvalue_destroy(item_value); 02653 } 02654 /* rcv-settle-mode */ 02655 item_value = amqpvalue_get_list_item(list_value, 4); 02656 if (item_value == NULL) 02657 { 02658 /* do nothing */ 02659 } 02660 else 02661 { 02662 receiver_settle_mode rcv_settle_mode; 02663 if (amqpvalue_get_receiver_settle_mode(item_value, &rcv_settle_mode) != 0) 02664 { 02665 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 02666 { 02667 attach_destroy(*attach_handle); 02668 result = __LINE__; 02669 break; 02670 } 02671 } 02672 02673 amqpvalue_destroy(item_value); 02674 } 02675 /* source */ 02676 item_value = amqpvalue_get_list_item(list_value, 5); 02677 if (item_value == NULL) 02678 { 02679 /* do nothing */ 02680 } 02681 else 02682 { 02683 amqpvalue_destroy(item_value); 02684 } 02685 /* target */ 02686 item_value = amqpvalue_get_list_item(list_value, 6); 02687 if (item_value == NULL) 02688 { 02689 /* do nothing */ 02690 } 02691 else 02692 { 02693 amqpvalue_destroy(item_value); 02694 } 02695 /* unsettled */ 02696 item_value = amqpvalue_get_list_item(list_value, 7); 02697 if (item_value == NULL) 02698 { 02699 /* do nothing */ 02700 } 02701 else 02702 { 02703 AMQP_VALUE unsettled; 02704 if (amqpvalue_get_map(item_value, &unsettled) != 0) 02705 { 02706 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 02707 { 02708 attach_destroy(*attach_handle); 02709 result = __LINE__; 02710 break; 02711 } 02712 } 02713 02714 amqpvalue_destroy(item_value); 02715 } 02716 /* incomplete-unsettled */ 02717 item_value = amqpvalue_get_list_item(list_value, 8); 02718 if (item_value == NULL) 02719 { 02720 /* do nothing */ 02721 } 02722 else 02723 { 02724 bool incomplete_unsettled; 02725 if (amqpvalue_get_boolean(item_value, &incomplete_unsettled) != 0) 02726 { 02727 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 02728 { 02729 attach_destroy(*attach_handle); 02730 result = __LINE__; 02731 break; 02732 } 02733 } 02734 02735 amqpvalue_destroy(item_value); 02736 } 02737 /* initial-delivery-count */ 02738 item_value = amqpvalue_get_list_item(list_value, 9); 02739 if (item_value == NULL) 02740 { 02741 /* do nothing */ 02742 } 02743 else 02744 { 02745 sequence_no initial_delivery_count; 02746 if (amqpvalue_get_sequence_no(item_value, &initial_delivery_count) != 0) 02747 { 02748 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 02749 { 02750 attach_destroy(*attach_handle); 02751 result = __LINE__; 02752 break; 02753 } 02754 } 02755 02756 amqpvalue_destroy(item_value); 02757 } 02758 /* max-message-size */ 02759 item_value = amqpvalue_get_list_item(list_value, 10); 02760 if (item_value == NULL) 02761 { 02762 /* do nothing */ 02763 } 02764 else 02765 { 02766 uint64_t max_message_size; 02767 if (amqpvalue_get_ulong(item_value, &max_message_size) != 0) 02768 { 02769 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 02770 { 02771 attach_destroy(*attach_handle); 02772 result = __LINE__; 02773 break; 02774 } 02775 } 02776 02777 amqpvalue_destroy(item_value); 02778 } 02779 /* offered-capabilities */ 02780 item_value = amqpvalue_get_list_item(list_value, 11); 02781 if (item_value == NULL) 02782 { 02783 /* do nothing */ 02784 } 02785 else 02786 { 02787 const char* offered_capabilities; 02788 AMQP_VALUE offered_capabilities_array; 02789 if ((amqpvalue_get_array(item_value, &offered_capabilities_array) != 0) && 02790 (amqpvalue_get_symbol(item_value, &offered_capabilities) != 0)) 02791 { 02792 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 02793 { 02794 attach_destroy(*attach_handle); 02795 result = __LINE__; 02796 break; 02797 } 02798 } 02799 02800 amqpvalue_destroy(item_value); 02801 } 02802 /* desired-capabilities */ 02803 item_value = amqpvalue_get_list_item(list_value, 12); 02804 if (item_value == NULL) 02805 { 02806 /* do nothing */ 02807 } 02808 else 02809 { 02810 const char* desired_capabilities; 02811 AMQP_VALUE desired_capabilities_array; 02812 if ((amqpvalue_get_array(item_value, &desired_capabilities_array) != 0) && 02813 (amqpvalue_get_symbol(item_value, &desired_capabilities) != 0)) 02814 { 02815 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 02816 { 02817 attach_destroy(*attach_handle); 02818 result = __LINE__; 02819 break; 02820 } 02821 } 02822 02823 amqpvalue_destroy(item_value); 02824 } 02825 /* properties */ 02826 item_value = amqpvalue_get_list_item(list_value, 13); 02827 if (item_value == NULL) 02828 { 02829 /* do nothing */ 02830 } 02831 else 02832 { 02833 fields properties; 02834 if (amqpvalue_get_fields(item_value, &properties) != 0) 02835 { 02836 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 02837 { 02838 attach_destroy(*attach_handle); 02839 result = __LINE__; 02840 break; 02841 } 02842 } 02843 02844 amqpvalue_destroy(item_value); 02845 } 02846 02847 attach_instance->composite_value = amqpvalue_clone(value); 02848 02849 result = 0; 02850 } while (0); 02851 } 02852 } 02853 02854 return result; 02855 } 02856 02857 int attach_get_name(ATTACH_HANDLE attach, const char** name_value) 02858 { 02859 int result; 02860 02861 if (attach == NULL) 02862 { 02863 result = __LINE__; 02864 } 02865 else 02866 { 02867 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 02868 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 0); 02869 if (item_value == NULL) 02870 { 02871 result = __LINE__; 02872 } 02873 else 02874 { 02875 if (amqpvalue_get_string(item_value, name_value) != 0) 02876 { 02877 result = __LINE__; 02878 } 02879 else 02880 { 02881 result = 0; 02882 } 02883 } 02884 } 02885 02886 return result; 02887 } 02888 02889 int attach_set_name(ATTACH_HANDLE attach, const char* name_value) 02890 { 02891 int result; 02892 02893 if (attach == NULL) 02894 { 02895 result = __LINE__; 02896 } 02897 else 02898 { 02899 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 02900 AMQP_VALUE name_amqp_value = amqpvalue_create_string(name_value); 02901 if (name_amqp_value == NULL) 02902 { 02903 result = __LINE__; 02904 } 02905 else 02906 { 02907 if (amqpvalue_set_composite_item(attach_instance->composite_value, 0, name_amqp_value) != 0) 02908 { 02909 result = __LINE__; 02910 } 02911 else 02912 { 02913 result = 0; 02914 } 02915 02916 amqpvalue_destroy(name_amqp_value); 02917 } 02918 } 02919 02920 return result; 02921 } 02922 02923 int attach_get_handle(ATTACH_HANDLE attach, handle* handle_value) 02924 { 02925 int result; 02926 02927 if (attach == NULL) 02928 { 02929 result = __LINE__; 02930 } 02931 else 02932 { 02933 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 02934 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 1); 02935 if (item_value == NULL) 02936 { 02937 result = __LINE__; 02938 } 02939 else 02940 { 02941 if (amqpvalue_get_handle(item_value, handle_value) != 0) 02942 { 02943 result = __LINE__; 02944 } 02945 else 02946 { 02947 result = 0; 02948 } 02949 } 02950 } 02951 02952 return result; 02953 } 02954 02955 int attach_set_handle(ATTACH_HANDLE attach, handle handle_value) 02956 { 02957 int result; 02958 02959 if (attach == NULL) 02960 { 02961 result = __LINE__; 02962 } 02963 else 02964 { 02965 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 02966 AMQP_VALUE handle_amqp_value = amqpvalue_create_handle(handle_value); 02967 if (handle_amqp_value == NULL) 02968 { 02969 result = __LINE__; 02970 } 02971 else 02972 { 02973 if (amqpvalue_set_composite_item(attach_instance->composite_value, 1, handle_amqp_value) != 0) 02974 { 02975 result = __LINE__; 02976 } 02977 else 02978 { 02979 result = 0; 02980 } 02981 02982 amqpvalue_destroy(handle_amqp_value); 02983 } 02984 } 02985 02986 return result; 02987 } 02988 02989 int attach_get_role(ATTACH_HANDLE attach, role* role_value) 02990 { 02991 int result; 02992 02993 if (attach == NULL) 02994 { 02995 result = __LINE__; 02996 } 02997 else 02998 { 02999 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03000 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 2); 03001 if (item_value == NULL) 03002 { 03003 result = __LINE__; 03004 } 03005 else 03006 { 03007 if (amqpvalue_get_role(item_value, role_value) != 0) 03008 { 03009 result = __LINE__; 03010 } 03011 else 03012 { 03013 result = 0; 03014 } 03015 } 03016 } 03017 03018 return result; 03019 } 03020 03021 int attach_set_role(ATTACH_HANDLE attach, role role_value) 03022 { 03023 int result; 03024 03025 if (attach == NULL) 03026 { 03027 result = __LINE__; 03028 } 03029 else 03030 { 03031 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03032 AMQP_VALUE role_amqp_value = amqpvalue_create_role(role_value); 03033 if (role_amqp_value == NULL) 03034 { 03035 result = __LINE__; 03036 } 03037 else 03038 { 03039 if (amqpvalue_set_composite_item(attach_instance->composite_value, 2, role_amqp_value) != 0) 03040 { 03041 result = __LINE__; 03042 } 03043 else 03044 { 03045 result = 0; 03046 } 03047 03048 amqpvalue_destroy(role_amqp_value); 03049 } 03050 } 03051 03052 return result; 03053 } 03054 03055 int attach_get_snd_settle_mode(ATTACH_HANDLE attach, sender_settle_mode* snd_settle_mode_value) 03056 { 03057 int result; 03058 03059 if (attach == NULL) 03060 { 03061 result = __LINE__; 03062 } 03063 else 03064 { 03065 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03066 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 3); 03067 if (item_value == NULL) 03068 { 03069 result = __LINE__; 03070 } 03071 else 03072 { 03073 if (amqpvalue_get_sender_settle_mode(item_value, snd_settle_mode_value) != 0) 03074 { 03075 result = __LINE__; 03076 } 03077 else 03078 { 03079 result = 0; 03080 } 03081 } 03082 } 03083 03084 return result; 03085 } 03086 03087 int attach_set_snd_settle_mode(ATTACH_HANDLE attach, sender_settle_mode snd_settle_mode_value) 03088 { 03089 int result; 03090 03091 if (attach == NULL) 03092 { 03093 result = __LINE__; 03094 } 03095 else 03096 { 03097 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03098 AMQP_VALUE snd_settle_mode_amqp_value = amqpvalue_create_sender_settle_mode(snd_settle_mode_value); 03099 if (snd_settle_mode_amqp_value == NULL) 03100 { 03101 result = __LINE__; 03102 } 03103 else 03104 { 03105 if (amqpvalue_set_composite_item(attach_instance->composite_value, 3, snd_settle_mode_amqp_value) != 0) 03106 { 03107 result = __LINE__; 03108 } 03109 else 03110 { 03111 result = 0; 03112 } 03113 03114 amqpvalue_destroy(snd_settle_mode_amqp_value); 03115 } 03116 } 03117 03118 return result; 03119 } 03120 03121 int attach_get_rcv_settle_mode(ATTACH_HANDLE attach, receiver_settle_mode* rcv_settle_mode_value) 03122 { 03123 int result; 03124 03125 if (attach == NULL) 03126 { 03127 result = __LINE__; 03128 } 03129 else 03130 { 03131 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03132 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 4); 03133 if (item_value == NULL) 03134 { 03135 result = __LINE__; 03136 } 03137 else 03138 { 03139 if (amqpvalue_get_receiver_settle_mode(item_value, rcv_settle_mode_value) != 0) 03140 { 03141 result = __LINE__; 03142 } 03143 else 03144 { 03145 result = 0; 03146 } 03147 } 03148 } 03149 03150 return result; 03151 } 03152 03153 int attach_set_rcv_settle_mode(ATTACH_HANDLE attach, receiver_settle_mode rcv_settle_mode_value) 03154 { 03155 int result; 03156 03157 if (attach == NULL) 03158 { 03159 result = __LINE__; 03160 } 03161 else 03162 { 03163 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03164 AMQP_VALUE rcv_settle_mode_amqp_value = amqpvalue_create_receiver_settle_mode(rcv_settle_mode_value); 03165 if (rcv_settle_mode_amqp_value == NULL) 03166 { 03167 result = __LINE__; 03168 } 03169 else 03170 { 03171 if (amqpvalue_set_composite_item(attach_instance->composite_value, 4, rcv_settle_mode_amqp_value) != 0) 03172 { 03173 result = __LINE__; 03174 } 03175 else 03176 { 03177 result = 0; 03178 } 03179 03180 amqpvalue_destroy(rcv_settle_mode_amqp_value); 03181 } 03182 } 03183 03184 return result; 03185 } 03186 03187 int attach_get_source(ATTACH_HANDLE attach, AMQP_VALUE* source_value) 03188 { 03189 int result; 03190 03191 if (attach == NULL) 03192 { 03193 result = __LINE__; 03194 } 03195 else 03196 { 03197 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03198 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 5); 03199 if (item_value == NULL) 03200 { 03201 result = __LINE__; 03202 } 03203 else 03204 { 03205 *source_value = item_value; 03206 result = 0; 03207 } 03208 } 03209 03210 return result; 03211 } 03212 03213 int attach_set_source(ATTACH_HANDLE attach, AMQP_VALUE source_value) 03214 { 03215 int result; 03216 03217 if (attach == NULL) 03218 { 03219 result = __LINE__; 03220 } 03221 else 03222 { 03223 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03224 AMQP_VALUE source_amqp_value = amqpvalue_clone(source_value); 03225 if (source_amqp_value == NULL) 03226 { 03227 result = __LINE__; 03228 } 03229 else 03230 { 03231 if (amqpvalue_set_composite_item(attach_instance->composite_value, 5, source_amqp_value) != 0) 03232 { 03233 result = __LINE__; 03234 } 03235 else 03236 { 03237 result = 0; 03238 } 03239 03240 amqpvalue_destroy(source_amqp_value); 03241 } 03242 } 03243 03244 return result; 03245 } 03246 03247 int attach_get_target(ATTACH_HANDLE attach, AMQP_VALUE* target_value) 03248 { 03249 int result; 03250 03251 if (attach == NULL) 03252 { 03253 result = __LINE__; 03254 } 03255 else 03256 { 03257 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03258 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 6); 03259 if (item_value == NULL) 03260 { 03261 result = __LINE__; 03262 } 03263 else 03264 { 03265 *target_value = item_value; 03266 result = 0; 03267 } 03268 } 03269 03270 return result; 03271 } 03272 03273 int attach_set_target(ATTACH_HANDLE attach, AMQP_VALUE target_value) 03274 { 03275 int result; 03276 03277 if (attach == NULL) 03278 { 03279 result = __LINE__; 03280 } 03281 else 03282 { 03283 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03284 AMQP_VALUE target_amqp_value = amqpvalue_clone(target_value); 03285 if (target_amqp_value == NULL) 03286 { 03287 result = __LINE__; 03288 } 03289 else 03290 { 03291 if (amqpvalue_set_composite_item(attach_instance->composite_value, 6, target_amqp_value) != 0) 03292 { 03293 result = __LINE__; 03294 } 03295 else 03296 { 03297 result = 0; 03298 } 03299 03300 amqpvalue_destroy(target_amqp_value); 03301 } 03302 } 03303 03304 return result; 03305 } 03306 03307 int attach_get_unsettled(ATTACH_HANDLE attach, AMQP_VALUE* unsettled_value) 03308 { 03309 int result; 03310 03311 if (attach == NULL) 03312 { 03313 result = __LINE__; 03314 } 03315 else 03316 { 03317 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03318 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 7); 03319 if (item_value == NULL) 03320 { 03321 result = __LINE__; 03322 } 03323 else 03324 { 03325 if (amqpvalue_get_map(item_value, unsettled_value) != 0) 03326 { 03327 result = __LINE__; 03328 } 03329 else 03330 { 03331 result = 0; 03332 } 03333 } 03334 } 03335 03336 return result; 03337 } 03338 03339 int attach_set_unsettled(ATTACH_HANDLE attach, AMQP_VALUE unsettled_value) 03340 { 03341 int result; 03342 03343 if (attach == NULL) 03344 { 03345 result = __LINE__; 03346 } 03347 else 03348 { 03349 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03350 AMQP_VALUE unsettled_amqp_value = amqpvalue_clone(unsettled_value); 03351 if (unsettled_amqp_value == NULL) 03352 { 03353 result = __LINE__; 03354 } 03355 else 03356 { 03357 if (amqpvalue_set_composite_item(attach_instance->composite_value, 7, unsettled_amqp_value) != 0) 03358 { 03359 result = __LINE__; 03360 } 03361 else 03362 { 03363 result = 0; 03364 } 03365 03366 amqpvalue_destroy(unsettled_amqp_value); 03367 } 03368 } 03369 03370 return result; 03371 } 03372 03373 int attach_get_incomplete_unsettled(ATTACH_HANDLE attach, bool* incomplete_unsettled_value) 03374 { 03375 int result; 03376 03377 if (attach == NULL) 03378 { 03379 result = __LINE__; 03380 } 03381 else 03382 { 03383 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03384 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 8); 03385 if (item_value == NULL) 03386 { 03387 result = __LINE__; 03388 } 03389 else 03390 { 03391 if (amqpvalue_get_boolean(item_value, incomplete_unsettled_value) != 0) 03392 { 03393 result = __LINE__; 03394 } 03395 else 03396 { 03397 result = 0; 03398 } 03399 } 03400 } 03401 03402 return result; 03403 } 03404 03405 int attach_set_incomplete_unsettled(ATTACH_HANDLE attach, bool incomplete_unsettled_value) 03406 { 03407 int result; 03408 03409 if (attach == NULL) 03410 { 03411 result = __LINE__; 03412 } 03413 else 03414 { 03415 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03416 AMQP_VALUE incomplete_unsettled_amqp_value = amqpvalue_create_boolean(incomplete_unsettled_value); 03417 if (incomplete_unsettled_amqp_value == NULL) 03418 { 03419 result = __LINE__; 03420 } 03421 else 03422 { 03423 if (amqpvalue_set_composite_item(attach_instance->composite_value, 8, incomplete_unsettled_amqp_value) != 0) 03424 { 03425 result = __LINE__; 03426 } 03427 else 03428 { 03429 result = 0; 03430 } 03431 03432 amqpvalue_destroy(incomplete_unsettled_amqp_value); 03433 } 03434 } 03435 03436 return result; 03437 } 03438 03439 int attach_get_initial_delivery_count(ATTACH_HANDLE attach, sequence_no* initial_delivery_count_value) 03440 { 03441 int result; 03442 03443 if (attach == NULL) 03444 { 03445 result = __LINE__; 03446 } 03447 else 03448 { 03449 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03450 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 9); 03451 if (item_value == NULL) 03452 { 03453 result = __LINE__; 03454 } 03455 else 03456 { 03457 if (amqpvalue_get_sequence_no(item_value, initial_delivery_count_value) != 0) 03458 { 03459 result = __LINE__; 03460 } 03461 else 03462 { 03463 result = 0; 03464 } 03465 } 03466 } 03467 03468 return result; 03469 } 03470 03471 int attach_set_initial_delivery_count(ATTACH_HANDLE attach, sequence_no initial_delivery_count_value) 03472 { 03473 int result; 03474 03475 if (attach == NULL) 03476 { 03477 result = __LINE__; 03478 } 03479 else 03480 { 03481 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03482 AMQP_VALUE initial_delivery_count_amqp_value = amqpvalue_create_sequence_no(initial_delivery_count_value); 03483 if (initial_delivery_count_amqp_value == NULL) 03484 { 03485 result = __LINE__; 03486 } 03487 else 03488 { 03489 if (amqpvalue_set_composite_item(attach_instance->composite_value, 9, initial_delivery_count_amqp_value) != 0) 03490 { 03491 result = __LINE__; 03492 } 03493 else 03494 { 03495 result = 0; 03496 } 03497 03498 amqpvalue_destroy(initial_delivery_count_amqp_value); 03499 } 03500 } 03501 03502 return result; 03503 } 03504 03505 int attach_get_max_message_size(ATTACH_HANDLE attach, uint64_t* max_message_size_value) 03506 { 03507 int result; 03508 03509 if (attach == NULL) 03510 { 03511 result = __LINE__; 03512 } 03513 else 03514 { 03515 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03516 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 10); 03517 if (item_value == NULL) 03518 { 03519 result = __LINE__; 03520 } 03521 else 03522 { 03523 if (amqpvalue_get_ulong(item_value, max_message_size_value) != 0) 03524 { 03525 result = __LINE__; 03526 } 03527 else 03528 { 03529 result = 0; 03530 } 03531 } 03532 } 03533 03534 return result; 03535 } 03536 03537 int attach_set_max_message_size(ATTACH_HANDLE attach, uint64_t max_message_size_value) 03538 { 03539 int result; 03540 03541 if (attach == NULL) 03542 { 03543 result = __LINE__; 03544 } 03545 else 03546 { 03547 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03548 AMQP_VALUE max_message_size_amqp_value = amqpvalue_create_ulong(max_message_size_value); 03549 if (max_message_size_amqp_value == NULL) 03550 { 03551 result = __LINE__; 03552 } 03553 else 03554 { 03555 if (amqpvalue_set_composite_item(attach_instance->composite_value, 10, max_message_size_amqp_value) != 0) 03556 { 03557 result = __LINE__; 03558 } 03559 else 03560 { 03561 result = 0; 03562 } 03563 03564 amqpvalue_destroy(max_message_size_amqp_value); 03565 } 03566 } 03567 03568 return result; 03569 } 03570 03571 int attach_get_offered_capabilities(ATTACH_HANDLE attach, AMQP_VALUE* offered_capabilities_value) 03572 { 03573 int result; 03574 03575 if (attach == NULL) 03576 { 03577 result = __LINE__; 03578 } 03579 else 03580 { 03581 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03582 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 11); 03583 if (item_value == NULL) 03584 { 03585 result = __LINE__; 03586 } 03587 else 03588 { 03589 if (amqpvalue_get_array(item_value, offered_capabilities_value) != 0) 03590 { 03591 result = __LINE__; 03592 } 03593 else 03594 { 03595 result = 0; 03596 } 03597 } 03598 } 03599 03600 return result; 03601 } 03602 03603 int attach_set_offered_capabilities(ATTACH_HANDLE attach, AMQP_VALUE offered_capabilities_value) 03604 { 03605 int result; 03606 03607 if (attach == NULL) 03608 { 03609 result = __LINE__; 03610 } 03611 else 03612 { 03613 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03614 AMQP_VALUE offered_capabilities_amqp_value = amqpvalue_clone(offered_capabilities_value); 03615 if (offered_capabilities_amqp_value == NULL) 03616 { 03617 result = __LINE__; 03618 } 03619 else 03620 { 03621 if (amqpvalue_set_composite_item(attach_instance->composite_value, 11, offered_capabilities_amqp_value) != 0) 03622 { 03623 result = __LINE__; 03624 } 03625 else 03626 { 03627 result = 0; 03628 } 03629 03630 amqpvalue_destroy(offered_capabilities_amqp_value); 03631 } 03632 } 03633 03634 return result; 03635 } 03636 03637 int attach_get_desired_capabilities(ATTACH_HANDLE attach, AMQP_VALUE* desired_capabilities_value) 03638 { 03639 int result; 03640 03641 if (attach == NULL) 03642 { 03643 result = __LINE__; 03644 } 03645 else 03646 { 03647 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03648 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 12); 03649 if (item_value == NULL) 03650 { 03651 result = __LINE__; 03652 } 03653 else 03654 { 03655 if (amqpvalue_get_array(item_value, desired_capabilities_value) != 0) 03656 { 03657 result = __LINE__; 03658 } 03659 else 03660 { 03661 result = 0; 03662 } 03663 } 03664 } 03665 03666 return result; 03667 } 03668 03669 int attach_set_desired_capabilities(ATTACH_HANDLE attach, AMQP_VALUE desired_capabilities_value) 03670 { 03671 int result; 03672 03673 if (attach == NULL) 03674 { 03675 result = __LINE__; 03676 } 03677 else 03678 { 03679 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03680 AMQP_VALUE desired_capabilities_amqp_value = amqpvalue_clone(desired_capabilities_value); 03681 if (desired_capabilities_amqp_value == NULL) 03682 { 03683 result = __LINE__; 03684 } 03685 else 03686 { 03687 if (amqpvalue_set_composite_item(attach_instance->composite_value, 12, desired_capabilities_amqp_value) != 0) 03688 { 03689 result = __LINE__; 03690 } 03691 else 03692 { 03693 result = 0; 03694 } 03695 03696 amqpvalue_destroy(desired_capabilities_amqp_value); 03697 } 03698 } 03699 03700 return result; 03701 } 03702 03703 int attach_get_properties(ATTACH_HANDLE attach, fields* properties_value) 03704 { 03705 int result; 03706 03707 if (attach == NULL) 03708 { 03709 result = __LINE__; 03710 } 03711 else 03712 { 03713 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03714 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(attach_instance->composite_value, 13); 03715 if (item_value == NULL) 03716 { 03717 result = __LINE__; 03718 } 03719 else 03720 { 03721 if (amqpvalue_get_fields(item_value, properties_value) != 0) 03722 { 03723 result = __LINE__; 03724 } 03725 else 03726 { 03727 result = 0; 03728 } 03729 } 03730 } 03731 03732 return result; 03733 } 03734 03735 int attach_set_properties(ATTACH_HANDLE attach, fields properties_value) 03736 { 03737 int result; 03738 03739 if (attach == NULL) 03740 { 03741 result = __LINE__; 03742 } 03743 else 03744 { 03745 ATTACH_INSTANCE* attach_instance = (ATTACH_INSTANCE*)attach; 03746 AMQP_VALUE properties_amqp_value = amqpvalue_create_fields(properties_value); 03747 if (properties_amqp_value == NULL) 03748 { 03749 result = __LINE__; 03750 } 03751 else 03752 { 03753 if (amqpvalue_set_composite_item(attach_instance->composite_value, 13, properties_amqp_value) != 0) 03754 { 03755 result = __LINE__; 03756 } 03757 else 03758 { 03759 result = 0; 03760 } 03761 03762 amqpvalue_destroy(properties_amqp_value); 03763 } 03764 } 03765 03766 return result; 03767 } 03768 03769 03770 /* flow */ 03771 03772 typedef struct FLOW_INSTANCE_TAG 03773 { 03774 AMQP_VALUE composite_value; 03775 } FLOW_INSTANCE; 03776 03777 static FLOW_HANDLE flow_create_internal(void) 03778 { 03779 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)amqpalloc_malloc(sizeof(FLOW_INSTANCE)); 03780 if (flow_instance != NULL) 03781 { 03782 flow_instance->composite_value = NULL; 03783 } 03784 03785 return flow_instance; 03786 } 03787 03788 FLOW_HANDLE flow_create(uint32_t incoming_window_value, transfer_number next_outgoing_id_value, uint32_t outgoing_window_value) 03789 { 03790 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)amqpalloc_malloc(sizeof(FLOW_INSTANCE)); 03791 if (flow_instance != NULL) 03792 { 03793 flow_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(19); 03794 if (flow_instance->composite_value == NULL) 03795 { 03796 amqpalloc_free(flow_instance); 03797 flow_instance = NULL; 03798 } 03799 else 03800 { 03801 AMQP_VALUE incoming_window_amqp_value; 03802 AMQP_VALUE next_outgoing_id_amqp_value; 03803 AMQP_VALUE outgoing_window_amqp_value; 03804 int result = 0; 03805 03806 incoming_window_amqp_value = amqpvalue_create_uint(incoming_window_value); 03807 if ((result == 0) && (amqpvalue_set_composite_item(flow_instance->composite_value, 1, incoming_window_amqp_value) != 0)) 03808 { 03809 result = __LINE__; 03810 } 03811 next_outgoing_id_amqp_value = amqpvalue_create_transfer_number(next_outgoing_id_value); 03812 if ((result == 0) && (amqpvalue_set_composite_item(flow_instance->composite_value, 2, next_outgoing_id_amqp_value) != 0)) 03813 { 03814 result = __LINE__; 03815 } 03816 outgoing_window_amqp_value = amqpvalue_create_uint(outgoing_window_value); 03817 if ((result == 0) && (amqpvalue_set_composite_item(flow_instance->composite_value, 3, outgoing_window_amqp_value) != 0)) 03818 { 03819 result = __LINE__; 03820 } 03821 03822 amqpvalue_destroy(incoming_window_amqp_value); 03823 amqpvalue_destroy(next_outgoing_id_amqp_value); 03824 amqpvalue_destroy(outgoing_window_amqp_value); 03825 } 03826 } 03827 03828 return flow_instance; 03829 } 03830 03831 FLOW_HANDLE flow_clone(FLOW_HANDLE value) 03832 { 03833 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)amqpalloc_malloc(sizeof(FLOW_INSTANCE)); 03834 if (flow_instance != NULL) 03835 { 03836 flow_instance->composite_value = amqpvalue_clone(((FLOW_INSTANCE*)value)->composite_value); 03837 if (flow_instance->composite_value == NULL) 03838 { 03839 amqpalloc_free(flow_instance); 03840 flow_instance = NULL; 03841 } 03842 } 03843 03844 return flow_instance; 03845 } 03846 03847 void flow_destroy(FLOW_HANDLE flow) 03848 { 03849 if (flow != NULL) 03850 { 03851 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 03852 amqpvalue_destroy(flow_instance->composite_value); 03853 amqpalloc_free(flow_instance); 03854 } 03855 } 03856 03857 AMQP_VALUE amqpvalue_create_flow(FLOW_HANDLE flow) 03858 { 03859 AMQP_VALUE result; 03860 03861 if (flow == NULL) 03862 { 03863 result = NULL; 03864 } 03865 else 03866 { 03867 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 03868 result = amqpvalue_clone(flow_instance->composite_value); 03869 } 03870 03871 return result; 03872 } 03873 03874 bool is_flow_type_by_descriptor(AMQP_VALUE descriptor) 03875 { 03876 bool result; 03877 03878 uint64_t descriptor_ulong; 03879 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 03880 (descriptor_ulong == 19)) 03881 { 03882 result = true; 03883 } 03884 else 03885 { 03886 result = false; 03887 } 03888 03889 return result; 03890 } 03891 03892 03893 int amqpvalue_get_flow(AMQP_VALUE value, FLOW_HANDLE* flow_handle) 03894 { 03895 int result; 03896 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow_create_internal(); 03897 *flow_handle = flow_instance; 03898 if (*flow_handle == NULL) 03899 { 03900 result = __LINE__; 03901 } 03902 else 03903 { 03904 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 03905 if (list_value == NULL) 03906 { 03907 flow_destroy(*flow_handle); 03908 result = __LINE__; 03909 } 03910 else 03911 { 03912 do 03913 { 03914 AMQP_VALUE item_value; 03915 /* next-incoming-id */ 03916 item_value = amqpvalue_get_list_item(list_value, 0); 03917 if (item_value == NULL) 03918 { 03919 /* do nothing */ 03920 } 03921 else 03922 { 03923 transfer_number next_incoming_id; 03924 if (amqpvalue_get_transfer_number(item_value, &next_incoming_id) != 0) 03925 { 03926 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 03927 { 03928 flow_destroy(*flow_handle); 03929 result = __LINE__; 03930 break; 03931 } 03932 } 03933 03934 amqpvalue_destroy(item_value); 03935 } 03936 /* incoming-window */ 03937 item_value = amqpvalue_get_list_item(list_value, 1); 03938 if (item_value == NULL) 03939 { 03940 { 03941 flow_destroy(*flow_handle); 03942 result = __LINE__; 03943 break; 03944 } 03945 } 03946 else 03947 { 03948 uint32_t incoming_window; 03949 if (amqpvalue_get_uint(item_value, &incoming_window) != 0) 03950 { 03951 flow_destroy(*flow_handle); 03952 result = __LINE__; 03953 break; 03954 } 03955 03956 amqpvalue_destroy(item_value); 03957 } 03958 /* next-outgoing-id */ 03959 item_value = amqpvalue_get_list_item(list_value, 2); 03960 if (item_value == NULL) 03961 { 03962 { 03963 flow_destroy(*flow_handle); 03964 result = __LINE__; 03965 break; 03966 } 03967 } 03968 else 03969 { 03970 transfer_number next_outgoing_id; 03971 if (amqpvalue_get_transfer_number(item_value, &next_outgoing_id) != 0) 03972 { 03973 flow_destroy(*flow_handle); 03974 result = __LINE__; 03975 break; 03976 } 03977 03978 amqpvalue_destroy(item_value); 03979 } 03980 /* outgoing-window */ 03981 item_value = amqpvalue_get_list_item(list_value, 3); 03982 if (item_value == NULL) 03983 { 03984 { 03985 flow_destroy(*flow_handle); 03986 result = __LINE__; 03987 break; 03988 } 03989 } 03990 else 03991 { 03992 uint32_t outgoing_window; 03993 if (amqpvalue_get_uint(item_value, &outgoing_window) != 0) 03994 { 03995 flow_destroy(*flow_handle); 03996 result = __LINE__; 03997 break; 03998 } 03999 04000 amqpvalue_destroy(item_value); 04001 } 04002 /* handle */ 04003 item_value = amqpvalue_get_list_item(list_value, 4); 04004 if (item_value == NULL) 04005 { 04006 /* do nothing */ 04007 } 04008 else 04009 { 04010 handle handle; 04011 if (amqpvalue_get_handle(item_value, &handle) != 0) 04012 { 04013 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 04014 { 04015 flow_destroy(*flow_handle); 04016 result = __LINE__; 04017 break; 04018 } 04019 } 04020 04021 amqpvalue_destroy(item_value); 04022 } 04023 /* delivery-count */ 04024 item_value = amqpvalue_get_list_item(list_value, 5); 04025 if (item_value == NULL) 04026 { 04027 /* do nothing */ 04028 } 04029 else 04030 { 04031 sequence_no delivery_count; 04032 if (amqpvalue_get_sequence_no(item_value, &delivery_count) != 0) 04033 { 04034 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 04035 { 04036 flow_destroy(*flow_handle); 04037 result = __LINE__; 04038 break; 04039 } 04040 } 04041 04042 amqpvalue_destroy(item_value); 04043 } 04044 /* link-credit */ 04045 item_value = amqpvalue_get_list_item(list_value, 6); 04046 if (item_value == NULL) 04047 { 04048 /* do nothing */ 04049 } 04050 else 04051 { 04052 uint32_t link_credit; 04053 if (amqpvalue_get_uint(item_value, &link_credit) != 0) 04054 { 04055 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 04056 { 04057 flow_destroy(*flow_handle); 04058 result = __LINE__; 04059 break; 04060 } 04061 } 04062 04063 amqpvalue_destroy(item_value); 04064 } 04065 /* available */ 04066 item_value = amqpvalue_get_list_item(list_value, 7); 04067 if (item_value == NULL) 04068 { 04069 /* do nothing */ 04070 } 04071 else 04072 { 04073 uint32_t available; 04074 if (amqpvalue_get_uint(item_value, &available) != 0) 04075 { 04076 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 04077 { 04078 flow_destroy(*flow_handle); 04079 result = __LINE__; 04080 break; 04081 } 04082 } 04083 04084 amqpvalue_destroy(item_value); 04085 } 04086 /* drain */ 04087 item_value = amqpvalue_get_list_item(list_value, 8); 04088 if (item_value == NULL) 04089 { 04090 /* do nothing */ 04091 } 04092 else 04093 { 04094 bool drain; 04095 if (amqpvalue_get_boolean(item_value, &drain) != 0) 04096 { 04097 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 04098 { 04099 flow_destroy(*flow_handle); 04100 result = __LINE__; 04101 break; 04102 } 04103 } 04104 04105 amqpvalue_destroy(item_value); 04106 } 04107 /* echo */ 04108 item_value = amqpvalue_get_list_item(list_value, 9); 04109 if (item_value == NULL) 04110 { 04111 /* do nothing */ 04112 } 04113 else 04114 { 04115 bool echo; 04116 if (amqpvalue_get_boolean(item_value, &echo) != 0) 04117 { 04118 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 04119 { 04120 flow_destroy(*flow_handle); 04121 result = __LINE__; 04122 break; 04123 } 04124 } 04125 04126 amqpvalue_destroy(item_value); 04127 } 04128 /* properties */ 04129 item_value = amqpvalue_get_list_item(list_value, 10); 04130 if (item_value == NULL) 04131 { 04132 /* do nothing */ 04133 } 04134 else 04135 { 04136 fields properties; 04137 if (amqpvalue_get_fields(item_value, &properties) != 0) 04138 { 04139 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 04140 { 04141 flow_destroy(*flow_handle); 04142 result = __LINE__; 04143 break; 04144 } 04145 } 04146 04147 amqpvalue_destroy(item_value); 04148 } 04149 04150 flow_instance->composite_value = amqpvalue_clone(value); 04151 04152 result = 0; 04153 } while (0); 04154 } 04155 } 04156 04157 return result; 04158 } 04159 04160 int flow_get_next_incoming_id(FLOW_HANDLE flow, transfer_number* next_incoming_id_value) 04161 { 04162 int result; 04163 04164 if (flow == NULL) 04165 { 04166 result = __LINE__; 04167 } 04168 else 04169 { 04170 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04171 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 0); 04172 if (item_value == NULL) 04173 { 04174 result = __LINE__; 04175 } 04176 else 04177 { 04178 if (amqpvalue_get_transfer_number(item_value, next_incoming_id_value) != 0) 04179 { 04180 result = __LINE__; 04181 } 04182 else 04183 { 04184 result = 0; 04185 } 04186 } 04187 } 04188 04189 return result; 04190 } 04191 04192 int flow_set_next_incoming_id(FLOW_HANDLE flow, transfer_number next_incoming_id_value) 04193 { 04194 int result; 04195 04196 if (flow == NULL) 04197 { 04198 result = __LINE__; 04199 } 04200 else 04201 { 04202 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04203 AMQP_VALUE next_incoming_id_amqp_value = amqpvalue_create_transfer_number(next_incoming_id_value); 04204 if (next_incoming_id_amqp_value == NULL) 04205 { 04206 result = __LINE__; 04207 } 04208 else 04209 { 04210 if (amqpvalue_set_composite_item(flow_instance->composite_value, 0, next_incoming_id_amqp_value) != 0) 04211 { 04212 result = __LINE__; 04213 } 04214 else 04215 { 04216 result = 0; 04217 } 04218 04219 amqpvalue_destroy(next_incoming_id_amqp_value); 04220 } 04221 } 04222 04223 return result; 04224 } 04225 04226 int flow_get_incoming_window(FLOW_HANDLE flow, uint32_t* incoming_window_value) 04227 { 04228 int result; 04229 04230 if (flow == NULL) 04231 { 04232 result = __LINE__; 04233 } 04234 else 04235 { 04236 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04237 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 1); 04238 if (item_value == NULL) 04239 { 04240 result = __LINE__; 04241 } 04242 else 04243 { 04244 if (amqpvalue_get_uint(item_value, incoming_window_value) != 0) 04245 { 04246 result = __LINE__; 04247 } 04248 else 04249 { 04250 result = 0; 04251 } 04252 } 04253 } 04254 04255 return result; 04256 } 04257 04258 int flow_set_incoming_window(FLOW_HANDLE flow, uint32_t incoming_window_value) 04259 { 04260 int result; 04261 04262 if (flow == NULL) 04263 { 04264 result = __LINE__; 04265 } 04266 else 04267 { 04268 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04269 AMQP_VALUE incoming_window_amqp_value = amqpvalue_create_uint(incoming_window_value); 04270 if (incoming_window_amqp_value == NULL) 04271 { 04272 result = __LINE__; 04273 } 04274 else 04275 { 04276 if (amqpvalue_set_composite_item(flow_instance->composite_value, 1, incoming_window_amqp_value) != 0) 04277 { 04278 result = __LINE__; 04279 } 04280 else 04281 { 04282 result = 0; 04283 } 04284 04285 amqpvalue_destroy(incoming_window_amqp_value); 04286 } 04287 } 04288 04289 return result; 04290 } 04291 04292 int flow_get_next_outgoing_id(FLOW_HANDLE flow, transfer_number* next_outgoing_id_value) 04293 { 04294 int result; 04295 04296 if (flow == NULL) 04297 { 04298 result = __LINE__; 04299 } 04300 else 04301 { 04302 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04303 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 2); 04304 if (item_value == NULL) 04305 { 04306 result = __LINE__; 04307 } 04308 else 04309 { 04310 if (amqpvalue_get_transfer_number(item_value, next_outgoing_id_value) != 0) 04311 { 04312 result = __LINE__; 04313 } 04314 else 04315 { 04316 result = 0; 04317 } 04318 } 04319 } 04320 04321 return result; 04322 } 04323 04324 int flow_set_next_outgoing_id(FLOW_HANDLE flow, transfer_number next_outgoing_id_value) 04325 { 04326 int result; 04327 04328 if (flow == NULL) 04329 { 04330 result = __LINE__; 04331 } 04332 else 04333 { 04334 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04335 AMQP_VALUE next_outgoing_id_amqp_value = amqpvalue_create_transfer_number(next_outgoing_id_value); 04336 if (next_outgoing_id_amqp_value == NULL) 04337 { 04338 result = __LINE__; 04339 } 04340 else 04341 { 04342 if (amqpvalue_set_composite_item(flow_instance->composite_value, 2, next_outgoing_id_amqp_value) != 0) 04343 { 04344 result = __LINE__; 04345 } 04346 else 04347 { 04348 result = 0; 04349 } 04350 04351 amqpvalue_destroy(next_outgoing_id_amqp_value); 04352 } 04353 } 04354 04355 return result; 04356 } 04357 04358 int flow_get_outgoing_window(FLOW_HANDLE flow, uint32_t* outgoing_window_value) 04359 { 04360 int result; 04361 04362 if (flow == NULL) 04363 { 04364 result = __LINE__; 04365 } 04366 else 04367 { 04368 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04369 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 3); 04370 if (item_value == NULL) 04371 { 04372 result = __LINE__; 04373 } 04374 else 04375 { 04376 if (amqpvalue_get_uint(item_value, outgoing_window_value) != 0) 04377 { 04378 result = __LINE__; 04379 } 04380 else 04381 { 04382 result = 0; 04383 } 04384 } 04385 } 04386 04387 return result; 04388 } 04389 04390 int flow_set_outgoing_window(FLOW_HANDLE flow, uint32_t outgoing_window_value) 04391 { 04392 int result; 04393 04394 if (flow == NULL) 04395 { 04396 result = __LINE__; 04397 } 04398 else 04399 { 04400 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04401 AMQP_VALUE outgoing_window_amqp_value = amqpvalue_create_uint(outgoing_window_value); 04402 if (outgoing_window_amqp_value == NULL) 04403 { 04404 result = __LINE__; 04405 } 04406 else 04407 { 04408 if (amqpvalue_set_composite_item(flow_instance->composite_value, 3, outgoing_window_amqp_value) != 0) 04409 { 04410 result = __LINE__; 04411 } 04412 else 04413 { 04414 result = 0; 04415 } 04416 04417 amqpvalue_destroy(outgoing_window_amqp_value); 04418 } 04419 } 04420 04421 return result; 04422 } 04423 04424 int flow_get_handle(FLOW_HANDLE flow, handle* handle_value) 04425 { 04426 int result; 04427 04428 if (flow == NULL) 04429 { 04430 result = __LINE__; 04431 } 04432 else 04433 { 04434 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04435 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 4); 04436 if (item_value == NULL) 04437 { 04438 result = __LINE__; 04439 } 04440 else 04441 { 04442 if (amqpvalue_get_handle(item_value, handle_value) != 0) 04443 { 04444 result = __LINE__; 04445 } 04446 else 04447 { 04448 result = 0; 04449 } 04450 } 04451 } 04452 04453 return result; 04454 } 04455 04456 int flow_set_handle(FLOW_HANDLE flow, handle handle_value) 04457 { 04458 int result; 04459 04460 if (flow == NULL) 04461 { 04462 result = __LINE__; 04463 } 04464 else 04465 { 04466 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04467 AMQP_VALUE handle_amqp_value = amqpvalue_create_handle(handle_value); 04468 if (handle_amqp_value == NULL) 04469 { 04470 result = __LINE__; 04471 } 04472 else 04473 { 04474 if (amqpvalue_set_composite_item(flow_instance->composite_value, 4, handle_amqp_value) != 0) 04475 { 04476 result = __LINE__; 04477 } 04478 else 04479 { 04480 result = 0; 04481 } 04482 04483 amqpvalue_destroy(handle_amqp_value); 04484 } 04485 } 04486 04487 return result; 04488 } 04489 04490 int flow_get_delivery_count(FLOW_HANDLE flow, sequence_no* delivery_count_value) 04491 { 04492 int result; 04493 04494 if (flow == NULL) 04495 { 04496 result = __LINE__; 04497 } 04498 else 04499 { 04500 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04501 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 5); 04502 if (item_value == NULL) 04503 { 04504 result = __LINE__; 04505 } 04506 else 04507 { 04508 if (amqpvalue_get_sequence_no(item_value, delivery_count_value) != 0) 04509 { 04510 result = __LINE__; 04511 } 04512 else 04513 { 04514 result = 0; 04515 } 04516 } 04517 } 04518 04519 return result; 04520 } 04521 04522 int flow_set_delivery_count(FLOW_HANDLE flow, sequence_no delivery_count_value) 04523 { 04524 int result; 04525 04526 if (flow == NULL) 04527 { 04528 result = __LINE__; 04529 } 04530 else 04531 { 04532 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04533 AMQP_VALUE delivery_count_amqp_value = amqpvalue_create_sequence_no(delivery_count_value); 04534 if (delivery_count_amqp_value == NULL) 04535 { 04536 result = __LINE__; 04537 } 04538 else 04539 { 04540 if (amqpvalue_set_composite_item(flow_instance->composite_value, 5, delivery_count_amqp_value) != 0) 04541 { 04542 result = __LINE__; 04543 } 04544 else 04545 { 04546 result = 0; 04547 } 04548 04549 amqpvalue_destroy(delivery_count_amqp_value); 04550 } 04551 } 04552 04553 return result; 04554 } 04555 04556 int flow_get_link_credit(FLOW_HANDLE flow, uint32_t* link_credit_value) 04557 { 04558 int result; 04559 04560 if (flow == NULL) 04561 { 04562 result = __LINE__; 04563 } 04564 else 04565 { 04566 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04567 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 6); 04568 if (item_value == NULL) 04569 { 04570 result = __LINE__; 04571 } 04572 else 04573 { 04574 if (amqpvalue_get_uint(item_value, link_credit_value) != 0) 04575 { 04576 result = __LINE__; 04577 } 04578 else 04579 { 04580 result = 0; 04581 } 04582 } 04583 } 04584 04585 return result; 04586 } 04587 04588 int flow_set_link_credit(FLOW_HANDLE flow, uint32_t link_credit_value) 04589 { 04590 int result; 04591 04592 if (flow == NULL) 04593 { 04594 result = __LINE__; 04595 } 04596 else 04597 { 04598 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04599 AMQP_VALUE link_credit_amqp_value = amqpvalue_create_uint(link_credit_value); 04600 if (link_credit_amqp_value == NULL) 04601 { 04602 result = __LINE__; 04603 } 04604 else 04605 { 04606 if (amqpvalue_set_composite_item(flow_instance->composite_value, 6, link_credit_amqp_value) != 0) 04607 { 04608 result = __LINE__; 04609 } 04610 else 04611 { 04612 result = 0; 04613 } 04614 04615 amqpvalue_destroy(link_credit_amqp_value); 04616 } 04617 } 04618 04619 return result; 04620 } 04621 04622 int flow_get_available(FLOW_HANDLE flow, uint32_t* available_value) 04623 { 04624 int result; 04625 04626 if (flow == NULL) 04627 { 04628 result = __LINE__; 04629 } 04630 else 04631 { 04632 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04633 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 7); 04634 if (item_value == NULL) 04635 { 04636 result = __LINE__; 04637 } 04638 else 04639 { 04640 if (amqpvalue_get_uint(item_value, available_value) != 0) 04641 { 04642 result = __LINE__; 04643 } 04644 else 04645 { 04646 result = 0; 04647 } 04648 } 04649 } 04650 04651 return result; 04652 } 04653 04654 int flow_set_available(FLOW_HANDLE flow, uint32_t available_value) 04655 { 04656 int result; 04657 04658 if (flow == NULL) 04659 { 04660 result = __LINE__; 04661 } 04662 else 04663 { 04664 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04665 AMQP_VALUE available_amqp_value = amqpvalue_create_uint(available_value); 04666 if (available_amqp_value == NULL) 04667 { 04668 result = __LINE__; 04669 } 04670 else 04671 { 04672 if (amqpvalue_set_composite_item(flow_instance->composite_value, 7, available_amqp_value) != 0) 04673 { 04674 result = __LINE__; 04675 } 04676 else 04677 { 04678 result = 0; 04679 } 04680 04681 amqpvalue_destroy(available_amqp_value); 04682 } 04683 } 04684 04685 return result; 04686 } 04687 04688 int flow_get_drain(FLOW_HANDLE flow, bool* drain_value) 04689 { 04690 int result; 04691 04692 if (flow == NULL) 04693 { 04694 result = __LINE__; 04695 } 04696 else 04697 { 04698 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04699 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 8); 04700 if (item_value == NULL) 04701 { 04702 result = __LINE__; 04703 } 04704 else 04705 { 04706 if (amqpvalue_get_boolean(item_value, drain_value) != 0) 04707 { 04708 result = __LINE__; 04709 } 04710 else 04711 { 04712 result = 0; 04713 } 04714 } 04715 } 04716 04717 return result; 04718 } 04719 04720 int flow_set_drain(FLOW_HANDLE flow, bool drain_value) 04721 { 04722 int result; 04723 04724 if (flow == NULL) 04725 { 04726 result = __LINE__; 04727 } 04728 else 04729 { 04730 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04731 AMQP_VALUE drain_amqp_value = amqpvalue_create_boolean(drain_value); 04732 if (drain_amqp_value == NULL) 04733 { 04734 result = __LINE__; 04735 } 04736 else 04737 { 04738 if (amqpvalue_set_composite_item(flow_instance->composite_value, 8, drain_amqp_value) != 0) 04739 { 04740 result = __LINE__; 04741 } 04742 else 04743 { 04744 result = 0; 04745 } 04746 04747 amqpvalue_destroy(drain_amqp_value); 04748 } 04749 } 04750 04751 return result; 04752 } 04753 04754 int flow_get_echo(FLOW_HANDLE flow, bool* echo_value) 04755 { 04756 int result; 04757 04758 if (flow == NULL) 04759 { 04760 result = __LINE__; 04761 } 04762 else 04763 { 04764 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04765 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 9); 04766 if (item_value == NULL) 04767 { 04768 result = __LINE__; 04769 } 04770 else 04771 { 04772 if (amqpvalue_get_boolean(item_value, echo_value) != 0) 04773 { 04774 result = __LINE__; 04775 } 04776 else 04777 { 04778 result = 0; 04779 } 04780 } 04781 } 04782 04783 return result; 04784 } 04785 04786 int flow_set_echo(FLOW_HANDLE flow, bool echo_value) 04787 { 04788 int result; 04789 04790 if (flow == NULL) 04791 { 04792 result = __LINE__; 04793 } 04794 else 04795 { 04796 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04797 AMQP_VALUE echo_amqp_value = amqpvalue_create_boolean(echo_value); 04798 if (echo_amqp_value == NULL) 04799 { 04800 result = __LINE__; 04801 } 04802 else 04803 { 04804 if (amqpvalue_set_composite_item(flow_instance->composite_value, 9, echo_amqp_value) != 0) 04805 { 04806 result = __LINE__; 04807 } 04808 else 04809 { 04810 result = 0; 04811 } 04812 04813 amqpvalue_destroy(echo_amqp_value); 04814 } 04815 } 04816 04817 return result; 04818 } 04819 04820 int flow_get_properties(FLOW_HANDLE flow, fields* properties_value) 04821 { 04822 int result; 04823 04824 if (flow == NULL) 04825 { 04826 result = __LINE__; 04827 } 04828 else 04829 { 04830 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04831 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(flow_instance->composite_value, 10); 04832 if (item_value == NULL) 04833 { 04834 result = __LINE__; 04835 } 04836 else 04837 { 04838 if (amqpvalue_get_fields(item_value, properties_value) != 0) 04839 { 04840 result = __LINE__; 04841 } 04842 else 04843 { 04844 result = 0; 04845 } 04846 } 04847 } 04848 04849 return result; 04850 } 04851 04852 int flow_set_properties(FLOW_HANDLE flow, fields properties_value) 04853 { 04854 int result; 04855 04856 if (flow == NULL) 04857 { 04858 result = __LINE__; 04859 } 04860 else 04861 { 04862 FLOW_INSTANCE* flow_instance = (FLOW_INSTANCE*)flow; 04863 AMQP_VALUE properties_amqp_value = amqpvalue_create_fields(properties_value); 04864 if (properties_amqp_value == NULL) 04865 { 04866 result = __LINE__; 04867 } 04868 else 04869 { 04870 if (amqpvalue_set_composite_item(flow_instance->composite_value, 10, properties_amqp_value) != 0) 04871 { 04872 result = __LINE__; 04873 } 04874 else 04875 { 04876 result = 0; 04877 } 04878 04879 amqpvalue_destroy(properties_amqp_value); 04880 } 04881 } 04882 04883 return result; 04884 } 04885 04886 04887 /* transfer */ 04888 04889 typedef struct TRANSFER_INSTANCE_TAG 04890 { 04891 AMQP_VALUE composite_value; 04892 } TRANSFER_INSTANCE; 04893 04894 static TRANSFER_HANDLE transfer_create_internal(void) 04895 { 04896 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)amqpalloc_malloc(sizeof(TRANSFER_INSTANCE)); 04897 if (transfer_instance != NULL) 04898 { 04899 transfer_instance->composite_value = NULL; 04900 } 04901 04902 return transfer_instance; 04903 } 04904 04905 TRANSFER_HANDLE transfer_create(handle handle_value) 04906 { 04907 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)amqpalloc_malloc(sizeof(TRANSFER_INSTANCE)); 04908 if (transfer_instance != NULL) 04909 { 04910 transfer_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(20); 04911 if (transfer_instance->composite_value == NULL) 04912 { 04913 amqpalloc_free(transfer_instance); 04914 transfer_instance = NULL; 04915 } 04916 else 04917 { 04918 AMQP_VALUE handle_amqp_value; 04919 int result = 0; 04920 04921 handle_amqp_value = amqpvalue_create_handle(handle_value); 04922 if ((result == 0) && (amqpvalue_set_composite_item(transfer_instance->composite_value, 0, handle_amqp_value) != 0)) 04923 { 04924 result = __LINE__; 04925 } 04926 04927 amqpvalue_destroy(handle_amqp_value); 04928 } 04929 } 04930 04931 return transfer_instance; 04932 } 04933 04934 TRANSFER_HANDLE transfer_clone(TRANSFER_HANDLE value) 04935 { 04936 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)amqpalloc_malloc(sizeof(TRANSFER_INSTANCE)); 04937 if (transfer_instance != NULL) 04938 { 04939 transfer_instance->composite_value = amqpvalue_clone(((TRANSFER_INSTANCE*)value)->composite_value); 04940 if (transfer_instance->composite_value == NULL) 04941 { 04942 amqpalloc_free(transfer_instance); 04943 transfer_instance = NULL; 04944 } 04945 } 04946 04947 return transfer_instance; 04948 } 04949 04950 void transfer_destroy(TRANSFER_HANDLE transfer) 04951 { 04952 if (transfer != NULL) 04953 { 04954 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 04955 amqpvalue_destroy(transfer_instance->composite_value); 04956 amqpalloc_free(transfer_instance); 04957 } 04958 } 04959 04960 AMQP_VALUE amqpvalue_create_transfer(TRANSFER_HANDLE transfer) 04961 { 04962 AMQP_VALUE result; 04963 04964 if (transfer == NULL) 04965 { 04966 result = NULL; 04967 } 04968 else 04969 { 04970 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 04971 result = amqpvalue_clone(transfer_instance->composite_value); 04972 } 04973 04974 return result; 04975 } 04976 04977 bool is_transfer_type_by_descriptor(AMQP_VALUE descriptor) 04978 { 04979 bool result; 04980 04981 uint64_t descriptor_ulong; 04982 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 04983 (descriptor_ulong == 20)) 04984 { 04985 result = true; 04986 } 04987 else 04988 { 04989 result = false; 04990 } 04991 04992 return result; 04993 } 04994 04995 04996 int amqpvalue_get_transfer(AMQP_VALUE value, TRANSFER_HANDLE* transfer_handle) 04997 { 04998 int result; 04999 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer_create_internal(); 05000 *transfer_handle = transfer_instance; 05001 if (*transfer_handle == NULL) 05002 { 05003 result = __LINE__; 05004 } 05005 else 05006 { 05007 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 05008 if (list_value == NULL) 05009 { 05010 transfer_destroy(*transfer_handle); 05011 result = __LINE__; 05012 } 05013 else 05014 { 05015 do 05016 { 05017 AMQP_VALUE item_value; 05018 /* handle */ 05019 item_value = amqpvalue_get_list_item(list_value, 0); 05020 if (item_value == NULL) 05021 { 05022 { 05023 transfer_destroy(*transfer_handle); 05024 result = __LINE__; 05025 break; 05026 } 05027 } 05028 else 05029 { 05030 handle handle; 05031 if (amqpvalue_get_handle(item_value, &handle) != 0) 05032 { 05033 transfer_destroy(*transfer_handle); 05034 result = __LINE__; 05035 break; 05036 } 05037 05038 amqpvalue_destroy(item_value); 05039 } 05040 /* delivery-id */ 05041 item_value = amqpvalue_get_list_item(list_value, 1); 05042 if (item_value == NULL) 05043 { 05044 /* do nothing */ 05045 } 05046 else 05047 { 05048 delivery_number delivery_id; 05049 if (amqpvalue_get_delivery_number(item_value, &delivery_id) != 0) 05050 { 05051 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 05052 { 05053 transfer_destroy(*transfer_handle); 05054 result = __LINE__; 05055 break; 05056 } 05057 } 05058 05059 amqpvalue_destroy(item_value); 05060 } 05061 /* delivery-tag */ 05062 item_value = amqpvalue_get_list_item(list_value, 2); 05063 if (item_value == NULL) 05064 { 05065 /* do nothing */ 05066 } 05067 else 05068 { 05069 delivery_tag delivery_tag; 05070 if (amqpvalue_get_delivery_tag(item_value, &delivery_tag) != 0) 05071 { 05072 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 05073 { 05074 transfer_destroy(*transfer_handle); 05075 result = __LINE__; 05076 break; 05077 } 05078 } 05079 05080 amqpvalue_destroy(item_value); 05081 } 05082 /* message-format */ 05083 item_value = amqpvalue_get_list_item(list_value, 3); 05084 if (item_value == NULL) 05085 { 05086 /* do nothing */ 05087 } 05088 else 05089 { 05090 message_format message_format; 05091 if (amqpvalue_get_message_format(item_value, &message_format) != 0) 05092 { 05093 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 05094 { 05095 transfer_destroy(*transfer_handle); 05096 result = __LINE__; 05097 break; 05098 } 05099 } 05100 05101 amqpvalue_destroy(item_value); 05102 } 05103 /* settled */ 05104 item_value = amqpvalue_get_list_item(list_value, 4); 05105 if (item_value == NULL) 05106 { 05107 /* do nothing */ 05108 } 05109 else 05110 { 05111 bool settled; 05112 if (amqpvalue_get_boolean(item_value, &settled) != 0) 05113 { 05114 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 05115 { 05116 transfer_destroy(*transfer_handle); 05117 result = __LINE__; 05118 break; 05119 } 05120 } 05121 05122 amqpvalue_destroy(item_value); 05123 } 05124 /* more */ 05125 item_value = amqpvalue_get_list_item(list_value, 5); 05126 if (item_value == NULL) 05127 { 05128 /* do nothing */ 05129 } 05130 else 05131 { 05132 bool more; 05133 if (amqpvalue_get_boolean(item_value, &more) != 0) 05134 { 05135 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 05136 { 05137 transfer_destroy(*transfer_handle); 05138 result = __LINE__; 05139 break; 05140 } 05141 } 05142 05143 amqpvalue_destroy(item_value); 05144 } 05145 /* rcv-settle-mode */ 05146 item_value = amqpvalue_get_list_item(list_value, 6); 05147 if (item_value == NULL) 05148 { 05149 /* do nothing */ 05150 } 05151 else 05152 { 05153 receiver_settle_mode rcv_settle_mode; 05154 if (amqpvalue_get_receiver_settle_mode(item_value, &rcv_settle_mode) != 0) 05155 { 05156 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 05157 { 05158 transfer_destroy(*transfer_handle); 05159 result = __LINE__; 05160 break; 05161 } 05162 } 05163 05164 amqpvalue_destroy(item_value); 05165 } 05166 /* state */ 05167 item_value = amqpvalue_get_list_item(list_value, 7); 05168 if (item_value == NULL) 05169 { 05170 /* do nothing */ 05171 } 05172 else 05173 { 05174 amqpvalue_destroy(item_value); 05175 } 05176 /* resume */ 05177 item_value = amqpvalue_get_list_item(list_value, 8); 05178 if (item_value == NULL) 05179 { 05180 /* do nothing */ 05181 } 05182 else 05183 { 05184 bool resume; 05185 if (amqpvalue_get_boolean(item_value, &resume) != 0) 05186 { 05187 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 05188 { 05189 transfer_destroy(*transfer_handle); 05190 result = __LINE__; 05191 break; 05192 } 05193 } 05194 05195 amqpvalue_destroy(item_value); 05196 } 05197 /* aborted */ 05198 item_value = amqpvalue_get_list_item(list_value, 9); 05199 if (item_value == NULL) 05200 { 05201 /* do nothing */ 05202 } 05203 else 05204 { 05205 bool aborted; 05206 if (amqpvalue_get_boolean(item_value, &aborted) != 0) 05207 { 05208 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 05209 { 05210 transfer_destroy(*transfer_handle); 05211 result = __LINE__; 05212 break; 05213 } 05214 } 05215 05216 amqpvalue_destroy(item_value); 05217 } 05218 /* batchable */ 05219 item_value = amqpvalue_get_list_item(list_value, 10); 05220 if (item_value == NULL) 05221 { 05222 /* do nothing */ 05223 } 05224 else 05225 { 05226 bool batchable; 05227 if (amqpvalue_get_boolean(item_value, &batchable) != 0) 05228 { 05229 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 05230 { 05231 transfer_destroy(*transfer_handle); 05232 result = __LINE__; 05233 break; 05234 } 05235 } 05236 05237 amqpvalue_destroy(item_value); 05238 } 05239 05240 transfer_instance->composite_value = amqpvalue_clone(value); 05241 05242 result = 0; 05243 } while (0); 05244 } 05245 } 05246 05247 return result; 05248 } 05249 05250 int transfer_get_handle(TRANSFER_HANDLE transfer, handle* handle_value) 05251 { 05252 int result; 05253 05254 if (transfer == NULL) 05255 { 05256 result = __LINE__; 05257 } 05258 else 05259 { 05260 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05261 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 0); 05262 if (item_value == NULL) 05263 { 05264 result = __LINE__; 05265 } 05266 else 05267 { 05268 if (amqpvalue_get_handle(item_value, handle_value) != 0) 05269 { 05270 result = __LINE__; 05271 } 05272 else 05273 { 05274 result = 0; 05275 } 05276 } 05277 } 05278 05279 return result; 05280 } 05281 05282 int transfer_set_handle(TRANSFER_HANDLE transfer, handle handle_value) 05283 { 05284 int result; 05285 05286 if (transfer == NULL) 05287 { 05288 result = __LINE__; 05289 } 05290 else 05291 { 05292 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05293 AMQP_VALUE handle_amqp_value = amqpvalue_create_handle(handle_value); 05294 if (handle_amqp_value == NULL) 05295 { 05296 result = __LINE__; 05297 } 05298 else 05299 { 05300 if (amqpvalue_set_composite_item(transfer_instance->composite_value, 0, handle_amqp_value) != 0) 05301 { 05302 result = __LINE__; 05303 } 05304 else 05305 { 05306 result = 0; 05307 } 05308 05309 amqpvalue_destroy(handle_amqp_value); 05310 } 05311 } 05312 05313 return result; 05314 } 05315 05316 int transfer_get_delivery_id(TRANSFER_HANDLE transfer, delivery_number* delivery_id_value) 05317 { 05318 int result; 05319 05320 if (transfer == NULL) 05321 { 05322 result = __LINE__; 05323 } 05324 else 05325 { 05326 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05327 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 1); 05328 if (item_value == NULL) 05329 { 05330 result = __LINE__; 05331 } 05332 else 05333 { 05334 if (amqpvalue_get_delivery_number(item_value, delivery_id_value) != 0) 05335 { 05336 result = __LINE__; 05337 } 05338 else 05339 { 05340 result = 0; 05341 } 05342 } 05343 } 05344 05345 return result; 05346 } 05347 05348 int transfer_set_delivery_id(TRANSFER_HANDLE transfer, delivery_number delivery_id_value) 05349 { 05350 int result; 05351 05352 if (transfer == NULL) 05353 { 05354 result = __LINE__; 05355 } 05356 else 05357 { 05358 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05359 AMQP_VALUE delivery_id_amqp_value = amqpvalue_create_delivery_number(delivery_id_value); 05360 if (delivery_id_amqp_value == NULL) 05361 { 05362 result = __LINE__; 05363 } 05364 else 05365 { 05366 if (amqpvalue_set_composite_item(transfer_instance->composite_value, 1, delivery_id_amqp_value) != 0) 05367 { 05368 result = __LINE__; 05369 } 05370 else 05371 { 05372 result = 0; 05373 } 05374 05375 amqpvalue_destroy(delivery_id_amqp_value); 05376 } 05377 } 05378 05379 return result; 05380 } 05381 05382 int transfer_get_delivery_tag(TRANSFER_HANDLE transfer, delivery_tag* delivery_tag_value) 05383 { 05384 int result; 05385 05386 if (transfer == NULL) 05387 { 05388 result = __LINE__; 05389 } 05390 else 05391 { 05392 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05393 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 2); 05394 if (item_value == NULL) 05395 { 05396 result = __LINE__; 05397 } 05398 else 05399 { 05400 if (amqpvalue_get_delivery_tag(item_value, delivery_tag_value) != 0) 05401 { 05402 result = __LINE__; 05403 } 05404 else 05405 { 05406 result = 0; 05407 } 05408 } 05409 } 05410 05411 return result; 05412 } 05413 05414 int transfer_set_delivery_tag(TRANSFER_HANDLE transfer, delivery_tag delivery_tag_value) 05415 { 05416 int result; 05417 05418 if (transfer == NULL) 05419 { 05420 result = __LINE__; 05421 } 05422 else 05423 { 05424 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05425 AMQP_VALUE delivery_tag_amqp_value = amqpvalue_create_delivery_tag(delivery_tag_value); 05426 if (delivery_tag_amqp_value == NULL) 05427 { 05428 result = __LINE__; 05429 } 05430 else 05431 { 05432 if (amqpvalue_set_composite_item(transfer_instance->composite_value, 2, delivery_tag_amqp_value) != 0) 05433 { 05434 result = __LINE__; 05435 } 05436 else 05437 { 05438 result = 0; 05439 } 05440 05441 amqpvalue_destroy(delivery_tag_amqp_value); 05442 } 05443 } 05444 05445 return result; 05446 } 05447 05448 int transfer_get_message_format(TRANSFER_HANDLE transfer, message_format* message_format_value) 05449 { 05450 int result; 05451 05452 if (transfer == NULL) 05453 { 05454 result = __LINE__; 05455 } 05456 else 05457 { 05458 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05459 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 3); 05460 if (item_value == NULL) 05461 { 05462 result = __LINE__; 05463 } 05464 else 05465 { 05466 if (amqpvalue_get_message_format(item_value, message_format_value) != 0) 05467 { 05468 result = __LINE__; 05469 } 05470 else 05471 { 05472 result = 0; 05473 } 05474 } 05475 } 05476 05477 return result; 05478 } 05479 05480 int transfer_set_message_format(TRANSFER_HANDLE transfer, message_format message_format_value) 05481 { 05482 int result; 05483 05484 if (transfer == NULL) 05485 { 05486 result = __LINE__; 05487 } 05488 else 05489 { 05490 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05491 AMQP_VALUE message_format_amqp_value = amqpvalue_create_message_format(message_format_value); 05492 if (message_format_amqp_value == NULL) 05493 { 05494 result = __LINE__; 05495 } 05496 else 05497 { 05498 if (amqpvalue_set_composite_item(transfer_instance->composite_value, 3, message_format_amqp_value) != 0) 05499 { 05500 result = __LINE__; 05501 } 05502 else 05503 { 05504 result = 0; 05505 } 05506 05507 amqpvalue_destroy(message_format_amqp_value); 05508 } 05509 } 05510 05511 return result; 05512 } 05513 05514 int transfer_get_settled(TRANSFER_HANDLE transfer, bool* settled_value) 05515 { 05516 int result; 05517 05518 if (transfer == NULL) 05519 { 05520 result = __LINE__; 05521 } 05522 else 05523 { 05524 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05525 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 4); 05526 if (item_value == NULL) 05527 { 05528 result = __LINE__; 05529 } 05530 else 05531 { 05532 if (amqpvalue_get_boolean(item_value, settled_value) != 0) 05533 { 05534 result = __LINE__; 05535 } 05536 else 05537 { 05538 result = 0; 05539 } 05540 } 05541 } 05542 05543 return result; 05544 } 05545 05546 int transfer_set_settled(TRANSFER_HANDLE transfer, bool settled_value) 05547 { 05548 int result; 05549 05550 if (transfer == NULL) 05551 { 05552 result = __LINE__; 05553 } 05554 else 05555 { 05556 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05557 AMQP_VALUE settled_amqp_value = amqpvalue_create_boolean(settled_value); 05558 if (settled_amqp_value == NULL) 05559 { 05560 result = __LINE__; 05561 } 05562 else 05563 { 05564 if (amqpvalue_set_composite_item(transfer_instance->composite_value, 4, settled_amqp_value) != 0) 05565 { 05566 result = __LINE__; 05567 } 05568 else 05569 { 05570 result = 0; 05571 } 05572 05573 amqpvalue_destroy(settled_amqp_value); 05574 } 05575 } 05576 05577 return result; 05578 } 05579 05580 int transfer_get_more(TRANSFER_HANDLE transfer, bool* more_value) 05581 { 05582 int result; 05583 05584 if (transfer == NULL) 05585 { 05586 result = __LINE__; 05587 } 05588 else 05589 { 05590 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05591 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 5); 05592 if (item_value == NULL) 05593 { 05594 result = __LINE__; 05595 } 05596 else 05597 { 05598 if (amqpvalue_get_boolean(item_value, more_value) != 0) 05599 { 05600 result = __LINE__; 05601 } 05602 else 05603 { 05604 result = 0; 05605 } 05606 } 05607 } 05608 05609 return result; 05610 } 05611 05612 int transfer_set_more(TRANSFER_HANDLE transfer, bool more_value) 05613 { 05614 int result; 05615 05616 if (transfer == NULL) 05617 { 05618 result = __LINE__; 05619 } 05620 else 05621 { 05622 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05623 AMQP_VALUE more_amqp_value = amqpvalue_create_boolean(more_value); 05624 if (more_amqp_value == NULL) 05625 { 05626 result = __LINE__; 05627 } 05628 else 05629 { 05630 if (amqpvalue_set_composite_item(transfer_instance->composite_value, 5, more_amqp_value) != 0) 05631 { 05632 result = __LINE__; 05633 } 05634 else 05635 { 05636 result = 0; 05637 } 05638 05639 amqpvalue_destroy(more_amqp_value); 05640 } 05641 } 05642 05643 return result; 05644 } 05645 05646 int transfer_get_rcv_settle_mode(TRANSFER_HANDLE transfer, receiver_settle_mode* rcv_settle_mode_value) 05647 { 05648 int result; 05649 05650 if (transfer == NULL) 05651 { 05652 result = __LINE__; 05653 } 05654 else 05655 { 05656 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05657 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 6); 05658 if (item_value == NULL) 05659 { 05660 result = __LINE__; 05661 } 05662 else 05663 { 05664 if (amqpvalue_get_receiver_settle_mode(item_value, rcv_settle_mode_value) != 0) 05665 { 05666 result = __LINE__; 05667 } 05668 else 05669 { 05670 result = 0; 05671 } 05672 } 05673 } 05674 05675 return result; 05676 } 05677 05678 int transfer_set_rcv_settle_mode(TRANSFER_HANDLE transfer, receiver_settle_mode rcv_settle_mode_value) 05679 { 05680 int result; 05681 05682 if (transfer == NULL) 05683 { 05684 result = __LINE__; 05685 } 05686 else 05687 { 05688 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05689 AMQP_VALUE rcv_settle_mode_amqp_value = amqpvalue_create_receiver_settle_mode(rcv_settle_mode_value); 05690 if (rcv_settle_mode_amqp_value == NULL) 05691 { 05692 result = __LINE__; 05693 } 05694 else 05695 { 05696 if (amqpvalue_set_composite_item(transfer_instance->composite_value, 6, rcv_settle_mode_amqp_value) != 0) 05697 { 05698 result = __LINE__; 05699 } 05700 else 05701 { 05702 result = 0; 05703 } 05704 05705 amqpvalue_destroy(rcv_settle_mode_amqp_value); 05706 } 05707 } 05708 05709 return result; 05710 } 05711 05712 int transfer_get_state(TRANSFER_HANDLE transfer, AMQP_VALUE* state_value) 05713 { 05714 int result; 05715 05716 if (transfer == NULL) 05717 { 05718 result = __LINE__; 05719 } 05720 else 05721 { 05722 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05723 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 7); 05724 if (item_value == NULL) 05725 { 05726 result = __LINE__; 05727 } 05728 else 05729 { 05730 *state_value = item_value; 05731 result = 0; 05732 } 05733 } 05734 05735 return result; 05736 } 05737 05738 int transfer_set_state(TRANSFER_HANDLE transfer, AMQP_VALUE state_value) 05739 { 05740 int result; 05741 05742 if (transfer == NULL) 05743 { 05744 result = __LINE__; 05745 } 05746 else 05747 { 05748 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05749 AMQP_VALUE state_amqp_value = amqpvalue_clone(state_value); 05750 if (state_amqp_value == NULL) 05751 { 05752 result = __LINE__; 05753 } 05754 else 05755 { 05756 if (amqpvalue_set_composite_item(transfer_instance->composite_value, 7, state_amqp_value) != 0) 05757 { 05758 result = __LINE__; 05759 } 05760 else 05761 { 05762 result = 0; 05763 } 05764 05765 amqpvalue_destroy(state_amqp_value); 05766 } 05767 } 05768 05769 return result; 05770 } 05771 05772 int transfer_get_resume(TRANSFER_HANDLE transfer, bool* resume_value) 05773 { 05774 int result; 05775 05776 if (transfer == NULL) 05777 { 05778 result = __LINE__; 05779 } 05780 else 05781 { 05782 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05783 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 8); 05784 if (item_value == NULL) 05785 { 05786 result = __LINE__; 05787 } 05788 else 05789 { 05790 if (amqpvalue_get_boolean(item_value, resume_value) != 0) 05791 { 05792 result = __LINE__; 05793 } 05794 else 05795 { 05796 result = 0; 05797 } 05798 } 05799 } 05800 05801 return result; 05802 } 05803 05804 int transfer_set_resume(TRANSFER_HANDLE transfer, bool resume_value) 05805 { 05806 int result; 05807 05808 if (transfer == NULL) 05809 { 05810 result = __LINE__; 05811 } 05812 else 05813 { 05814 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05815 AMQP_VALUE resume_amqp_value = amqpvalue_create_boolean(resume_value); 05816 if (resume_amqp_value == NULL) 05817 { 05818 result = __LINE__; 05819 } 05820 else 05821 { 05822 if (amqpvalue_set_composite_item(transfer_instance->composite_value, 8, resume_amqp_value) != 0) 05823 { 05824 result = __LINE__; 05825 } 05826 else 05827 { 05828 result = 0; 05829 } 05830 05831 amqpvalue_destroy(resume_amqp_value); 05832 } 05833 } 05834 05835 return result; 05836 } 05837 05838 int transfer_get_aborted(TRANSFER_HANDLE transfer, bool* aborted_value) 05839 { 05840 int result; 05841 05842 if (transfer == NULL) 05843 { 05844 result = __LINE__; 05845 } 05846 else 05847 { 05848 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05849 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 9); 05850 if (item_value == NULL) 05851 { 05852 result = __LINE__; 05853 } 05854 else 05855 { 05856 if (amqpvalue_get_boolean(item_value, aborted_value) != 0) 05857 { 05858 result = __LINE__; 05859 } 05860 else 05861 { 05862 result = 0; 05863 } 05864 } 05865 } 05866 05867 return result; 05868 } 05869 05870 int transfer_set_aborted(TRANSFER_HANDLE transfer, bool aborted_value) 05871 { 05872 int result; 05873 05874 if (transfer == NULL) 05875 { 05876 result = __LINE__; 05877 } 05878 else 05879 { 05880 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05881 AMQP_VALUE aborted_amqp_value = amqpvalue_create_boolean(aborted_value); 05882 if (aborted_amqp_value == NULL) 05883 { 05884 result = __LINE__; 05885 } 05886 else 05887 { 05888 if (amqpvalue_set_composite_item(transfer_instance->composite_value, 9, aborted_amqp_value) != 0) 05889 { 05890 result = __LINE__; 05891 } 05892 else 05893 { 05894 result = 0; 05895 } 05896 05897 amqpvalue_destroy(aborted_amqp_value); 05898 } 05899 } 05900 05901 return result; 05902 } 05903 05904 int transfer_get_batchable(TRANSFER_HANDLE transfer, bool* batchable_value) 05905 { 05906 int result; 05907 05908 if (transfer == NULL) 05909 { 05910 result = __LINE__; 05911 } 05912 else 05913 { 05914 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05915 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(transfer_instance->composite_value, 10); 05916 if (item_value == NULL) 05917 { 05918 result = __LINE__; 05919 } 05920 else 05921 { 05922 if (amqpvalue_get_boolean(item_value, batchable_value) != 0) 05923 { 05924 result = __LINE__; 05925 } 05926 else 05927 { 05928 result = 0; 05929 } 05930 } 05931 } 05932 05933 return result; 05934 } 05935 05936 int transfer_set_batchable(TRANSFER_HANDLE transfer, bool batchable_value) 05937 { 05938 int result; 05939 05940 if (transfer == NULL) 05941 { 05942 result = __LINE__; 05943 } 05944 else 05945 { 05946 TRANSFER_INSTANCE* transfer_instance = (TRANSFER_INSTANCE*)transfer; 05947 AMQP_VALUE batchable_amqp_value = amqpvalue_create_boolean(batchable_value); 05948 if (batchable_amqp_value == NULL) 05949 { 05950 result = __LINE__; 05951 } 05952 else 05953 { 05954 if (amqpvalue_set_composite_item(transfer_instance->composite_value, 10, batchable_amqp_value) != 0) 05955 { 05956 result = __LINE__; 05957 } 05958 else 05959 { 05960 result = 0; 05961 } 05962 05963 amqpvalue_destroy(batchable_amqp_value); 05964 } 05965 } 05966 05967 return result; 05968 } 05969 05970 05971 /* disposition */ 05972 05973 typedef struct DISPOSITION_INSTANCE_TAG 05974 { 05975 AMQP_VALUE composite_value; 05976 } DISPOSITION_INSTANCE; 05977 05978 static DISPOSITION_HANDLE disposition_create_internal(void) 05979 { 05980 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)amqpalloc_malloc(sizeof(DISPOSITION_INSTANCE)); 05981 if (disposition_instance != NULL) 05982 { 05983 disposition_instance->composite_value = NULL; 05984 } 05985 05986 return disposition_instance; 05987 } 05988 05989 DISPOSITION_HANDLE disposition_create(role role_value, delivery_number first_value) 05990 { 05991 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)amqpalloc_malloc(sizeof(DISPOSITION_INSTANCE)); 05992 if (disposition_instance != NULL) 05993 { 05994 disposition_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(21); 05995 if (disposition_instance->composite_value == NULL) 05996 { 05997 amqpalloc_free(disposition_instance); 05998 disposition_instance = NULL; 05999 } 06000 else 06001 { 06002 AMQP_VALUE role_amqp_value; 06003 AMQP_VALUE first_amqp_value; 06004 int result = 0; 06005 06006 role_amqp_value = amqpvalue_create_role(role_value); 06007 if ((result == 0) && (amqpvalue_set_composite_item(disposition_instance->composite_value, 0, role_amqp_value) != 0)) 06008 { 06009 result = __LINE__; 06010 } 06011 first_amqp_value = amqpvalue_create_delivery_number(first_value); 06012 if ((result == 0) && (amqpvalue_set_composite_item(disposition_instance->composite_value, 1, first_amqp_value) != 0)) 06013 { 06014 result = __LINE__; 06015 } 06016 06017 amqpvalue_destroy(role_amqp_value); 06018 amqpvalue_destroy(first_amqp_value); 06019 } 06020 } 06021 06022 return disposition_instance; 06023 } 06024 06025 DISPOSITION_HANDLE disposition_clone(DISPOSITION_HANDLE value) 06026 { 06027 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)amqpalloc_malloc(sizeof(DISPOSITION_INSTANCE)); 06028 if (disposition_instance != NULL) 06029 { 06030 disposition_instance->composite_value = amqpvalue_clone(((DISPOSITION_INSTANCE*)value)->composite_value); 06031 if (disposition_instance->composite_value == NULL) 06032 { 06033 amqpalloc_free(disposition_instance); 06034 disposition_instance = NULL; 06035 } 06036 } 06037 06038 return disposition_instance; 06039 } 06040 06041 void disposition_destroy(DISPOSITION_HANDLE disposition) 06042 { 06043 if (disposition != NULL) 06044 { 06045 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; 06046 amqpvalue_destroy(disposition_instance->composite_value); 06047 amqpalloc_free(disposition_instance); 06048 } 06049 } 06050 06051 AMQP_VALUE amqpvalue_create_disposition(DISPOSITION_HANDLE disposition) 06052 { 06053 AMQP_VALUE result; 06054 06055 if (disposition == NULL) 06056 { 06057 result = NULL; 06058 } 06059 else 06060 { 06061 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; 06062 result = amqpvalue_clone(disposition_instance->composite_value); 06063 } 06064 06065 return result; 06066 } 06067 06068 bool is_disposition_type_by_descriptor(AMQP_VALUE descriptor) 06069 { 06070 bool result; 06071 06072 uint64_t descriptor_ulong; 06073 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 06074 (descriptor_ulong == 21)) 06075 { 06076 result = true; 06077 } 06078 else 06079 { 06080 result = false; 06081 } 06082 06083 return result; 06084 } 06085 06086 06087 int amqpvalue_get_disposition(AMQP_VALUE value, DISPOSITION_HANDLE* disposition_handle) 06088 { 06089 int result; 06090 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition_create_internal(); 06091 *disposition_handle = disposition_instance; 06092 if (*disposition_handle == NULL) 06093 { 06094 result = __LINE__; 06095 } 06096 else 06097 { 06098 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 06099 if (list_value == NULL) 06100 { 06101 disposition_destroy(*disposition_handle); 06102 result = __LINE__; 06103 } 06104 else 06105 { 06106 do 06107 { 06108 AMQP_VALUE item_value; 06109 /* role */ 06110 item_value = amqpvalue_get_list_item(list_value, 0); 06111 if (item_value == NULL) 06112 { 06113 { 06114 disposition_destroy(*disposition_handle); 06115 result = __LINE__; 06116 break; 06117 } 06118 } 06119 else 06120 { 06121 role role; 06122 if (amqpvalue_get_role(item_value, &role) != 0) 06123 { 06124 disposition_destroy(*disposition_handle); 06125 result = __LINE__; 06126 break; 06127 } 06128 06129 amqpvalue_destroy(item_value); 06130 } 06131 /* first */ 06132 item_value = amqpvalue_get_list_item(list_value, 1); 06133 if (item_value == NULL) 06134 { 06135 { 06136 disposition_destroy(*disposition_handle); 06137 result = __LINE__; 06138 break; 06139 } 06140 } 06141 else 06142 { 06143 delivery_number first; 06144 if (amqpvalue_get_delivery_number(item_value, &first) != 0) 06145 { 06146 disposition_destroy(*disposition_handle); 06147 result = __LINE__; 06148 break; 06149 } 06150 06151 amqpvalue_destroy(item_value); 06152 } 06153 /* last */ 06154 item_value = amqpvalue_get_list_item(list_value, 2); 06155 if (item_value == NULL) 06156 { 06157 /* do nothing */ 06158 } 06159 else 06160 { 06161 delivery_number last; 06162 if (amqpvalue_get_delivery_number(item_value, &last) != 0) 06163 { 06164 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 06165 { 06166 disposition_destroy(*disposition_handle); 06167 result = __LINE__; 06168 break; 06169 } 06170 } 06171 06172 amqpvalue_destroy(item_value); 06173 } 06174 /* settled */ 06175 item_value = amqpvalue_get_list_item(list_value, 3); 06176 if (item_value == NULL) 06177 { 06178 /* do nothing */ 06179 } 06180 else 06181 { 06182 bool settled; 06183 if (amqpvalue_get_boolean(item_value, &settled) != 0) 06184 { 06185 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 06186 { 06187 disposition_destroy(*disposition_handle); 06188 result = __LINE__; 06189 break; 06190 } 06191 } 06192 06193 amqpvalue_destroy(item_value); 06194 } 06195 /* state */ 06196 item_value = amqpvalue_get_list_item(list_value, 4); 06197 if (item_value == NULL) 06198 { 06199 /* do nothing */ 06200 } 06201 else 06202 { 06203 amqpvalue_destroy(item_value); 06204 } 06205 /* batchable */ 06206 item_value = amqpvalue_get_list_item(list_value, 5); 06207 if (item_value == NULL) 06208 { 06209 /* do nothing */ 06210 } 06211 else 06212 { 06213 bool batchable; 06214 if (amqpvalue_get_boolean(item_value, &batchable) != 0) 06215 { 06216 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 06217 { 06218 disposition_destroy(*disposition_handle); 06219 result = __LINE__; 06220 break; 06221 } 06222 } 06223 06224 amqpvalue_destroy(item_value); 06225 } 06226 06227 disposition_instance->composite_value = amqpvalue_clone(value); 06228 06229 result = 0; 06230 } while (0); 06231 } 06232 } 06233 06234 return result; 06235 } 06236 06237 int disposition_get_role(DISPOSITION_HANDLE disposition, role* role_value) 06238 { 06239 int result; 06240 06241 if (disposition == NULL) 06242 { 06243 result = __LINE__; 06244 } 06245 else 06246 { 06247 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; 06248 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 0); 06249 if (item_value == NULL) 06250 { 06251 result = __LINE__; 06252 } 06253 else 06254 { 06255 if (amqpvalue_get_role(item_value, role_value) != 0) 06256 { 06257 result = __LINE__; 06258 } 06259 else 06260 { 06261 result = 0; 06262 } 06263 } 06264 } 06265 06266 return result; 06267 } 06268 06269 int disposition_set_role(DISPOSITION_HANDLE disposition, role role_value) 06270 { 06271 int result; 06272 06273 if (disposition == NULL) 06274 { 06275 result = __LINE__; 06276 } 06277 else 06278 { 06279 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; 06280 AMQP_VALUE role_amqp_value = amqpvalue_create_role(role_value); 06281 if (role_amqp_value == NULL) 06282 { 06283 result = __LINE__; 06284 } 06285 else 06286 { 06287 if (amqpvalue_set_composite_item(disposition_instance->composite_value, 0, role_amqp_value) != 0) 06288 { 06289 result = __LINE__; 06290 } 06291 else 06292 { 06293 result = 0; 06294 } 06295 06296 amqpvalue_destroy(role_amqp_value); 06297 } 06298 } 06299 06300 return result; 06301 } 06302 06303 int disposition_get_first(DISPOSITION_HANDLE disposition, delivery_number* first_value) 06304 { 06305 int result; 06306 06307 if (disposition == NULL) 06308 { 06309 result = __LINE__; 06310 } 06311 else 06312 { 06313 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; 06314 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 1); 06315 if (item_value == NULL) 06316 { 06317 result = __LINE__; 06318 } 06319 else 06320 { 06321 if (amqpvalue_get_delivery_number(item_value, first_value) != 0) 06322 { 06323 result = __LINE__; 06324 } 06325 else 06326 { 06327 result = 0; 06328 } 06329 } 06330 } 06331 06332 return result; 06333 } 06334 06335 int disposition_set_first(DISPOSITION_HANDLE disposition, delivery_number first_value) 06336 { 06337 int result; 06338 06339 if (disposition == NULL) 06340 { 06341 result = __LINE__; 06342 } 06343 else 06344 { 06345 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; 06346 AMQP_VALUE first_amqp_value = amqpvalue_create_delivery_number(first_value); 06347 if (first_amqp_value == NULL) 06348 { 06349 result = __LINE__; 06350 } 06351 else 06352 { 06353 if (amqpvalue_set_composite_item(disposition_instance->composite_value, 1, first_amqp_value) != 0) 06354 { 06355 result = __LINE__; 06356 } 06357 else 06358 { 06359 result = 0; 06360 } 06361 06362 amqpvalue_destroy(first_amqp_value); 06363 } 06364 } 06365 06366 return result; 06367 } 06368 06369 int disposition_get_last(DISPOSITION_HANDLE disposition, delivery_number* last_value) 06370 { 06371 int result; 06372 06373 if (disposition == NULL) 06374 { 06375 result = __LINE__; 06376 } 06377 else 06378 { 06379 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; 06380 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 2); 06381 if (item_value == NULL) 06382 { 06383 result = __LINE__; 06384 } 06385 else 06386 { 06387 if (amqpvalue_get_delivery_number(item_value, last_value) != 0) 06388 { 06389 result = __LINE__; 06390 } 06391 else 06392 { 06393 result = 0; 06394 } 06395 } 06396 } 06397 06398 return result; 06399 } 06400 06401 int disposition_set_last(DISPOSITION_HANDLE disposition, delivery_number last_value) 06402 { 06403 int result; 06404 06405 if (disposition == NULL) 06406 { 06407 result = __LINE__; 06408 } 06409 else 06410 { 06411 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; 06412 AMQP_VALUE last_amqp_value = amqpvalue_create_delivery_number(last_value); 06413 if (last_amqp_value == NULL) 06414 { 06415 result = __LINE__; 06416 } 06417 else 06418 { 06419 if (amqpvalue_set_composite_item(disposition_instance->composite_value, 2, last_amqp_value) != 0) 06420 { 06421 result = __LINE__; 06422 } 06423 else 06424 { 06425 result = 0; 06426 } 06427 06428 amqpvalue_destroy(last_amqp_value); 06429 } 06430 } 06431 06432 return result; 06433 } 06434 06435 int disposition_get_settled(DISPOSITION_HANDLE disposition, bool* settled_value) 06436 { 06437 int result; 06438 06439 if (disposition == NULL) 06440 { 06441 result = __LINE__; 06442 } 06443 else 06444 { 06445 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; 06446 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 3); 06447 if (item_value == NULL) 06448 { 06449 result = __LINE__; 06450 } 06451 else 06452 { 06453 if (amqpvalue_get_boolean(item_value, settled_value) != 0) 06454 { 06455 result = __LINE__; 06456 } 06457 else 06458 { 06459 result = 0; 06460 } 06461 } 06462 } 06463 06464 return result; 06465 } 06466 06467 int disposition_set_settled(DISPOSITION_HANDLE disposition, bool settled_value) 06468 { 06469 int result; 06470 06471 if (disposition == NULL) 06472 { 06473 result = __LINE__; 06474 } 06475 else 06476 { 06477 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; 06478 AMQP_VALUE settled_amqp_value = amqpvalue_create_boolean(settled_value); 06479 if (settled_amqp_value == NULL) 06480 { 06481 result = __LINE__; 06482 } 06483 else 06484 { 06485 if (amqpvalue_set_composite_item(disposition_instance->composite_value, 3, settled_amqp_value) != 0) 06486 { 06487 result = __LINE__; 06488 } 06489 else 06490 { 06491 result = 0; 06492 } 06493 06494 amqpvalue_destroy(settled_amqp_value); 06495 } 06496 } 06497 06498 return result; 06499 } 06500 06501 int disposition_get_state(DISPOSITION_HANDLE disposition, AMQP_VALUE* state_value) 06502 { 06503 int result; 06504 06505 if (disposition == NULL) 06506 { 06507 result = __LINE__; 06508 } 06509 else 06510 { 06511 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; 06512 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 4); 06513 if (item_value == NULL) 06514 { 06515 result = __LINE__; 06516 } 06517 else 06518 { 06519 *state_value = item_value; 06520 result = 0; 06521 } 06522 } 06523 06524 return result; 06525 } 06526 06527 int disposition_set_state(DISPOSITION_HANDLE disposition, AMQP_VALUE state_value) 06528 { 06529 int result; 06530 06531 if (disposition == NULL) 06532 { 06533 result = __LINE__; 06534 } 06535 else 06536 { 06537 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; 06538 AMQP_VALUE state_amqp_value = amqpvalue_clone(state_value); 06539 if (state_amqp_value == NULL) 06540 { 06541 result = __LINE__; 06542 } 06543 else 06544 { 06545 if (amqpvalue_set_composite_item(disposition_instance->composite_value, 4, state_amqp_value) != 0) 06546 { 06547 result = __LINE__; 06548 } 06549 else 06550 { 06551 result = 0; 06552 } 06553 06554 amqpvalue_destroy(state_amqp_value); 06555 } 06556 } 06557 06558 return result; 06559 } 06560 06561 int disposition_get_batchable(DISPOSITION_HANDLE disposition, bool* batchable_value) 06562 { 06563 int result; 06564 06565 if (disposition == NULL) 06566 { 06567 result = __LINE__; 06568 } 06569 else 06570 { 06571 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; 06572 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(disposition_instance->composite_value, 5); 06573 if (item_value == NULL) 06574 { 06575 result = __LINE__; 06576 } 06577 else 06578 { 06579 if (amqpvalue_get_boolean(item_value, batchable_value) != 0) 06580 { 06581 result = __LINE__; 06582 } 06583 else 06584 { 06585 result = 0; 06586 } 06587 } 06588 } 06589 06590 return result; 06591 } 06592 06593 int disposition_set_batchable(DISPOSITION_HANDLE disposition, bool batchable_value) 06594 { 06595 int result; 06596 06597 if (disposition == NULL) 06598 { 06599 result = __LINE__; 06600 } 06601 else 06602 { 06603 DISPOSITION_INSTANCE* disposition_instance = (DISPOSITION_INSTANCE*)disposition; 06604 AMQP_VALUE batchable_amqp_value = amqpvalue_create_boolean(batchable_value); 06605 if (batchable_amqp_value == NULL) 06606 { 06607 result = __LINE__; 06608 } 06609 else 06610 { 06611 if (amqpvalue_set_composite_item(disposition_instance->composite_value, 5, batchable_amqp_value) != 0) 06612 { 06613 result = __LINE__; 06614 } 06615 else 06616 { 06617 result = 0; 06618 } 06619 06620 amqpvalue_destroy(batchable_amqp_value); 06621 } 06622 } 06623 06624 return result; 06625 } 06626 06627 06628 /* detach */ 06629 06630 typedef struct DETACH_INSTANCE_TAG 06631 { 06632 AMQP_VALUE composite_value; 06633 } DETACH_INSTANCE; 06634 06635 static DETACH_HANDLE detach_create_internal(void) 06636 { 06637 DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)amqpalloc_malloc(sizeof(DETACH_INSTANCE)); 06638 if (detach_instance != NULL) 06639 { 06640 detach_instance->composite_value = NULL; 06641 } 06642 06643 return detach_instance; 06644 } 06645 06646 DETACH_HANDLE detach_create(handle handle_value) 06647 { 06648 DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)amqpalloc_malloc(sizeof(DETACH_INSTANCE)); 06649 if (detach_instance != NULL) 06650 { 06651 detach_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(22); 06652 if (detach_instance->composite_value == NULL) 06653 { 06654 amqpalloc_free(detach_instance); 06655 detach_instance = NULL; 06656 } 06657 else 06658 { 06659 AMQP_VALUE handle_amqp_value; 06660 int result = 0; 06661 06662 handle_amqp_value = amqpvalue_create_handle(handle_value); 06663 if ((result == 0) && (amqpvalue_set_composite_item(detach_instance->composite_value, 0, handle_amqp_value) != 0)) 06664 { 06665 result = __LINE__; 06666 } 06667 06668 amqpvalue_destroy(handle_amqp_value); 06669 } 06670 } 06671 06672 return detach_instance; 06673 } 06674 06675 DETACH_HANDLE detach_clone(DETACH_HANDLE value) 06676 { 06677 DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)amqpalloc_malloc(sizeof(DETACH_INSTANCE)); 06678 if (detach_instance != NULL) 06679 { 06680 detach_instance->composite_value = amqpvalue_clone(((DETACH_INSTANCE*)value)->composite_value); 06681 if (detach_instance->composite_value == NULL) 06682 { 06683 amqpalloc_free(detach_instance); 06684 detach_instance = NULL; 06685 } 06686 } 06687 06688 return detach_instance; 06689 } 06690 06691 void detach_destroy(DETACH_HANDLE detach) 06692 { 06693 if (detach != NULL) 06694 { 06695 DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)detach; 06696 amqpvalue_destroy(detach_instance->composite_value); 06697 amqpalloc_free(detach_instance); 06698 } 06699 } 06700 06701 AMQP_VALUE amqpvalue_create_detach(DETACH_HANDLE detach) 06702 { 06703 AMQP_VALUE result; 06704 06705 if (detach == NULL) 06706 { 06707 result = NULL; 06708 } 06709 else 06710 { 06711 DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)detach; 06712 result = amqpvalue_clone(detach_instance->composite_value); 06713 } 06714 06715 return result; 06716 } 06717 06718 bool is_detach_type_by_descriptor(AMQP_VALUE descriptor) 06719 { 06720 bool result; 06721 06722 uint64_t descriptor_ulong; 06723 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 06724 (descriptor_ulong == 22)) 06725 { 06726 result = true; 06727 } 06728 else 06729 { 06730 result = false; 06731 } 06732 06733 return result; 06734 } 06735 06736 06737 int amqpvalue_get_detach(AMQP_VALUE value, DETACH_HANDLE* detach_handle) 06738 { 06739 int result; 06740 DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)detach_create_internal(); 06741 *detach_handle = detach_instance; 06742 if (*detach_handle == NULL) 06743 { 06744 result = __LINE__; 06745 } 06746 else 06747 { 06748 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 06749 if (list_value == NULL) 06750 { 06751 detach_destroy(*detach_handle); 06752 result = __LINE__; 06753 } 06754 else 06755 { 06756 do 06757 { 06758 AMQP_VALUE item_value; 06759 /* handle */ 06760 item_value = amqpvalue_get_list_item(list_value, 0); 06761 if (item_value == NULL) 06762 { 06763 { 06764 detach_destroy(*detach_handle); 06765 result = __LINE__; 06766 break; 06767 } 06768 } 06769 else 06770 { 06771 handle handle; 06772 if (amqpvalue_get_handle(item_value, &handle) != 0) 06773 { 06774 detach_destroy(*detach_handle); 06775 result = __LINE__; 06776 break; 06777 } 06778 06779 amqpvalue_destroy(item_value); 06780 } 06781 /* closed */ 06782 item_value = amqpvalue_get_list_item(list_value, 1); 06783 if (item_value == NULL) 06784 { 06785 /* do nothing */ 06786 } 06787 else 06788 { 06789 bool closed; 06790 if (amqpvalue_get_boolean(item_value, &closed) != 0) 06791 { 06792 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 06793 { 06794 detach_destroy(*detach_handle); 06795 result = __LINE__; 06796 break; 06797 } 06798 } 06799 06800 amqpvalue_destroy(item_value); 06801 } 06802 /* error */ 06803 item_value = amqpvalue_get_list_item(list_value, 2); 06804 if (item_value == NULL) 06805 { 06806 /* do nothing */ 06807 } 06808 else 06809 { 06810 ERROR_HANDLE error; 06811 if (amqpvalue_get_error(item_value, &error) != 0) 06812 { 06813 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 06814 { 06815 detach_destroy(*detach_handle); 06816 result = __LINE__; 06817 break; 06818 } 06819 } 06820 06821 amqpvalue_destroy(item_value); 06822 } 06823 06824 detach_instance->composite_value = amqpvalue_clone(value); 06825 06826 result = 0; 06827 } while (0); 06828 } 06829 } 06830 06831 return result; 06832 } 06833 06834 int detach_get_handle(DETACH_HANDLE detach, handle* handle_value) 06835 { 06836 int result; 06837 06838 if (detach == NULL) 06839 { 06840 result = __LINE__; 06841 } 06842 else 06843 { 06844 DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)detach; 06845 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(detach_instance->composite_value, 0); 06846 if (item_value == NULL) 06847 { 06848 result = __LINE__; 06849 } 06850 else 06851 { 06852 if (amqpvalue_get_handle(item_value, handle_value) != 0) 06853 { 06854 result = __LINE__; 06855 } 06856 else 06857 { 06858 result = 0; 06859 } 06860 } 06861 } 06862 06863 return result; 06864 } 06865 06866 int detach_set_handle(DETACH_HANDLE detach, handle handle_value) 06867 { 06868 int result; 06869 06870 if (detach == NULL) 06871 { 06872 result = __LINE__; 06873 } 06874 else 06875 { 06876 DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)detach; 06877 AMQP_VALUE handle_amqp_value = amqpvalue_create_handle(handle_value); 06878 if (handle_amqp_value == NULL) 06879 { 06880 result = __LINE__; 06881 } 06882 else 06883 { 06884 if (amqpvalue_set_composite_item(detach_instance->composite_value, 0, handle_amqp_value) != 0) 06885 { 06886 result = __LINE__; 06887 } 06888 else 06889 { 06890 result = 0; 06891 } 06892 06893 amqpvalue_destroy(handle_amqp_value); 06894 } 06895 } 06896 06897 return result; 06898 } 06899 06900 int detach_get_closed(DETACH_HANDLE detach, bool* closed_value) 06901 { 06902 int result; 06903 06904 if (detach == NULL) 06905 { 06906 result = __LINE__; 06907 } 06908 else 06909 { 06910 DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)detach; 06911 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(detach_instance->composite_value, 1); 06912 if (item_value == NULL) 06913 { 06914 result = __LINE__; 06915 } 06916 else 06917 { 06918 if (amqpvalue_get_boolean(item_value, closed_value) != 0) 06919 { 06920 result = __LINE__; 06921 } 06922 else 06923 { 06924 result = 0; 06925 } 06926 } 06927 } 06928 06929 return result; 06930 } 06931 06932 int detach_set_closed(DETACH_HANDLE detach, bool closed_value) 06933 { 06934 int result; 06935 06936 if (detach == NULL) 06937 { 06938 result = __LINE__; 06939 } 06940 else 06941 { 06942 DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)detach; 06943 AMQP_VALUE closed_amqp_value = amqpvalue_create_boolean(closed_value); 06944 if (closed_amqp_value == NULL) 06945 { 06946 result = __LINE__; 06947 } 06948 else 06949 { 06950 if (amqpvalue_set_composite_item(detach_instance->composite_value, 1, closed_amqp_value) != 0) 06951 { 06952 result = __LINE__; 06953 } 06954 else 06955 { 06956 result = 0; 06957 } 06958 06959 amqpvalue_destroy(closed_amqp_value); 06960 } 06961 } 06962 06963 return result; 06964 } 06965 06966 int detach_get_error(DETACH_HANDLE detach, ERROR_HANDLE* error_value) 06967 { 06968 int result; 06969 06970 if (detach == NULL) 06971 { 06972 result = __LINE__; 06973 } 06974 else 06975 { 06976 DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)detach; 06977 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(detach_instance->composite_value, 2); 06978 if (item_value == NULL) 06979 { 06980 result = __LINE__; 06981 } 06982 else 06983 { 06984 if (amqpvalue_get_error(item_value, error_value) != 0) 06985 { 06986 result = __LINE__; 06987 } 06988 else 06989 { 06990 result = 0; 06991 } 06992 } 06993 } 06994 06995 return result; 06996 } 06997 06998 int detach_set_error(DETACH_HANDLE detach, ERROR_HANDLE error_value) 06999 { 07000 int result; 07001 07002 if (detach == NULL) 07003 { 07004 result = __LINE__; 07005 } 07006 else 07007 { 07008 DETACH_INSTANCE* detach_instance = (DETACH_INSTANCE*)detach; 07009 AMQP_VALUE error_amqp_value = amqpvalue_create_error(error_value); 07010 if (error_amqp_value == NULL) 07011 { 07012 result = __LINE__; 07013 } 07014 else 07015 { 07016 if (amqpvalue_set_composite_item(detach_instance->composite_value, 2, error_amqp_value) != 0) 07017 { 07018 result = __LINE__; 07019 } 07020 else 07021 { 07022 result = 0; 07023 } 07024 07025 amqpvalue_destroy(error_amqp_value); 07026 } 07027 } 07028 07029 return result; 07030 } 07031 07032 07033 /* end */ 07034 07035 typedef struct END_INSTANCE_TAG 07036 { 07037 AMQP_VALUE composite_value; 07038 } END_INSTANCE; 07039 07040 static END_HANDLE end_create_internal(void) 07041 { 07042 END_INSTANCE* end_instance = (END_INSTANCE*)amqpalloc_malloc(sizeof(END_INSTANCE)); 07043 if (end_instance != NULL) 07044 { 07045 end_instance->composite_value = NULL; 07046 } 07047 07048 return end_instance; 07049 } 07050 07051 END_HANDLE end_create(void) 07052 { 07053 END_INSTANCE* end_instance = (END_INSTANCE*)amqpalloc_malloc(sizeof(END_INSTANCE)); 07054 if (end_instance != NULL) 07055 { 07056 end_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(23); 07057 if (end_instance->composite_value == NULL) 07058 { 07059 amqpalloc_free(end_instance); 07060 end_instance = NULL; 07061 } 07062 } 07063 07064 return end_instance; 07065 } 07066 07067 END_HANDLE end_clone(END_HANDLE value) 07068 { 07069 END_INSTANCE* end_instance = (END_INSTANCE*)amqpalloc_malloc(sizeof(END_INSTANCE)); 07070 if (end_instance != NULL) 07071 { 07072 end_instance->composite_value = amqpvalue_clone(((END_INSTANCE*)value)->composite_value); 07073 if (end_instance->composite_value == NULL) 07074 { 07075 amqpalloc_free(end_instance); 07076 end_instance = NULL; 07077 } 07078 } 07079 07080 return end_instance; 07081 } 07082 07083 void end_destroy(END_HANDLE end) 07084 { 07085 if (end != NULL) 07086 { 07087 END_INSTANCE* end_instance = (END_INSTANCE*)end; 07088 amqpvalue_destroy(end_instance->composite_value); 07089 amqpalloc_free(end_instance); 07090 } 07091 } 07092 07093 AMQP_VALUE amqpvalue_create_end(END_HANDLE end) 07094 { 07095 AMQP_VALUE result; 07096 07097 if (end == NULL) 07098 { 07099 result = NULL; 07100 } 07101 else 07102 { 07103 END_INSTANCE* end_instance = (END_INSTANCE*)end; 07104 result = amqpvalue_clone(end_instance->composite_value); 07105 } 07106 07107 return result; 07108 } 07109 07110 bool is_end_type_by_descriptor(AMQP_VALUE descriptor) 07111 { 07112 bool result; 07113 07114 uint64_t descriptor_ulong; 07115 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 07116 (descriptor_ulong == 23)) 07117 { 07118 result = true; 07119 } 07120 else 07121 { 07122 result = false; 07123 } 07124 07125 return result; 07126 } 07127 07128 07129 int amqpvalue_get_end(AMQP_VALUE value, END_HANDLE* end_handle) 07130 { 07131 int result; 07132 END_INSTANCE* end_instance = (END_INSTANCE*)end_create_internal(); 07133 *end_handle = end_instance; 07134 if (*end_handle == NULL) 07135 { 07136 result = __LINE__; 07137 } 07138 else 07139 { 07140 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 07141 if (list_value == NULL) 07142 { 07143 end_destroy(*end_handle); 07144 result = __LINE__; 07145 } 07146 else 07147 { 07148 do 07149 { 07150 AMQP_VALUE item_value; 07151 /* error */ 07152 item_value = amqpvalue_get_list_item(list_value, 0); 07153 if (item_value == NULL) 07154 { 07155 /* do nothing */ 07156 } 07157 else 07158 { 07159 ERROR_HANDLE error; 07160 if (amqpvalue_get_error(item_value, &error) != 0) 07161 { 07162 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 07163 { 07164 end_destroy(*end_handle); 07165 result = __LINE__; 07166 break; 07167 } 07168 } 07169 07170 amqpvalue_destroy(item_value); 07171 } 07172 07173 end_instance->composite_value = amqpvalue_clone(value); 07174 07175 result = 0; 07176 } while (0); 07177 } 07178 } 07179 07180 return result; 07181 } 07182 07183 int end_get_error(END_HANDLE end, ERROR_HANDLE* error_value) 07184 { 07185 int result; 07186 07187 if (end == NULL) 07188 { 07189 result = __LINE__; 07190 } 07191 else 07192 { 07193 END_INSTANCE* end_instance = (END_INSTANCE*)end; 07194 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(end_instance->composite_value, 0); 07195 if (item_value == NULL) 07196 { 07197 result = __LINE__; 07198 } 07199 else 07200 { 07201 if (amqpvalue_get_error(item_value, error_value) != 0) 07202 { 07203 result = __LINE__; 07204 } 07205 else 07206 { 07207 result = 0; 07208 } 07209 } 07210 } 07211 07212 return result; 07213 } 07214 07215 int end_set_error(END_HANDLE end, ERROR_HANDLE error_value) 07216 { 07217 int result; 07218 07219 if (end == NULL) 07220 { 07221 result = __LINE__; 07222 } 07223 else 07224 { 07225 END_INSTANCE* end_instance = (END_INSTANCE*)end; 07226 AMQP_VALUE error_amqp_value = amqpvalue_create_error(error_value); 07227 if (error_amqp_value == NULL) 07228 { 07229 result = __LINE__; 07230 } 07231 else 07232 { 07233 if (amqpvalue_set_composite_item(end_instance->composite_value, 0, error_amqp_value) != 0) 07234 { 07235 result = __LINE__; 07236 } 07237 else 07238 { 07239 result = 0; 07240 } 07241 07242 amqpvalue_destroy(error_amqp_value); 07243 } 07244 } 07245 07246 return result; 07247 } 07248 07249 07250 /* close */ 07251 07252 typedef struct CLOSE_INSTANCE_TAG 07253 { 07254 AMQP_VALUE composite_value; 07255 } CLOSE_INSTANCE; 07256 07257 static CLOSE_HANDLE close_create_internal(void) 07258 { 07259 CLOSE_INSTANCE* close_instance = (CLOSE_INSTANCE*)amqpalloc_malloc(sizeof(CLOSE_INSTANCE)); 07260 if (close_instance != NULL) 07261 { 07262 close_instance->composite_value = NULL; 07263 } 07264 07265 return close_instance; 07266 } 07267 07268 CLOSE_HANDLE close_create(void) 07269 { 07270 CLOSE_INSTANCE* close_instance = (CLOSE_INSTANCE*)amqpalloc_malloc(sizeof(CLOSE_INSTANCE)); 07271 if (close_instance != NULL) 07272 { 07273 close_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(24); 07274 if (close_instance->composite_value == NULL) 07275 { 07276 amqpalloc_free(close_instance); 07277 close_instance = NULL; 07278 } 07279 } 07280 07281 return close_instance; 07282 } 07283 07284 CLOSE_HANDLE close_clone(CLOSE_HANDLE value) 07285 { 07286 CLOSE_INSTANCE* close_instance = (CLOSE_INSTANCE*)amqpalloc_malloc(sizeof(CLOSE_INSTANCE)); 07287 if (close_instance != NULL) 07288 { 07289 close_instance->composite_value = amqpvalue_clone(((CLOSE_INSTANCE*)value)->composite_value); 07290 if (close_instance->composite_value == NULL) 07291 { 07292 amqpalloc_free(close_instance); 07293 close_instance = NULL; 07294 } 07295 } 07296 07297 return close_instance; 07298 } 07299 07300 void close_destroy(CLOSE_HANDLE close) 07301 { 07302 if (close != NULL) 07303 { 07304 CLOSE_INSTANCE* close_instance = (CLOSE_INSTANCE*)close; 07305 amqpvalue_destroy(close_instance->composite_value); 07306 amqpalloc_free(close_instance); 07307 } 07308 } 07309 07310 AMQP_VALUE amqpvalue_create_close(CLOSE_HANDLE close) 07311 { 07312 AMQP_VALUE result; 07313 07314 if (close == NULL) 07315 { 07316 result = NULL; 07317 } 07318 else 07319 { 07320 CLOSE_INSTANCE* close_instance = (CLOSE_INSTANCE*)close; 07321 result = amqpvalue_clone(close_instance->composite_value); 07322 } 07323 07324 return result; 07325 } 07326 07327 bool is_close_type_by_descriptor(AMQP_VALUE descriptor) 07328 { 07329 bool result; 07330 07331 uint64_t descriptor_ulong; 07332 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 07333 (descriptor_ulong == 24)) 07334 { 07335 result = true; 07336 } 07337 else 07338 { 07339 result = false; 07340 } 07341 07342 return result; 07343 } 07344 07345 07346 int amqpvalue_get_close(AMQP_VALUE value, CLOSE_HANDLE* close_handle) 07347 { 07348 int result; 07349 CLOSE_INSTANCE* close_instance = (CLOSE_INSTANCE*)close_create_internal(); 07350 *close_handle = close_instance; 07351 if (*close_handle == NULL) 07352 { 07353 result = __LINE__; 07354 } 07355 else 07356 { 07357 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 07358 if (list_value == NULL) 07359 { 07360 close_destroy(*close_handle); 07361 result = __LINE__; 07362 } 07363 else 07364 { 07365 do 07366 { 07367 AMQP_VALUE item_value; 07368 /* error */ 07369 item_value = amqpvalue_get_list_item(list_value, 0); 07370 if (item_value == NULL) 07371 { 07372 /* do nothing */ 07373 } 07374 else 07375 { 07376 ERROR_HANDLE error; 07377 if (amqpvalue_get_error(item_value, &error) != 0) 07378 { 07379 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 07380 { 07381 close_destroy(*close_handle); 07382 result = __LINE__; 07383 break; 07384 } 07385 } 07386 07387 amqpvalue_destroy(item_value); 07388 } 07389 07390 close_instance->composite_value = amqpvalue_clone(value); 07391 07392 result = 0; 07393 } while (0); 07394 } 07395 } 07396 07397 return result; 07398 } 07399 07400 int close_get_error(CLOSE_HANDLE close, ERROR_HANDLE* error_value) 07401 { 07402 int result; 07403 07404 if (close == NULL) 07405 { 07406 result = __LINE__; 07407 } 07408 else 07409 { 07410 CLOSE_INSTANCE* close_instance = (CLOSE_INSTANCE*)close; 07411 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(close_instance->composite_value, 0); 07412 if (item_value == NULL) 07413 { 07414 result = __LINE__; 07415 } 07416 else 07417 { 07418 if (amqpvalue_get_error(item_value, error_value) != 0) 07419 { 07420 result = __LINE__; 07421 } 07422 else 07423 { 07424 result = 0; 07425 } 07426 } 07427 } 07428 07429 return result; 07430 } 07431 07432 int close_set_error(CLOSE_HANDLE close, ERROR_HANDLE error_value) 07433 { 07434 int result; 07435 07436 if (close == NULL) 07437 { 07438 result = __LINE__; 07439 } 07440 else 07441 { 07442 CLOSE_INSTANCE* close_instance = (CLOSE_INSTANCE*)close; 07443 AMQP_VALUE error_amqp_value = amqpvalue_create_error(error_value); 07444 if (error_amqp_value == NULL) 07445 { 07446 result = __LINE__; 07447 } 07448 else 07449 { 07450 if (amqpvalue_set_composite_item(close_instance->composite_value, 0, error_amqp_value) != 0) 07451 { 07452 result = __LINE__; 07453 } 07454 else 07455 { 07456 result = 0; 07457 } 07458 07459 amqpvalue_destroy(error_amqp_value); 07460 } 07461 } 07462 07463 return result; 07464 } 07465 07466 07467 /* sasl-code */ 07468 07469 AMQP_VALUE amqpvalue_create_sasl_code(sasl_code value) 07470 { 07471 return amqpvalue_create_ubyte(value); 07472 } 07473 07474 /* sasl-mechanisms */ 07475 07476 typedef struct SASL_MECHANISMS_INSTANCE_TAG 07477 { 07478 AMQP_VALUE composite_value; 07479 } SASL_MECHANISMS_INSTANCE; 07480 07481 static SASL_MECHANISMS_HANDLE sasl_mechanisms_create_internal(void) 07482 { 07483 SASL_MECHANISMS_INSTANCE* sasl_mechanisms_instance = (SASL_MECHANISMS_INSTANCE*)amqpalloc_malloc(sizeof(SASL_MECHANISMS_INSTANCE)); 07484 if (sasl_mechanisms_instance != NULL) 07485 { 07486 sasl_mechanisms_instance->composite_value = NULL; 07487 } 07488 07489 return sasl_mechanisms_instance; 07490 } 07491 07492 SASL_MECHANISMS_HANDLE sasl_mechanisms_create(AMQP_VALUE sasl_server_mechanisms_value) 07493 { 07494 SASL_MECHANISMS_INSTANCE* sasl_mechanisms_instance = (SASL_MECHANISMS_INSTANCE*)amqpalloc_malloc(sizeof(SASL_MECHANISMS_INSTANCE)); 07495 if (sasl_mechanisms_instance != NULL) 07496 { 07497 sasl_mechanisms_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(64); 07498 if (sasl_mechanisms_instance->composite_value == NULL) 07499 { 07500 amqpalloc_free(sasl_mechanisms_instance); 07501 sasl_mechanisms_instance = NULL; 07502 } 07503 else 07504 { 07505 AMQP_VALUE sasl_server_mechanisms_amqp_value; 07506 int result = 0; 07507 07508 sasl_server_mechanisms_amqp_value = sasl_server_mechanisms_value; 07509 if ((result == 0) && (amqpvalue_set_composite_item(sasl_mechanisms_instance->composite_value, 0, sasl_server_mechanisms_amqp_value) != 0)) 07510 { 07511 result = __LINE__; 07512 } 07513 07514 amqpvalue_destroy(sasl_server_mechanisms_amqp_value); 07515 } 07516 } 07517 07518 return sasl_mechanisms_instance; 07519 } 07520 07521 SASL_MECHANISMS_HANDLE sasl_mechanisms_clone(SASL_MECHANISMS_HANDLE value) 07522 { 07523 SASL_MECHANISMS_INSTANCE* sasl_mechanisms_instance = (SASL_MECHANISMS_INSTANCE*)amqpalloc_malloc(sizeof(SASL_MECHANISMS_INSTANCE)); 07524 if (sasl_mechanisms_instance != NULL) 07525 { 07526 sasl_mechanisms_instance->composite_value = amqpvalue_clone(((SASL_MECHANISMS_INSTANCE*)value)->composite_value); 07527 if (sasl_mechanisms_instance->composite_value == NULL) 07528 { 07529 amqpalloc_free(sasl_mechanisms_instance); 07530 sasl_mechanisms_instance = NULL; 07531 } 07532 } 07533 07534 return sasl_mechanisms_instance; 07535 } 07536 07537 void sasl_mechanisms_destroy(SASL_MECHANISMS_HANDLE sasl_mechanisms) 07538 { 07539 if (sasl_mechanisms != NULL) 07540 { 07541 SASL_MECHANISMS_INSTANCE* sasl_mechanisms_instance = (SASL_MECHANISMS_INSTANCE*)sasl_mechanisms; 07542 amqpvalue_destroy(sasl_mechanisms_instance->composite_value); 07543 amqpalloc_free(sasl_mechanisms_instance); 07544 } 07545 } 07546 07547 AMQP_VALUE amqpvalue_create_sasl_mechanisms(SASL_MECHANISMS_HANDLE sasl_mechanisms) 07548 { 07549 AMQP_VALUE result; 07550 07551 if (sasl_mechanisms == NULL) 07552 { 07553 result = NULL; 07554 } 07555 else 07556 { 07557 SASL_MECHANISMS_INSTANCE* sasl_mechanisms_instance = (SASL_MECHANISMS_INSTANCE*)sasl_mechanisms; 07558 result = amqpvalue_clone(sasl_mechanisms_instance->composite_value); 07559 } 07560 07561 return result; 07562 } 07563 07564 bool is_sasl_mechanisms_type_by_descriptor(AMQP_VALUE descriptor) 07565 { 07566 bool result; 07567 07568 uint64_t descriptor_ulong; 07569 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 07570 (descriptor_ulong == 64)) 07571 { 07572 result = true; 07573 } 07574 else 07575 { 07576 result = false; 07577 } 07578 07579 return result; 07580 } 07581 07582 07583 int amqpvalue_get_sasl_mechanisms(AMQP_VALUE value, SASL_MECHANISMS_HANDLE* sasl_mechanisms_handle) 07584 { 07585 int result; 07586 SASL_MECHANISMS_INSTANCE* sasl_mechanisms_instance = (SASL_MECHANISMS_INSTANCE*)sasl_mechanisms_create_internal(); 07587 *sasl_mechanisms_handle = sasl_mechanisms_instance; 07588 if (*sasl_mechanisms_handle == NULL) 07589 { 07590 result = __LINE__; 07591 } 07592 else 07593 { 07594 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 07595 if (list_value == NULL) 07596 { 07597 sasl_mechanisms_destroy(*sasl_mechanisms_handle); 07598 result = __LINE__; 07599 } 07600 else 07601 { 07602 do 07603 { 07604 AMQP_VALUE item_value; 07605 /* sasl-server-mechanisms */ 07606 item_value = amqpvalue_get_list_item(list_value, 0); 07607 if (item_value == NULL) 07608 { 07609 { 07610 sasl_mechanisms_destroy(*sasl_mechanisms_handle); 07611 result = __LINE__; 07612 break; 07613 } 07614 } 07615 else 07616 { 07617 const char* sasl_server_mechanisms; 07618 AMQP_VALUE sasl_server_mechanisms_array; 07619 if ((amqpvalue_get_array(item_value, &sasl_server_mechanisms_array) != 0) && 07620 (amqpvalue_get_symbol(item_value, &sasl_server_mechanisms) != 0)) 07621 { 07622 sasl_mechanisms_destroy(*sasl_mechanisms_handle); 07623 result = __LINE__; 07624 break; 07625 } 07626 07627 amqpvalue_destroy(item_value); 07628 } 07629 07630 sasl_mechanisms_instance->composite_value = amqpvalue_clone(value); 07631 07632 result = 0; 07633 } while (0); 07634 } 07635 } 07636 07637 return result; 07638 } 07639 07640 int sasl_mechanisms_get_sasl_server_mechanisms(SASL_MECHANISMS_HANDLE sasl_mechanisms, AMQP_VALUE* sasl_server_mechanisms_value) 07641 { 07642 int result; 07643 07644 if (sasl_mechanisms == NULL) 07645 { 07646 result = __LINE__; 07647 } 07648 else 07649 { 07650 SASL_MECHANISMS_INSTANCE* sasl_mechanisms_instance = (SASL_MECHANISMS_INSTANCE*)sasl_mechanisms; 07651 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_mechanisms_instance->composite_value, 0); 07652 if (item_value == NULL) 07653 { 07654 result = __LINE__; 07655 } 07656 else 07657 { 07658 if (amqpvalue_get_array(item_value, sasl_server_mechanisms_value) != 0) 07659 { 07660 result = __LINE__; 07661 } 07662 else 07663 { 07664 result = 0; 07665 } 07666 } 07667 } 07668 07669 return result; 07670 } 07671 07672 int sasl_mechanisms_set_sasl_server_mechanisms(SASL_MECHANISMS_HANDLE sasl_mechanisms, AMQP_VALUE sasl_server_mechanisms_value) 07673 { 07674 int result; 07675 07676 if (sasl_mechanisms == NULL) 07677 { 07678 result = __LINE__; 07679 } 07680 else 07681 { 07682 SASL_MECHANISMS_INSTANCE* sasl_mechanisms_instance = (SASL_MECHANISMS_INSTANCE*)sasl_mechanisms; 07683 AMQP_VALUE sasl_server_mechanisms_amqp_value = amqpvalue_clone(sasl_server_mechanisms_value); 07684 if (sasl_server_mechanisms_amqp_value == NULL) 07685 { 07686 result = __LINE__; 07687 } 07688 else 07689 { 07690 if (amqpvalue_set_composite_item(sasl_mechanisms_instance->composite_value, 0, sasl_server_mechanisms_amqp_value) != 0) 07691 { 07692 result = __LINE__; 07693 } 07694 else 07695 { 07696 result = 0; 07697 } 07698 07699 amqpvalue_destroy(sasl_server_mechanisms_amqp_value); 07700 } 07701 } 07702 07703 return result; 07704 } 07705 07706 07707 /* sasl-init */ 07708 07709 typedef struct SASL_INIT_INSTANCE_TAG 07710 { 07711 AMQP_VALUE composite_value; 07712 } SASL_INIT_INSTANCE; 07713 07714 static SASL_INIT_HANDLE sasl_init_create_internal(void) 07715 { 07716 SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)amqpalloc_malloc(sizeof(SASL_INIT_INSTANCE)); 07717 if (sasl_init_instance != NULL) 07718 { 07719 sasl_init_instance->composite_value = NULL; 07720 } 07721 07722 return sasl_init_instance; 07723 } 07724 07725 SASL_INIT_HANDLE sasl_init_create(const char* mechanism_value) 07726 { 07727 SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)amqpalloc_malloc(sizeof(SASL_INIT_INSTANCE)); 07728 if (sasl_init_instance != NULL) 07729 { 07730 sasl_init_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(65); 07731 if (sasl_init_instance->composite_value == NULL) 07732 { 07733 amqpalloc_free(sasl_init_instance); 07734 sasl_init_instance = NULL; 07735 } 07736 else 07737 { 07738 AMQP_VALUE mechanism_amqp_value; 07739 int result = 0; 07740 07741 mechanism_amqp_value = amqpvalue_create_symbol(mechanism_value); 07742 if ((result == 0) && (amqpvalue_set_composite_item(sasl_init_instance->composite_value, 0, mechanism_amqp_value) != 0)) 07743 { 07744 result = __LINE__; 07745 } 07746 07747 amqpvalue_destroy(mechanism_amqp_value); 07748 } 07749 } 07750 07751 return sasl_init_instance; 07752 } 07753 07754 SASL_INIT_HANDLE sasl_init_clone(SASL_INIT_HANDLE value) 07755 { 07756 SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)amqpalloc_malloc(sizeof(SASL_INIT_INSTANCE)); 07757 if (sasl_init_instance != NULL) 07758 { 07759 sasl_init_instance->composite_value = amqpvalue_clone(((SASL_INIT_INSTANCE*)value)->composite_value); 07760 if (sasl_init_instance->composite_value == NULL) 07761 { 07762 amqpalloc_free(sasl_init_instance); 07763 sasl_init_instance = NULL; 07764 } 07765 } 07766 07767 return sasl_init_instance; 07768 } 07769 07770 void sasl_init_destroy(SASL_INIT_HANDLE sasl_init) 07771 { 07772 if (sasl_init != NULL) 07773 { 07774 SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)sasl_init; 07775 amqpvalue_destroy(sasl_init_instance->composite_value); 07776 amqpalloc_free(sasl_init_instance); 07777 } 07778 } 07779 07780 AMQP_VALUE amqpvalue_create_sasl_init(SASL_INIT_HANDLE sasl_init) 07781 { 07782 AMQP_VALUE result; 07783 07784 if (sasl_init == NULL) 07785 { 07786 result = NULL; 07787 } 07788 else 07789 { 07790 SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)sasl_init; 07791 result = amqpvalue_clone(sasl_init_instance->composite_value); 07792 } 07793 07794 return result; 07795 } 07796 07797 bool is_sasl_init_type_by_descriptor(AMQP_VALUE descriptor) 07798 { 07799 bool result; 07800 07801 uint64_t descriptor_ulong; 07802 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 07803 (descriptor_ulong == 65)) 07804 { 07805 result = true; 07806 } 07807 else 07808 { 07809 result = false; 07810 } 07811 07812 return result; 07813 } 07814 07815 07816 int amqpvalue_get_sasl_init(AMQP_VALUE value, SASL_INIT_HANDLE* sasl_init_handle) 07817 { 07818 int result; 07819 SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)sasl_init_create_internal(); 07820 *sasl_init_handle = sasl_init_instance; 07821 if (*sasl_init_handle == NULL) 07822 { 07823 result = __LINE__; 07824 } 07825 else 07826 { 07827 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 07828 if (list_value == NULL) 07829 { 07830 sasl_init_destroy(*sasl_init_handle); 07831 result = __LINE__; 07832 } 07833 else 07834 { 07835 do 07836 { 07837 AMQP_VALUE item_value; 07838 /* mechanism */ 07839 item_value = amqpvalue_get_list_item(list_value, 0); 07840 if (item_value == NULL) 07841 { 07842 { 07843 sasl_init_destroy(*sasl_init_handle); 07844 result = __LINE__; 07845 break; 07846 } 07847 } 07848 else 07849 { 07850 const char* mechanism; 07851 if (amqpvalue_get_symbol(item_value, &mechanism) != 0) 07852 { 07853 sasl_init_destroy(*sasl_init_handle); 07854 result = __LINE__; 07855 break; 07856 } 07857 07858 amqpvalue_destroy(item_value); 07859 } 07860 /* initial-response */ 07861 item_value = amqpvalue_get_list_item(list_value, 1); 07862 if (item_value == NULL) 07863 { 07864 /* do nothing */ 07865 } 07866 else 07867 { 07868 amqp_binary initial_response; 07869 if (amqpvalue_get_binary(item_value, &initial_response) != 0) 07870 { 07871 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 07872 { 07873 sasl_init_destroy(*sasl_init_handle); 07874 result = __LINE__; 07875 break; 07876 } 07877 } 07878 07879 amqpvalue_destroy(item_value); 07880 } 07881 /* hostname */ 07882 item_value = amqpvalue_get_list_item(list_value, 2); 07883 if (item_value == NULL) 07884 { 07885 /* do nothing */ 07886 } 07887 else 07888 { 07889 const char* hostname; 07890 if (amqpvalue_get_string(item_value, &hostname) != 0) 07891 { 07892 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 07893 { 07894 sasl_init_destroy(*sasl_init_handle); 07895 result = __LINE__; 07896 break; 07897 } 07898 } 07899 07900 amqpvalue_destroy(item_value); 07901 } 07902 07903 sasl_init_instance->composite_value = amqpvalue_clone(value); 07904 07905 result = 0; 07906 } while (0); 07907 } 07908 } 07909 07910 return result; 07911 } 07912 07913 int sasl_init_get_mechanism(SASL_INIT_HANDLE sasl_init, const char** mechanism_value) 07914 { 07915 int result; 07916 07917 if (sasl_init == NULL) 07918 { 07919 result = __LINE__; 07920 } 07921 else 07922 { 07923 SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)sasl_init; 07924 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_init_instance->composite_value, 0); 07925 if (item_value == NULL) 07926 { 07927 result = __LINE__; 07928 } 07929 else 07930 { 07931 if (amqpvalue_get_symbol(item_value, mechanism_value) != 0) 07932 { 07933 result = __LINE__; 07934 } 07935 else 07936 { 07937 result = 0; 07938 } 07939 } 07940 } 07941 07942 return result; 07943 } 07944 07945 int sasl_init_set_mechanism(SASL_INIT_HANDLE sasl_init, const char* mechanism_value) 07946 { 07947 int result; 07948 07949 if (sasl_init == NULL) 07950 { 07951 result = __LINE__; 07952 } 07953 else 07954 { 07955 SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)sasl_init; 07956 AMQP_VALUE mechanism_amqp_value = amqpvalue_create_symbol(mechanism_value); 07957 if (mechanism_amqp_value == NULL) 07958 { 07959 result = __LINE__; 07960 } 07961 else 07962 { 07963 if (amqpvalue_set_composite_item(sasl_init_instance->composite_value, 0, mechanism_amqp_value) != 0) 07964 { 07965 result = __LINE__; 07966 } 07967 else 07968 { 07969 result = 0; 07970 } 07971 07972 amqpvalue_destroy(mechanism_amqp_value); 07973 } 07974 } 07975 07976 return result; 07977 } 07978 07979 int sasl_init_get_initial_response(SASL_INIT_HANDLE sasl_init, amqp_binary* initial_response_value) 07980 { 07981 int result; 07982 07983 if (sasl_init == NULL) 07984 { 07985 result = __LINE__; 07986 } 07987 else 07988 { 07989 SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)sasl_init; 07990 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_init_instance->composite_value, 1); 07991 if (item_value == NULL) 07992 { 07993 result = __LINE__; 07994 } 07995 else 07996 { 07997 if (amqpvalue_get_binary(item_value, initial_response_value) != 0) 07998 { 07999 result = __LINE__; 08000 } 08001 else 08002 { 08003 result = 0; 08004 } 08005 } 08006 } 08007 08008 return result; 08009 } 08010 08011 int sasl_init_set_initial_response(SASL_INIT_HANDLE sasl_init, amqp_binary initial_response_value) 08012 { 08013 int result; 08014 08015 if (sasl_init == NULL) 08016 { 08017 result = __LINE__; 08018 } 08019 else 08020 { 08021 SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)sasl_init; 08022 AMQP_VALUE initial_response_amqp_value = amqpvalue_create_binary(initial_response_value); 08023 if (initial_response_amqp_value == NULL) 08024 { 08025 result = __LINE__; 08026 } 08027 else 08028 { 08029 if (amqpvalue_set_composite_item(sasl_init_instance->composite_value, 1, initial_response_amqp_value) != 0) 08030 { 08031 result = __LINE__; 08032 } 08033 else 08034 { 08035 result = 0; 08036 } 08037 08038 amqpvalue_destroy(initial_response_amqp_value); 08039 } 08040 } 08041 08042 return result; 08043 } 08044 08045 int sasl_init_get_hostname(SASL_INIT_HANDLE sasl_init, const char** hostname_value) 08046 { 08047 int result; 08048 08049 if (sasl_init == NULL) 08050 { 08051 result = __LINE__; 08052 } 08053 else 08054 { 08055 SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)sasl_init; 08056 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_init_instance->composite_value, 2); 08057 if (item_value == NULL) 08058 { 08059 result = __LINE__; 08060 } 08061 else 08062 { 08063 if (amqpvalue_get_string(item_value, hostname_value) != 0) 08064 { 08065 result = __LINE__; 08066 } 08067 else 08068 { 08069 result = 0; 08070 } 08071 } 08072 } 08073 08074 return result; 08075 } 08076 08077 int sasl_init_set_hostname(SASL_INIT_HANDLE sasl_init, const char* hostname_value) 08078 { 08079 int result; 08080 08081 if (sasl_init == NULL) 08082 { 08083 result = __LINE__; 08084 } 08085 else 08086 { 08087 SASL_INIT_INSTANCE* sasl_init_instance = (SASL_INIT_INSTANCE*)sasl_init; 08088 AMQP_VALUE hostname_amqp_value = amqpvalue_create_string(hostname_value); 08089 if (hostname_amqp_value == NULL) 08090 { 08091 result = __LINE__; 08092 } 08093 else 08094 { 08095 if (amqpvalue_set_composite_item(sasl_init_instance->composite_value, 2, hostname_amqp_value) != 0) 08096 { 08097 result = __LINE__; 08098 } 08099 else 08100 { 08101 result = 0; 08102 } 08103 08104 amqpvalue_destroy(hostname_amqp_value); 08105 } 08106 } 08107 08108 return result; 08109 } 08110 08111 08112 /* sasl-challenge */ 08113 08114 typedef struct SASL_CHALLENGE_INSTANCE_TAG 08115 { 08116 AMQP_VALUE composite_value; 08117 } SASL_CHALLENGE_INSTANCE; 08118 08119 static SASL_CHALLENGE_HANDLE sasl_challenge_create_internal(void) 08120 { 08121 SASL_CHALLENGE_INSTANCE* sasl_challenge_instance = (SASL_CHALLENGE_INSTANCE*)amqpalloc_malloc(sizeof(SASL_CHALLENGE_INSTANCE)); 08122 if (sasl_challenge_instance != NULL) 08123 { 08124 sasl_challenge_instance->composite_value = NULL; 08125 } 08126 08127 return sasl_challenge_instance; 08128 } 08129 08130 SASL_CHALLENGE_HANDLE sasl_challenge_create(amqp_binary challenge_value) 08131 { 08132 SASL_CHALLENGE_INSTANCE* sasl_challenge_instance = (SASL_CHALLENGE_INSTANCE*)amqpalloc_malloc(sizeof(SASL_CHALLENGE_INSTANCE)); 08133 if (sasl_challenge_instance != NULL) 08134 { 08135 sasl_challenge_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(66); 08136 if (sasl_challenge_instance->composite_value == NULL) 08137 { 08138 amqpalloc_free(sasl_challenge_instance); 08139 sasl_challenge_instance = NULL; 08140 } 08141 else 08142 { 08143 AMQP_VALUE challenge_amqp_value; 08144 int result = 0; 08145 08146 challenge_amqp_value = amqpvalue_create_binary(challenge_value); 08147 if ((result == 0) && (amqpvalue_set_composite_item(sasl_challenge_instance->composite_value, 0, challenge_amqp_value) != 0)) 08148 { 08149 result = __LINE__; 08150 } 08151 08152 amqpvalue_destroy(challenge_amqp_value); 08153 } 08154 } 08155 08156 return sasl_challenge_instance; 08157 } 08158 08159 SASL_CHALLENGE_HANDLE sasl_challenge_clone(SASL_CHALLENGE_HANDLE value) 08160 { 08161 SASL_CHALLENGE_INSTANCE* sasl_challenge_instance = (SASL_CHALLENGE_INSTANCE*)amqpalloc_malloc(sizeof(SASL_CHALLENGE_INSTANCE)); 08162 if (sasl_challenge_instance != NULL) 08163 { 08164 sasl_challenge_instance->composite_value = amqpvalue_clone(((SASL_CHALLENGE_INSTANCE*)value)->composite_value); 08165 if (sasl_challenge_instance->composite_value == NULL) 08166 { 08167 amqpalloc_free(sasl_challenge_instance); 08168 sasl_challenge_instance = NULL; 08169 } 08170 } 08171 08172 return sasl_challenge_instance; 08173 } 08174 08175 void sasl_challenge_destroy(SASL_CHALLENGE_HANDLE sasl_challenge) 08176 { 08177 if (sasl_challenge != NULL) 08178 { 08179 SASL_CHALLENGE_INSTANCE* sasl_challenge_instance = (SASL_CHALLENGE_INSTANCE*)sasl_challenge; 08180 amqpvalue_destroy(sasl_challenge_instance->composite_value); 08181 amqpalloc_free(sasl_challenge_instance); 08182 } 08183 } 08184 08185 AMQP_VALUE amqpvalue_create_sasl_challenge(SASL_CHALLENGE_HANDLE sasl_challenge) 08186 { 08187 AMQP_VALUE result; 08188 08189 if (sasl_challenge == NULL) 08190 { 08191 result = NULL; 08192 } 08193 else 08194 { 08195 SASL_CHALLENGE_INSTANCE* sasl_challenge_instance = (SASL_CHALLENGE_INSTANCE*)sasl_challenge; 08196 result = amqpvalue_clone(sasl_challenge_instance->composite_value); 08197 } 08198 08199 return result; 08200 } 08201 08202 bool is_sasl_challenge_type_by_descriptor(AMQP_VALUE descriptor) 08203 { 08204 bool result; 08205 08206 uint64_t descriptor_ulong; 08207 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 08208 (descriptor_ulong == 66)) 08209 { 08210 result = true; 08211 } 08212 else 08213 { 08214 result = false; 08215 } 08216 08217 return result; 08218 } 08219 08220 08221 int amqpvalue_get_sasl_challenge(AMQP_VALUE value, SASL_CHALLENGE_HANDLE* sasl_challenge_handle) 08222 { 08223 int result; 08224 SASL_CHALLENGE_INSTANCE* sasl_challenge_instance = (SASL_CHALLENGE_INSTANCE*)sasl_challenge_create_internal(); 08225 *sasl_challenge_handle = sasl_challenge_instance; 08226 if (*sasl_challenge_handle == NULL) 08227 { 08228 result = __LINE__; 08229 } 08230 else 08231 { 08232 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 08233 if (list_value == NULL) 08234 { 08235 sasl_challenge_destroy(*sasl_challenge_handle); 08236 result = __LINE__; 08237 } 08238 else 08239 { 08240 do 08241 { 08242 AMQP_VALUE item_value; 08243 /* challenge */ 08244 item_value = amqpvalue_get_list_item(list_value, 0); 08245 if (item_value == NULL) 08246 { 08247 { 08248 sasl_challenge_destroy(*sasl_challenge_handle); 08249 result = __LINE__; 08250 break; 08251 } 08252 } 08253 else 08254 { 08255 amqp_binary challenge; 08256 if (amqpvalue_get_binary(item_value, &challenge) != 0) 08257 { 08258 sasl_challenge_destroy(*sasl_challenge_handle); 08259 result = __LINE__; 08260 break; 08261 } 08262 08263 amqpvalue_destroy(item_value); 08264 } 08265 08266 sasl_challenge_instance->composite_value = amqpvalue_clone(value); 08267 08268 result = 0; 08269 } while (0); 08270 } 08271 } 08272 08273 return result; 08274 } 08275 08276 int sasl_challenge_get_challenge(SASL_CHALLENGE_HANDLE sasl_challenge, amqp_binary* challenge_value) 08277 { 08278 int result; 08279 08280 if (sasl_challenge == NULL) 08281 { 08282 result = __LINE__; 08283 } 08284 else 08285 { 08286 SASL_CHALLENGE_INSTANCE* sasl_challenge_instance = (SASL_CHALLENGE_INSTANCE*)sasl_challenge; 08287 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_challenge_instance->composite_value, 0); 08288 if (item_value == NULL) 08289 { 08290 result = __LINE__; 08291 } 08292 else 08293 { 08294 if (amqpvalue_get_binary(item_value, challenge_value) != 0) 08295 { 08296 result = __LINE__; 08297 } 08298 else 08299 { 08300 result = 0; 08301 } 08302 } 08303 } 08304 08305 return result; 08306 } 08307 08308 int sasl_challenge_set_challenge(SASL_CHALLENGE_HANDLE sasl_challenge, amqp_binary challenge_value) 08309 { 08310 int result; 08311 08312 if (sasl_challenge == NULL) 08313 { 08314 result = __LINE__; 08315 } 08316 else 08317 { 08318 SASL_CHALLENGE_INSTANCE* sasl_challenge_instance = (SASL_CHALLENGE_INSTANCE*)sasl_challenge; 08319 AMQP_VALUE challenge_amqp_value = amqpvalue_create_binary(challenge_value); 08320 if (challenge_amqp_value == NULL) 08321 { 08322 result = __LINE__; 08323 } 08324 else 08325 { 08326 if (amqpvalue_set_composite_item(sasl_challenge_instance->composite_value, 0, challenge_amqp_value) != 0) 08327 { 08328 result = __LINE__; 08329 } 08330 else 08331 { 08332 result = 0; 08333 } 08334 08335 amqpvalue_destroy(challenge_amqp_value); 08336 } 08337 } 08338 08339 return result; 08340 } 08341 08342 08343 /* sasl-response */ 08344 08345 typedef struct SASL_RESPONSE_INSTANCE_TAG 08346 { 08347 AMQP_VALUE composite_value; 08348 } SASL_RESPONSE_INSTANCE; 08349 08350 static SASL_RESPONSE_HANDLE sasl_response_create_internal(void) 08351 { 08352 SASL_RESPONSE_INSTANCE* sasl_response_instance = (SASL_RESPONSE_INSTANCE*)amqpalloc_malloc(sizeof(SASL_RESPONSE_INSTANCE)); 08353 if (sasl_response_instance != NULL) 08354 { 08355 sasl_response_instance->composite_value = NULL; 08356 } 08357 08358 return sasl_response_instance; 08359 } 08360 08361 SASL_RESPONSE_HANDLE sasl_response_create(amqp_binary response_value) 08362 { 08363 SASL_RESPONSE_INSTANCE* sasl_response_instance = (SASL_RESPONSE_INSTANCE*)amqpalloc_malloc(sizeof(SASL_RESPONSE_INSTANCE)); 08364 if (sasl_response_instance != NULL) 08365 { 08366 sasl_response_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(67); 08367 if (sasl_response_instance->composite_value == NULL) 08368 { 08369 amqpalloc_free(sasl_response_instance); 08370 sasl_response_instance = NULL; 08371 } 08372 else 08373 { 08374 AMQP_VALUE response_amqp_value; 08375 int result = 0; 08376 08377 response_amqp_value = amqpvalue_create_binary(response_value); 08378 if ((result == 0) && (amqpvalue_set_composite_item(sasl_response_instance->composite_value, 0, response_amqp_value) != 0)) 08379 { 08380 result = __LINE__; 08381 } 08382 08383 amqpvalue_destroy(response_amqp_value); 08384 } 08385 } 08386 08387 return sasl_response_instance; 08388 } 08389 08390 SASL_RESPONSE_HANDLE sasl_response_clone(SASL_RESPONSE_HANDLE value) 08391 { 08392 SASL_RESPONSE_INSTANCE* sasl_response_instance = (SASL_RESPONSE_INSTANCE*)amqpalloc_malloc(sizeof(SASL_RESPONSE_INSTANCE)); 08393 if (sasl_response_instance != NULL) 08394 { 08395 sasl_response_instance->composite_value = amqpvalue_clone(((SASL_RESPONSE_INSTANCE*)value)->composite_value); 08396 if (sasl_response_instance->composite_value == NULL) 08397 { 08398 amqpalloc_free(sasl_response_instance); 08399 sasl_response_instance = NULL; 08400 } 08401 } 08402 08403 return sasl_response_instance; 08404 } 08405 08406 void sasl_response_destroy(SASL_RESPONSE_HANDLE sasl_response) 08407 { 08408 if (sasl_response != NULL) 08409 { 08410 SASL_RESPONSE_INSTANCE* sasl_response_instance = (SASL_RESPONSE_INSTANCE*)sasl_response; 08411 amqpvalue_destroy(sasl_response_instance->composite_value); 08412 amqpalloc_free(sasl_response_instance); 08413 } 08414 } 08415 08416 AMQP_VALUE amqpvalue_create_sasl_response(SASL_RESPONSE_HANDLE sasl_response) 08417 { 08418 AMQP_VALUE result; 08419 08420 if (sasl_response == NULL) 08421 { 08422 result = NULL; 08423 } 08424 else 08425 { 08426 SASL_RESPONSE_INSTANCE* sasl_response_instance = (SASL_RESPONSE_INSTANCE*)sasl_response; 08427 result = amqpvalue_clone(sasl_response_instance->composite_value); 08428 } 08429 08430 return result; 08431 } 08432 08433 bool is_sasl_response_type_by_descriptor(AMQP_VALUE descriptor) 08434 { 08435 bool result; 08436 08437 uint64_t descriptor_ulong; 08438 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 08439 (descriptor_ulong == 67)) 08440 { 08441 result = true; 08442 } 08443 else 08444 { 08445 result = false; 08446 } 08447 08448 return result; 08449 } 08450 08451 08452 int amqpvalue_get_sasl_response(AMQP_VALUE value, SASL_RESPONSE_HANDLE* sasl_response_handle) 08453 { 08454 int result; 08455 SASL_RESPONSE_INSTANCE* sasl_response_instance = (SASL_RESPONSE_INSTANCE*)sasl_response_create_internal(); 08456 *sasl_response_handle = sasl_response_instance; 08457 if (*sasl_response_handle == NULL) 08458 { 08459 result = __LINE__; 08460 } 08461 else 08462 { 08463 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 08464 if (list_value == NULL) 08465 { 08466 sasl_response_destroy(*sasl_response_handle); 08467 result = __LINE__; 08468 } 08469 else 08470 { 08471 do 08472 { 08473 AMQP_VALUE item_value; 08474 /* response */ 08475 item_value = amqpvalue_get_list_item(list_value, 0); 08476 if (item_value == NULL) 08477 { 08478 { 08479 sasl_response_destroy(*sasl_response_handle); 08480 result = __LINE__; 08481 break; 08482 } 08483 } 08484 else 08485 { 08486 amqp_binary response; 08487 if (amqpvalue_get_binary(item_value, &response) != 0) 08488 { 08489 sasl_response_destroy(*sasl_response_handle); 08490 result = __LINE__; 08491 break; 08492 } 08493 08494 amqpvalue_destroy(item_value); 08495 } 08496 08497 sasl_response_instance->composite_value = amqpvalue_clone(value); 08498 08499 result = 0; 08500 } while (0); 08501 } 08502 } 08503 08504 return result; 08505 } 08506 08507 int sasl_response_get_response(SASL_RESPONSE_HANDLE sasl_response, amqp_binary* response_value) 08508 { 08509 int result; 08510 08511 if (sasl_response == NULL) 08512 { 08513 result = __LINE__; 08514 } 08515 else 08516 { 08517 SASL_RESPONSE_INSTANCE* sasl_response_instance = (SASL_RESPONSE_INSTANCE*)sasl_response; 08518 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_response_instance->composite_value, 0); 08519 if (item_value == NULL) 08520 { 08521 result = __LINE__; 08522 } 08523 else 08524 { 08525 if (amqpvalue_get_binary(item_value, response_value) != 0) 08526 { 08527 result = __LINE__; 08528 } 08529 else 08530 { 08531 result = 0; 08532 } 08533 } 08534 } 08535 08536 return result; 08537 } 08538 08539 int sasl_response_set_response(SASL_RESPONSE_HANDLE sasl_response, amqp_binary response_value) 08540 { 08541 int result; 08542 08543 if (sasl_response == NULL) 08544 { 08545 result = __LINE__; 08546 } 08547 else 08548 { 08549 SASL_RESPONSE_INSTANCE* sasl_response_instance = (SASL_RESPONSE_INSTANCE*)sasl_response; 08550 AMQP_VALUE response_amqp_value = amqpvalue_create_binary(response_value); 08551 if (response_amqp_value == NULL) 08552 { 08553 result = __LINE__; 08554 } 08555 else 08556 { 08557 if (amqpvalue_set_composite_item(sasl_response_instance->composite_value, 0, response_amqp_value) != 0) 08558 { 08559 result = __LINE__; 08560 } 08561 else 08562 { 08563 result = 0; 08564 } 08565 08566 amqpvalue_destroy(response_amqp_value); 08567 } 08568 } 08569 08570 return result; 08571 } 08572 08573 08574 /* sasl-outcome */ 08575 08576 typedef struct SASL_OUTCOME_INSTANCE_TAG 08577 { 08578 AMQP_VALUE composite_value; 08579 } SASL_OUTCOME_INSTANCE; 08580 08581 static SASL_OUTCOME_HANDLE sasl_outcome_create_internal(void) 08582 { 08583 SASL_OUTCOME_INSTANCE* sasl_outcome_instance = (SASL_OUTCOME_INSTANCE*)amqpalloc_malloc(sizeof(SASL_OUTCOME_INSTANCE)); 08584 if (sasl_outcome_instance != NULL) 08585 { 08586 sasl_outcome_instance->composite_value = NULL; 08587 } 08588 08589 return sasl_outcome_instance; 08590 } 08591 08592 SASL_OUTCOME_HANDLE sasl_outcome_create(sasl_code code_value) 08593 { 08594 SASL_OUTCOME_INSTANCE* sasl_outcome_instance = (SASL_OUTCOME_INSTANCE*)amqpalloc_malloc(sizeof(SASL_OUTCOME_INSTANCE)); 08595 if (sasl_outcome_instance != NULL) 08596 { 08597 sasl_outcome_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(68); 08598 if (sasl_outcome_instance->composite_value == NULL) 08599 { 08600 amqpalloc_free(sasl_outcome_instance); 08601 sasl_outcome_instance = NULL; 08602 } 08603 else 08604 { 08605 AMQP_VALUE code_amqp_value; 08606 int result = 0; 08607 08608 code_amqp_value = amqpvalue_create_sasl_code(code_value); 08609 if ((result == 0) && (amqpvalue_set_composite_item(sasl_outcome_instance->composite_value, 0, code_amqp_value) != 0)) 08610 { 08611 result = __LINE__; 08612 } 08613 08614 amqpvalue_destroy(code_amqp_value); 08615 } 08616 } 08617 08618 return sasl_outcome_instance; 08619 } 08620 08621 SASL_OUTCOME_HANDLE sasl_outcome_clone(SASL_OUTCOME_HANDLE value) 08622 { 08623 SASL_OUTCOME_INSTANCE* sasl_outcome_instance = (SASL_OUTCOME_INSTANCE*)amqpalloc_malloc(sizeof(SASL_OUTCOME_INSTANCE)); 08624 if (sasl_outcome_instance != NULL) 08625 { 08626 sasl_outcome_instance->composite_value = amqpvalue_clone(((SASL_OUTCOME_INSTANCE*)value)->composite_value); 08627 if (sasl_outcome_instance->composite_value == NULL) 08628 { 08629 amqpalloc_free(sasl_outcome_instance); 08630 sasl_outcome_instance = NULL; 08631 } 08632 } 08633 08634 return sasl_outcome_instance; 08635 } 08636 08637 void sasl_outcome_destroy(SASL_OUTCOME_HANDLE sasl_outcome) 08638 { 08639 if (sasl_outcome != NULL) 08640 { 08641 SASL_OUTCOME_INSTANCE* sasl_outcome_instance = (SASL_OUTCOME_INSTANCE*)sasl_outcome; 08642 amqpvalue_destroy(sasl_outcome_instance->composite_value); 08643 amqpalloc_free(sasl_outcome_instance); 08644 } 08645 } 08646 08647 AMQP_VALUE amqpvalue_create_sasl_outcome(SASL_OUTCOME_HANDLE sasl_outcome) 08648 { 08649 AMQP_VALUE result; 08650 08651 if (sasl_outcome == NULL) 08652 { 08653 result = NULL; 08654 } 08655 else 08656 { 08657 SASL_OUTCOME_INSTANCE* sasl_outcome_instance = (SASL_OUTCOME_INSTANCE*)sasl_outcome; 08658 result = amqpvalue_clone(sasl_outcome_instance->composite_value); 08659 } 08660 08661 return result; 08662 } 08663 08664 bool is_sasl_outcome_type_by_descriptor(AMQP_VALUE descriptor) 08665 { 08666 bool result; 08667 08668 uint64_t descriptor_ulong; 08669 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 08670 (descriptor_ulong == 68)) 08671 { 08672 result = true; 08673 } 08674 else 08675 { 08676 result = false; 08677 } 08678 08679 return result; 08680 } 08681 08682 08683 int amqpvalue_get_sasl_outcome(AMQP_VALUE value, SASL_OUTCOME_HANDLE* sasl_outcome_handle) 08684 { 08685 int result; 08686 SASL_OUTCOME_INSTANCE* sasl_outcome_instance = (SASL_OUTCOME_INSTANCE*)sasl_outcome_create_internal(); 08687 *sasl_outcome_handle = sasl_outcome_instance; 08688 if (*sasl_outcome_handle == NULL) 08689 { 08690 result = __LINE__; 08691 } 08692 else 08693 { 08694 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 08695 if (list_value == NULL) 08696 { 08697 sasl_outcome_destroy(*sasl_outcome_handle); 08698 result = __LINE__; 08699 } 08700 else 08701 { 08702 do 08703 { 08704 AMQP_VALUE item_value; 08705 /* code */ 08706 item_value = amqpvalue_get_list_item(list_value, 0); 08707 if (item_value == NULL) 08708 { 08709 { 08710 sasl_outcome_destroy(*sasl_outcome_handle); 08711 result = __LINE__; 08712 break; 08713 } 08714 } 08715 else 08716 { 08717 sasl_code code; 08718 if (amqpvalue_get_sasl_code(item_value, &code) != 0) 08719 { 08720 sasl_outcome_destroy(*sasl_outcome_handle); 08721 result = __LINE__; 08722 break; 08723 } 08724 08725 amqpvalue_destroy(item_value); 08726 } 08727 /* additional-data */ 08728 item_value = amqpvalue_get_list_item(list_value, 1); 08729 if (item_value == NULL) 08730 { 08731 /* do nothing */ 08732 } 08733 else 08734 { 08735 amqp_binary additional_data; 08736 if (amqpvalue_get_binary(item_value, &additional_data) != 0) 08737 { 08738 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 08739 { 08740 sasl_outcome_destroy(*sasl_outcome_handle); 08741 result = __LINE__; 08742 break; 08743 } 08744 } 08745 08746 amqpvalue_destroy(item_value); 08747 } 08748 08749 sasl_outcome_instance->composite_value = amqpvalue_clone(value); 08750 08751 result = 0; 08752 } while (0); 08753 } 08754 } 08755 08756 return result; 08757 } 08758 08759 int sasl_outcome_get_code(SASL_OUTCOME_HANDLE sasl_outcome, sasl_code* code_value) 08760 { 08761 int result; 08762 08763 if (sasl_outcome == NULL) 08764 { 08765 result = __LINE__; 08766 } 08767 else 08768 { 08769 SASL_OUTCOME_INSTANCE* sasl_outcome_instance = (SASL_OUTCOME_INSTANCE*)sasl_outcome; 08770 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_outcome_instance->composite_value, 0); 08771 if (item_value == NULL) 08772 { 08773 result = __LINE__; 08774 } 08775 else 08776 { 08777 if (amqpvalue_get_sasl_code(item_value, code_value) != 0) 08778 { 08779 result = __LINE__; 08780 } 08781 else 08782 { 08783 result = 0; 08784 } 08785 } 08786 } 08787 08788 return result; 08789 } 08790 08791 int sasl_outcome_set_code(SASL_OUTCOME_HANDLE sasl_outcome, sasl_code code_value) 08792 { 08793 int result; 08794 08795 if (sasl_outcome == NULL) 08796 { 08797 result = __LINE__; 08798 } 08799 else 08800 { 08801 SASL_OUTCOME_INSTANCE* sasl_outcome_instance = (SASL_OUTCOME_INSTANCE*)sasl_outcome; 08802 AMQP_VALUE code_amqp_value = amqpvalue_create_sasl_code(code_value); 08803 if (code_amqp_value == NULL) 08804 { 08805 result = __LINE__; 08806 } 08807 else 08808 { 08809 if (amqpvalue_set_composite_item(sasl_outcome_instance->composite_value, 0, code_amqp_value) != 0) 08810 { 08811 result = __LINE__; 08812 } 08813 else 08814 { 08815 result = 0; 08816 } 08817 08818 amqpvalue_destroy(code_amqp_value); 08819 } 08820 } 08821 08822 return result; 08823 } 08824 08825 int sasl_outcome_get_additional_data(SASL_OUTCOME_HANDLE sasl_outcome, amqp_binary* additional_data_value) 08826 { 08827 int result; 08828 08829 if (sasl_outcome == NULL) 08830 { 08831 result = __LINE__; 08832 } 08833 else 08834 { 08835 SASL_OUTCOME_INSTANCE* sasl_outcome_instance = (SASL_OUTCOME_INSTANCE*)sasl_outcome; 08836 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(sasl_outcome_instance->composite_value, 1); 08837 if (item_value == NULL) 08838 { 08839 result = __LINE__; 08840 } 08841 else 08842 { 08843 if (amqpvalue_get_binary(item_value, additional_data_value) != 0) 08844 { 08845 result = __LINE__; 08846 } 08847 else 08848 { 08849 result = 0; 08850 } 08851 } 08852 } 08853 08854 return result; 08855 } 08856 08857 int sasl_outcome_set_additional_data(SASL_OUTCOME_HANDLE sasl_outcome, amqp_binary additional_data_value) 08858 { 08859 int result; 08860 08861 if (sasl_outcome == NULL) 08862 { 08863 result = __LINE__; 08864 } 08865 else 08866 { 08867 SASL_OUTCOME_INSTANCE* sasl_outcome_instance = (SASL_OUTCOME_INSTANCE*)sasl_outcome; 08868 AMQP_VALUE additional_data_amqp_value = amqpvalue_create_binary(additional_data_value); 08869 if (additional_data_amqp_value == NULL) 08870 { 08871 result = __LINE__; 08872 } 08873 else 08874 { 08875 if (amqpvalue_set_composite_item(sasl_outcome_instance->composite_value, 1, additional_data_amqp_value) != 0) 08876 { 08877 result = __LINE__; 08878 } 08879 else 08880 { 08881 result = 0; 08882 } 08883 08884 amqpvalue_destroy(additional_data_amqp_value); 08885 } 08886 } 08887 08888 return result; 08889 } 08890 08891 08892 /* terminus-durability */ 08893 08894 AMQP_VALUE amqpvalue_create_terminus_durability(terminus_durability value) 08895 { 08896 return amqpvalue_create_uint(value); 08897 } 08898 08899 /* terminus-expiry-policy */ 08900 08901 AMQP_VALUE amqpvalue_create_terminus_expiry_policy(terminus_expiry_policy value) 08902 { 08903 return amqpvalue_create_symbol(value); 08904 } 08905 08906 /* node-properties */ 08907 08908 AMQP_VALUE amqpvalue_create_node_properties(node_properties value) 08909 { 08910 return amqpvalue_create_fields(value); 08911 } 08912 08913 /* filter-set */ 08914 08915 AMQP_VALUE amqpvalue_create_filter_set(AMQP_VALUE value) 08916 { 08917 return amqpvalue_clone(value); 08918 } 08919 08920 /* source */ 08921 08922 typedef struct SOURCE_INSTANCE_TAG 08923 { 08924 AMQP_VALUE composite_value; 08925 } SOURCE_INSTANCE; 08926 08927 static SOURCE_HANDLE source_create_internal(void) 08928 { 08929 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)amqpalloc_malloc(sizeof(SOURCE_INSTANCE)); 08930 if (source_instance != NULL) 08931 { 08932 source_instance->composite_value = NULL; 08933 } 08934 08935 return source_instance; 08936 } 08937 08938 SOURCE_HANDLE source_create(void) 08939 { 08940 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)amqpalloc_malloc(sizeof(SOURCE_INSTANCE)); 08941 if (source_instance != NULL) 08942 { 08943 source_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(40); 08944 if (source_instance->composite_value == NULL) 08945 { 08946 amqpalloc_free(source_instance); 08947 source_instance = NULL; 08948 } 08949 } 08950 08951 return source_instance; 08952 } 08953 08954 SOURCE_HANDLE source_clone(SOURCE_HANDLE value) 08955 { 08956 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)amqpalloc_malloc(sizeof(SOURCE_INSTANCE)); 08957 if (source_instance != NULL) 08958 { 08959 source_instance->composite_value = amqpvalue_clone(((SOURCE_INSTANCE*)value)->composite_value); 08960 if (source_instance->composite_value == NULL) 08961 { 08962 amqpalloc_free(source_instance); 08963 source_instance = NULL; 08964 } 08965 } 08966 08967 return source_instance; 08968 } 08969 08970 void source_destroy(SOURCE_HANDLE source) 08971 { 08972 if (source != NULL) 08973 { 08974 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 08975 amqpvalue_destroy(source_instance->composite_value); 08976 amqpalloc_free(source_instance); 08977 } 08978 } 08979 08980 AMQP_VALUE amqpvalue_create_source(SOURCE_HANDLE source) 08981 { 08982 AMQP_VALUE result; 08983 08984 if (source == NULL) 08985 { 08986 result = NULL; 08987 } 08988 else 08989 { 08990 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 08991 result = amqpvalue_clone(source_instance->composite_value); 08992 } 08993 08994 return result; 08995 } 08996 08997 bool is_source_type_by_descriptor(AMQP_VALUE descriptor) 08998 { 08999 bool result; 09000 09001 uint64_t descriptor_ulong; 09002 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 09003 (descriptor_ulong == 40)) 09004 { 09005 result = true; 09006 } 09007 else 09008 { 09009 result = false; 09010 } 09011 09012 return result; 09013 } 09014 09015 09016 int amqpvalue_get_source(AMQP_VALUE value, SOURCE_HANDLE* source_handle) 09017 { 09018 int result; 09019 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source_create_internal(); 09020 *source_handle = source_instance; 09021 if (*source_handle == NULL) 09022 { 09023 result = __LINE__; 09024 } 09025 else 09026 { 09027 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 09028 if (list_value == NULL) 09029 { 09030 source_destroy(*source_handle); 09031 result = __LINE__; 09032 } 09033 else 09034 { 09035 do 09036 { 09037 AMQP_VALUE item_value; 09038 /* address */ 09039 item_value = amqpvalue_get_list_item(list_value, 0); 09040 if (item_value == NULL) 09041 { 09042 /* do nothing */ 09043 } 09044 else 09045 { 09046 amqpvalue_destroy(item_value); 09047 } 09048 /* durable */ 09049 item_value = amqpvalue_get_list_item(list_value, 1); 09050 if (item_value == NULL) 09051 { 09052 /* do nothing */ 09053 } 09054 else 09055 { 09056 terminus_durability durable; 09057 if (amqpvalue_get_terminus_durability(item_value, &durable) != 0) 09058 { 09059 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 09060 { 09061 source_destroy(*source_handle); 09062 result = __LINE__; 09063 break; 09064 } 09065 } 09066 09067 amqpvalue_destroy(item_value); 09068 } 09069 /* expiry-policy */ 09070 item_value = amqpvalue_get_list_item(list_value, 2); 09071 if (item_value == NULL) 09072 { 09073 /* do nothing */ 09074 } 09075 else 09076 { 09077 terminus_expiry_policy expiry_policy; 09078 if (amqpvalue_get_terminus_expiry_policy(item_value, &expiry_policy) != 0) 09079 { 09080 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 09081 { 09082 source_destroy(*source_handle); 09083 result = __LINE__; 09084 break; 09085 } 09086 } 09087 09088 amqpvalue_destroy(item_value); 09089 } 09090 /* timeout */ 09091 item_value = amqpvalue_get_list_item(list_value, 3); 09092 if (item_value == NULL) 09093 { 09094 /* do nothing */ 09095 } 09096 else 09097 { 09098 seconds timeout; 09099 if (amqpvalue_get_seconds(item_value, &timeout) != 0) 09100 { 09101 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 09102 { 09103 source_destroy(*source_handle); 09104 result = __LINE__; 09105 break; 09106 } 09107 } 09108 09109 amqpvalue_destroy(item_value); 09110 } 09111 /* dynamic */ 09112 item_value = amqpvalue_get_list_item(list_value, 4); 09113 if (item_value == NULL) 09114 { 09115 /* do nothing */ 09116 } 09117 else 09118 { 09119 bool dynamic; 09120 if (amqpvalue_get_boolean(item_value, &dynamic) != 0) 09121 { 09122 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 09123 { 09124 source_destroy(*source_handle); 09125 result = __LINE__; 09126 break; 09127 } 09128 } 09129 09130 amqpvalue_destroy(item_value); 09131 } 09132 /* dynamic-node-properties */ 09133 item_value = amqpvalue_get_list_item(list_value, 5); 09134 if (item_value == NULL) 09135 { 09136 /* do nothing */ 09137 } 09138 else 09139 { 09140 node_properties dynamic_node_properties; 09141 if (amqpvalue_get_node_properties(item_value, &dynamic_node_properties) != 0) 09142 { 09143 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 09144 { 09145 source_destroy(*source_handle); 09146 result = __LINE__; 09147 break; 09148 } 09149 } 09150 09151 amqpvalue_destroy(item_value); 09152 } 09153 /* distribution-mode */ 09154 item_value = amqpvalue_get_list_item(list_value, 6); 09155 if (item_value == NULL) 09156 { 09157 /* do nothing */ 09158 } 09159 else 09160 { 09161 const char* distribution_mode; 09162 if (amqpvalue_get_symbol(item_value, &distribution_mode) != 0) 09163 { 09164 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 09165 { 09166 source_destroy(*source_handle); 09167 result = __LINE__; 09168 break; 09169 } 09170 } 09171 09172 amqpvalue_destroy(item_value); 09173 } 09174 /* filter */ 09175 item_value = amqpvalue_get_list_item(list_value, 7); 09176 if (item_value == NULL) 09177 { 09178 /* do nothing */ 09179 } 09180 else 09181 { 09182 filter_set filter; 09183 if (amqpvalue_get_filter_set(item_value, &filter) != 0) 09184 { 09185 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 09186 { 09187 source_destroy(*source_handle); 09188 result = __LINE__; 09189 break; 09190 } 09191 } 09192 09193 amqpvalue_destroy(item_value); 09194 } 09195 /* default-outcome */ 09196 item_value = amqpvalue_get_list_item(list_value, 8); 09197 if (item_value == NULL) 09198 { 09199 /* do nothing */ 09200 } 09201 else 09202 { 09203 amqpvalue_destroy(item_value); 09204 } 09205 /* outcomes */ 09206 item_value = amqpvalue_get_list_item(list_value, 9); 09207 if (item_value == NULL) 09208 { 09209 /* do nothing */ 09210 } 09211 else 09212 { 09213 const char* outcomes; 09214 AMQP_VALUE outcomes_array; 09215 if ((amqpvalue_get_array(item_value, &outcomes_array) != 0) && 09216 (amqpvalue_get_symbol(item_value, &outcomes) != 0)) 09217 { 09218 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 09219 { 09220 source_destroy(*source_handle); 09221 result = __LINE__; 09222 break; 09223 } 09224 } 09225 09226 amqpvalue_destroy(item_value); 09227 } 09228 /* capabilities */ 09229 item_value = amqpvalue_get_list_item(list_value, 10); 09230 if (item_value == NULL) 09231 { 09232 /* do nothing */ 09233 } 09234 else 09235 { 09236 const char* capabilities; 09237 AMQP_VALUE capabilities_array; 09238 if ((amqpvalue_get_array(item_value, &capabilities_array) != 0) && 09239 (amqpvalue_get_symbol(item_value, &capabilities) != 0)) 09240 { 09241 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 09242 { 09243 source_destroy(*source_handle); 09244 result = __LINE__; 09245 break; 09246 } 09247 } 09248 09249 amqpvalue_destroy(item_value); 09250 } 09251 09252 source_instance->composite_value = amqpvalue_clone(value); 09253 09254 result = 0; 09255 } while (0); 09256 } 09257 } 09258 09259 return result; 09260 } 09261 09262 int source_get_address(SOURCE_HANDLE source, AMQP_VALUE* address_value) 09263 { 09264 int result; 09265 09266 if (source == NULL) 09267 { 09268 result = __LINE__; 09269 } 09270 else 09271 { 09272 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09273 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 0); 09274 if (item_value == NULL) 09275 { 09276 result = __LINE__; 09277 } 09278 else 09279 { 09280 *address_value = item_value; 09281 result = 0; 09282 } 09283 } 09284 09285 return result; 09286 } 09287 09288 int source_set_address(SOURCE_HANDLE source, AMQP_VALUE address_value) 09289 { 09290 int result; 09291 09292 if (source == NULL) 09293 { 09294 result = __LINE__; 09295 } 09296 else 09297 { 09298 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09299 AMQP_VALUE address_amqp_value = amqpvalue_clone(address_value); 09300 if (address_amqp_value == NULL) 09301 { 09302 result = __LINE__; 09303 } 09304 else 09305 { 09306 if (amqpvalue_set_composite_item(source_instance->composite_value, 0, address_amqp_value) != 0) 09307 { 09308 result = __LINE__; 09309 } 09310 else 09311 { 09312 result = 0; 09313 } 09314 09315 amqpvalue_destroy(address_amqp_value); 09316 } 09317 } 09318 09319 return result; 09320 } 09321 09322 int source_get_durable(SOURCE_HANDLE source, terminus_durability* durable_value) 09323 { 09324 int result; 09325 09326 if (source == NULL) 09327 { 09328 result = __LINE__; 09329 } 09330 else 09331 { 09332 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09333 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 1); 09334 if (item_value == NULL) 09335 { 09336 result = __LINE__; 09337 } 09338 else 09339 { 09340 if (amqpvalue_get_terminus_durability(item_value, durable_value) != 0) 09341 { 09342 result = __LINE__; 09343 } 09344 else 09345 { 09346 result = 0; 09347 } 09348 } 09349 } 09350 09351 return result; 09352 } 09353 09354 int source_set_durable(SOURCE_HANDLE source, terminus_durability durable_value) 09355 { 09356 int result; 09357 09358 if (source == NULL) 09359 { 09360 result = __LINE__; 09361 } 09362 else 09363 { 09364 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09365 AMQP_VALUE durable_amqp_value = amqpvalue_create_terminus_durability(durable_value); 09366 if (durable_amqp_value == NULL) 09367 { 09368 result = __LINE__; 09369 } 09370 else 09371 { 09372 if (amqpvalue_set_composite_item(source_instance->composite_value, 1, durable_amqp_value) != 0) 09373 { 09374 result = __LINE__; 09375 } 09376 else 09377 { 09378 result = 0; 09379 } 09380 09381 amqpvalue_destroy(durable_amqp_value); 09382 } 09383 } 09384 09385 return result; 09386 } 09387 09388 int source_get_expiry_policy(SOURCE_HANDLE source, terminus_expiry_policy* expiry_policy_value) 09389 { 09390 int result; 09391 09392 if (source == NULL) 09393 { 09394 result = __LINE__; 09395 } 09396 else 09397 { 09398 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09399 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 2); 09400 if (item_value == NULL) 09401 { 09402 result = __LINE__; 09403 } 09404 else 09405 { 09406 if (amqpvalue_get_terminus_expiry_policy(item_value, expiry_policy_value) != 0) 09407 { 09408 result = __LINE__; 09409 } 09410 else 09411 { 09412 result = 0; 09413 } 09414 } 09415 } 09416 09417 return result; 09418 } 09419 09420 int source_set_expiry_policy(SOURCE_HANDLE source, terminus_expiry_policy expiry_policy_value) 09421 { 09422 int result; 09423 09424 if (source == NULL) 09425 { 09426 result = __LINE__; 09427 } 09428 else 09429 { 09430 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09431 AMQP_VALUE expiry_policy_amqp_value = amqpvalue_create_terminus_expiry_policy(expiry_policy_value); 09432 if (expiry_policy_amqp_value == NULL) 09433 { 09434 result = __LINE__; 09435 } 09436 else 09437 { 09438 if (amqpvalue_set_composite_item(source_instance->composite_value, 2, expiry_policy_amqp_value) != 0) 09439 { 09440 result = __LINE__; 09441 } 09442 else 09443 { 09444 result = 0; 09445 } 09446 09447 amqpvalue_destroy(expiry_policy_amqp_value); 09448 } 09449 } 09450 09451 return result; 09452 } 09453 09454 int source_get_timeout(SOURCE_HANDLE source, seconds* timeout_value) 09455 { 09456 int result; 09457 09458 if (source == NULL) 09459 { 09460 result = __LINE__; 09461 } 09462 else 09463 { 09464 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09465 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 3); 09466 if (item_value == NULL) 09467 { 09468 result = __LINE__; 09469 } 09470 else 09471 { 09472 if (amqpvalue_get_seconds(item_value, timeout_value) != 0) 09473 { 09474 result = __LINE__; 09475 } 09476 else 09477 { 09478 result = 0; 09479 } 09480 } 09481 } 09482 09483 return result; 09484 } 09485 09486 int source_set_timeout(SOURCE_HANDLE source, seconds timeout_value) 09487 { 09488 int result; 09489 09490 if (source == NULL) 09491 { 09492 result = __LINE__; 09493 } 09494 else 09495 { 09496 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09497 AMQP_VALUE timeout_amqp_value = amqpvalue_create_seconds(timeout_value); 09498 if (timeout_amqp_value == NULL) 09499 { 09500 result = __LINE__; 09501 } 09502 else 09503 { 09504 if (amqpvalue_set_composite_item(source_instance->composite_value, 3, timeout_amqp_value) != 0) 09505 { 09506 result = __LINE__; 09507 } 09508 else 09509 { 09510 result = 0; 09511 } 09512 09513 amqpvalue_destroy(timeout_amqp_value); 09514 } 09515 } 09516 09517 return result; 09518 } 09519 09520 int source_get_dynamic(SOURCE_HANDLE source, bool* dynamic_value) 09521 { 09522 int result; 09523 09524 if (source == NULL) 09525 { 09526 result = __LINE__; 09527 } 09528 else 09529 { 09530 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09531 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 4); 09532 if (item_value == NULL) 09533 { 09534 result = __LINE__; 09535 } 09536 else 09537 { 09538 if (amqpvalue_get_boolean(item_value, dynamic_value) != 0) 09539 { 09540 result = __LINE__; 09541 } 09542 else 09543 { 09544 result = 0; 09545 } 09546 } 09547 } 09548 09549 return result; 09550 } 09551 09552 int source_set_dynamic(SOURCE_HANDLE source, bool dynamic_value) 09553 { 09554 int result; 09555 09556 if (source == NULL) 09557 { 09558 result = __LINE__; 09559 } 09560 else 09561 { 09562 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09563 AMQP_VALUE dynamic_amqp_value = amqpvalue_create_boolean(dynamic_value); 09564 if (dynamic_amqp_value == NULL) 09565 { 09566 result = __LINE__; 09567 } 09568 else 09569 { 09570 if (amqpvalue_set_composite_item(source_instance->composite_value, 4, dynamic_amqp_value) != 0) 09571 { 09572 result = __LINE__; 09573 } 09574 else 09575 { 09576 result = 0; 09577 } 09578 09579 amqpvalue_destroy(dynamic_amqp_value); 09580 } 09581 } 09582 09583 return result; 09584 } 09585 09586 int source_get_dynamic_node_properties(SOURCE_HANDLE source, node_properties* dynamic_node_properties_value) 09587 { 09588 int result; 09589 09590 if (source == NULL) 09591 { 09592 result = __LINE__; 09593 } 09594 else 09595 { 09596 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09597 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 5); 09598 if (item_value == NULL) 09599 { 09600 result = __LINE__; 09601 } 09602 else 09603 { 09604 if (amqpvalue_get_node_properties(item_value, dynamic_node_properties_value) != 0) 09605 { 09606 result = __LINE__; 09607 } 09608 else 09609 { 09610 result = 0; 09611 } 09612 } 09613 } 09614 09615 return result; 09616 } 09617 09618 int source_set_dynamic_node_properties(SOURCE_HANDLE source, node_properties dynamic_node_properties_value) 09619 { 09620 int result; 09621 09622 if (source == NULL) 09623 { 09624 result = __LINE__; 09625 } 09626 else 09627 { 09628 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09629 AMQP_VALUE dynamic_node_properties_amqp_value = amqpvalue_create_node_properties(dynamic_node_properties_value); 09630 if (dynamic_node_properties_amqp_value == NULL) 09631 { 09632 result = __LINE__; 09633 } 09634 else 09635 { 09636 if (amqpvalue_set_composite_item(source_instance->composite_value, 5, dynamic_node_properties_amqp_value) != 0) 09637 { 09638 result = __LINE__; 09639 } 09640 else 09641 { 09642 result = 0; 09643 } 09644 09645 amqpvalue_destroy(dynamic_node_properties_amqp_value); 09646 } 09647 } 09648 09649 return result; 09650 } 09651 09652 int source_get_distribution_mode(SOURCE_HANDLE source, const char** distribution_mode_value) 09653 { 09654 int result; 09655 09656 if (source == NULL) 09657 { 09658 result = __LINE__; 09659 } 09660 else 09661 { 09662 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09663 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 6); 09664 if (item_value == NULL) 09665 { 09666 result = __LINE__; 09667 } 09668 else 09669 { 09670 if (amqpvalue_get_symbol(item_value, distribution_mode_value) != 0) 09671 { 09672 result = __LINE__; 09673 } 09674 else 09675 { 09676 result = 0; 09677 } 09678 } 09679 } 09680 09681 return result; 09682 } 09683 09684 int source_set_distribution_mode(SOURCE_HANDLE source, const char* distribution_mode_value) 09685 { 09686 int result; 09687 09688 if (source == NULL) 09689 { 09690 result = __LINE__; 09691 } 09692 else 09693 { 09694 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09695 AMQP_VALUE distribution_mode_amqp_value = amqpvalue_create_symbol(distribution_mode_value); 09696 if (distribution_mode_amqp_value == NULL) 09697 { 09698 result = __LINE__; 09699 } 09700 else 09701 { 09702 if (amqpvalue_set_composite_item(source_instance->composite_value, 6, distribution_mode_amqp_value) != 0) 09703 { 09704 result = __LINE__; 09705 } 09706 else 09707 { 09708 result = 0; 09709 } 09710 09711 amqpvalue_destroy(distribution_mode_amqp_value); 09712 } 09713 } 09714 09715 return result; 09716 } 09717 09718 int source_get_filter(SOURCE_HANDLE source, filter_set* filter_value) 09719 { 09720 int result; 09721 09722 if (source == NULL) 09723 { 09724 result = __LINE__; 09725 } 09726 else 09727 { 09728 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09729 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 7); 09730 if (item_value == NULL) 09731 { 09732 result = __LINE__; 09733 } 09734 else 09735 { 09736 if (amqpvalue_get_filter_set(item_value, filter_value) != 0) 09737 { 09738 result = __LINE__; 09739 } 09740 else 09741 { 09742 result = 0; 09743 } 09744 } 09745 } 09746 09747 return result; 09748 } 09749 09750 int source_set_filter(SOURCE_HANDLE source, filter_set filter_value) 09751 { 09752 int result; 09753 09754 if (source == NULL) 09755 { 09756 result = __LINE__; 09757 } 09758 else 09759 { 09760 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09761 AMQP_VALUE filter_amqp_value = amqpvalue_create_filter_set(filter_value); 09762 if (filter_amqp_value == NULL) 09763 { 09764 result = __LINE__; 09765 } 09766 else 09767 { 09768 if (amqpvalue_set_composite_item(source_instance->composite_value, 7, filter_amqp_value) != 0) 09769 { 09770 result = __LINE__; 09771 } 09772 else 09773 { 09774 result = 0; 09775 } 09776 09777 amqpvalue_destroy(filter_amqp_value); 09778 } 09779 } 09780 09781 return result; 09782 } 09783 09784 int source_get_default_outcome(SOURCE_HANDLE source, AMQP_VALUE* default_outcome_value) 09785 { 09786 int result; 09787 09788 if (source == NULL) 09789 { 09790 result = __LINE__; 09791 } 09792 else 09793 { 09794 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09795 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 8); 09796 if (item_value == NULL) 09797 { 09798 result = __LINE__; 09799 } 09800 else 09801 { 09802 *default_outcome_value = item_value; 09803 result = 0; 09804 } 09805 } 09806 09807 return result; 09808 } 09809 09810 int source_set_default_outcome(SOURCE_HANDLE source, AMQP_VALUE default_outcome_value) 09811 { 09812 int result; 09813 09814 if (source == NULL) 09815 { 09816 result = __LINE__; 09817 } 09818 else 09819 { 09820 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09821 AMQP_VALUE default_outcome_amqp_value = amqpvalue_clone(default_outcome_value); 09822 if (default_outcome_amqp_value == NULL) 09823 { 09824 result = __LINE__; 09825 } 09826 else 09827 { 09828 if (amqpvalue_set_composite_item(source_instance->composite_value, 8, default_outcome_amqp_value) != 0) 09829 { 09830 result = __LINE__; 09831 } 09832 else 09833 { 09834 result = 0; 09835 } 09836 09837 amqpvalue_destroy(default_outcome_amqp_value); 09838 } 09839 } 09840 09841 return result; 09842 } 09843 09844 int source_get_outcomes(SOURCE_HANDLE source, AMQP_VALUE* outcomes_value) 09845 { 09846 int result; 09847 09848 if (source == NULL) 09849 { 09850 result = __LINE__; 09851 } 09852 else 09853 { 09854 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09855 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 9); 09856 if (item_value == NULL) 09857 { 09858 result = __LINE__; 09859 } 09860 else 09861 { 09862 if (amqpvalue_get_array(item_value, outcomes_value) != 0) 09863 { 09864 result = __LINE__; 09865 } 09866 else 09867 { 09868 result = 0; 09869 } 09870 } 09871 } 09872 09873 return result; 09874 } 09875 09876 int source_set_outcomes(SOURCE_HANDLE source, AMQP_VALUE outcomes_value) 09877 { 09878 int result; 09879 09880 if (source == NULL) 09881 { 09882 result = __LINE__; 09883 } 09884 else 09885 { 09886 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09887 AMQP_VALUE outcomes_amqp_value = amqpvalue_clone(outcomes_value); 09888 if (outcomes_amqp_value == NULL) 09889 { 09890 result = __LINE__; 09891 } 09892 else 09893 { 09894 if (amqpvalue_set_composite_item(source_instance->composite_value, 9, outcomes_amqp_value) != 0) 09895 { 09896 result = __LINE__; 09897 } 09898 else 09899 { 09900 result = 0; 09901 } 09902 09903 amqpvalue_destroy(outcomes_amqp_value); 09904 } 09905 } 09906 09907 return result; 09908 } 09909 09910 int source_get_capabilities(SOURCE_HANDLE source, AMQP_VALUE* capabilities_value) 09911 { 09912 int result; 09913 09914 if (source == NULL) 09915 { 09916 result = __LINE__; 09917 } 09918 else 09919 { 09920 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09921 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(source_instance->composite_value, 10); 09922 if (item_value == NULL) 09923 { 09924 result = __LINE__; 09925 } 09926 else 09927 { 09928 if (amqpvalue_get_array(item_value, capabilities_value) != 0) 09929 { 09930 result = __LINE__; 09931 } 09932 else 09933 { 09934 result = 0; 09935 } 09936 } 09937 } 09938 09939 return result; 09940 } 09941 09942 int source_set_capabilities(SOURCE_HANDLE source, AMQP_VALUE capabilities_value) 09943 { 09944 int result; 09945 09946 if (source == NULL) 09947 { 09948 result = __LINE__; 09949 } 09950 else 09951 { 09952 SOURCE_INSTANCE* source_instance = (SOURCE_INSTANCE*)source; 09953 AMQP_VALUE capabilities_amqp_value = amqpvalue_clone(capabilities_value); 09954 if (capabilities_amqp_value == NULL) 09955 { 09956 result = __LINE__; 09957 } 09958 else 09959 { 09960 if (amqpvalue_set_composite_item(source_instance->composite_value, 10, capabilities_amqp_value) != 0) 09961 { 09962 result = __LINE__; 09963 } 09964 else 09965 { 09966 result = 0; 09967 } 09968 09969 amqpvalue_destroy(capabilities_amqp_value); 09970 } 09971 } 09972 09973 return result; 09974 } 09975 09976 09977 /* target */ 09978 09979 typedef struct TARGET_INSTANCE_TAG 09980 { 09981 AMQP_VALUE composite_value; 09982 } TARGET_INSTANCE; 09983 09984 static TARGET_HANDLE target_create_internal(void) 09985 { 09986 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)amqpalloc_malloc(sizeof(TARGET_INSTANCE)); 09987 if (target_instance != NULL) 09988 { 09989 target_instance->composite_value = NULL; 09990 } 09991 09992 return target_instance; 09993 } 09994 09995 TARGET_HANDLE target_create(void) 09996 { 09997 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)amqpalloc_malloc(sizeof(TARGET_INSTANCE)); 09998 if (target_instance != NULL) 09999 { 10000 target_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(41); 10001 if (target_instance->composite_value == NULL) 10002 { 10003 amqpalloc_free(target_instance); 10004 target_instance = NULL; 10005 } 10006 } 10007 10008 return target_instance; 10009 } 10010 10011 TARGET_HANDLE target_clone(TARGET_HANDLE value) 10012 { 10013 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)amqpalloc_malloc(sizeof(TARGET_INSTANCE)); 10014 if (target_instance != NULL) 10015 { 10016 target_instance->composite_value = amqpvalue_clone(((TARGET_INSTANCE*)value)->composite_value); 10017 if (target_instance->composite_value == NULL) 10018 { 10019 amqpalloc_free(target_instance); 10020 target_instance = NULL; 10021 } 10022 } 10023 10024 return target_instance; 10025 } 10026 10027 void target_destroy(TARGET_HANDLE target) 10028 { 10029 if (target != NULL) 10030 { 10031 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10032 amqpvalue_destroy(target_instance->composite_value); 10033 amqpalloc_free(target_instance); 10034 } 10035 } 10036 10037 AMQP_VALUE amqpvalue_create_target(TARGET_HANDLE target) 10038 { 10039 AMQP_VALUE result; 10040 10041 if (target == NULL) 10042 { 10043 result = NULL; 10044 } 10045 else 10046 { 10047 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10048 result = amqpvalue_clone(target_instance->composite_value); 10049 } 10050 10051 return result; 10052 } 10053 10054 bool is_target_type_by_descriptor(AMQP_VALUE descriptor) 10055 { 10056 bool result; 10057 10058 uint64_t descriptor_ulong; 10059 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 10060 (descriptor_ulong == 41)) 10061 { 10062 result = true; 10063 } 10064 else 10065 { 10066 result = false; 10067 } 10068 10069 return result; 10070 } 10071 10072 10073 int amqpvalue_get_target(AMQP_VALUE value, TARGET_HANDLE* target_handle) 10074 { 10075 int result; 10076 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target_create_internal(); 10077 *target_handle = target_instance; 10078 if (*target_handle == NULL) 10079 { 10080 result = __LINE__; 10081 } 10082 else 10083 { 10084 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 10085 if (list_value == NULL) 10086 { 10087 target_destroy(*target_handle); 10088 result = __LINE__; 10089 } 10090 else 10091 { 10092 do 10093 { 10094 AMQP_VALUE item_value; 10095 /* address */ 10096 item_value = amqpvalue_get_list_item(list_value, 0); 10097 if (item_value == NULL) 10098 { 10099 /* do nothing */ 10100 } 10101 else 10102 { 10103 amqpvalue_destroy(item_value); 10104 } 10105 /* durable */ 10106 item_value = amqpvalue_get_list_item(list_value, 1); 10107 if (item_value == NULL) 10108 { 10109 /* do nothing */ 10110 } 10111 else 10112 { 10113 terminus_durability durable; 10114 if (amqpvalue_get_terminus_durability(item_value, &durable) != 0) 10115 { 10116 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 10117 { 10118 target_destroy(*target_handle); 10119 result = __LINE__; 10120 break; 10121 } 10122 } 10123 10124 amqpvalue_destroy(item_value); 10125 } 10126 /* expiry-policy */ 10127 item_value = amqpvalue_get_list_item(list_value, 2); 10128 if (item_value == NULL) 10129 { 10130 /* do nothing */ 10131 } 10132 else 10133 { 10134 terminus_expiry_policy expiry_policy; 10135 if (amqpvalue_get_terminus_expiry_policy(item_value, &expiry_policy) != 0) 10136 { 10137 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 10138 { 10139 target_destroy(*target_handle); 10140 result = __LINE__; 10141 break; 10142 } 10143 } 10144 10145 amqpvalue_destroy(item_value); 10146 } 10147 /* timeout */ 10148 item_value = amqpvalue_get_list_item(list_value, 3); 10149 if (item_value == NULL) 10150 { 10151 /* do nothing */ 10152 } 10153 else 10154 { 10155 seconds timeout; 10156 if (amqpvalue_get_seconds(item_value, &timeout) != 0) 10157 { 10158 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 10159 { 10160 target_destroy(*target_handle); 10161 result = __LINE__; 10162 break; 10163 } 10164 } 10165 10166 amqpvalue_destroy(item_value); 10167 } 10168 /* dynamic */ 10169 item_value = amqpvalue_get_list_item(list_value, 4); 10170 if (item_value == NULL) 10171 { 10172 /* do nothing */ 10173 } 10174 else 10175 { 10176 bool dynamic; 10177 if (amqpvalue_get_boolean(item_value, &dynamic) != 0) 10178 { 10179 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 10180 { 10181 target_destroy(*target_handle); 10182 result = __LINE__; 10183 break; 10184 } 10185 } 10186 10187 amqpvalue_destroy(item_value); 10188 } 10189 /* dynamic-node-properties */ 10190 item_value = amqpvalue_get_list_item(list_value, 5); 10191 if (item_value == NULL) 10192 { 10193 /* do nothing */ 10194 } 10195 else 10196 { 10197 node_properties dynamic_node_properties; 10198 if (amqpvalue_get_node_properties(item_value, &dynamic_node_properties) != 0) 10199 { 10200 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 10201 { 10202 target_destroy(*target_handle); 10203 result = __LINE__; 10204 break; 10205 } 10206 } 10207 10208 amqpvalue_destroy(item_value); 10209 } 10210 /* capabilities */ 10211 item_value = amqpvalue_get_list_item(list_value, 6); 10212 if (item_value == NULL) 10213 { 10214 /* do nothing */ 10215 } 10216 else 10217 { 10218 const char* capabilities; 10219 AMQP_VALUE capabilities_array; 10220 if ((amqpvalue_get_array(item_value, &capabilities_array) != 0) && 10221 (amqpvalue_get_symbol(item_value, &capabilities) != 0)) 10222 { 10223 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 10224 { 10225 target_destroy(*target_handle); 10226 result = __LINE__; 10227 break; 10228 } 10229 } 10230 10231 amqpvalue_destroy(item_value); 10232 } 10233 10234 target_instance->composite_value = amqpvalue_clone(value); 10235 10236 result = 0; 10237 } while (0); 10238 } 10239 } 10240 10241 return result; 10242 } 10243 10244 int target_get_address(TARGET_HANDLE target, AMQP_VALUE* address_value) 10245 { 10246 int result; 10247 10248 if (target == NULL) 10249 { 10250 result = __LINE__; 10251 } 10252 else 10253 { 10254 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10255 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 0); 10256 if (item_value == NULL) 10257 { 10258 result = __LINE__; 10259 } 10260 else 10261 { 10262 *address_value = item_value; 10263 result = 0; 10264 } 10265 } 10266 10267 return result; 10268 } 10269 10270 int target_set_address(TARGET_HANDLE target, AMQP_VALUE address_value) 10271 { 10272 int result; 10273 10274 if (target == NULL) 10275 { 10276 result = __LINE__; 10277 } 10278 else 10279 { 10280 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10281 AMQP_VALUE address_amqp_value = amqpvalue_clone(address_value); 10282 if (address_amqp_value == NULL) 10283 { 10284 result = __LINE__; 10285 } 10286 else 10287 { 10288 if (amqpvalue_set_composite_item(target_instance->composite_value, 0, address_amqp_value) != 0) 10289 { 10290 result = __LINE__; 10291 } 10292 else 10293 { 10294 result = 0; 10295 } 10296 10297 amqpvalue_destroy(address_amqp_value); 10298 } 10299 } 10300 10301 return result; 10302 } 10303 10304 int target_get_durable(TARGET_HANDLE target, terminus_durability* durable_value) 10305 { 10306 int result; 10307 10308 if (target == NULL) 10309 { 10310 result = __LINE__; 10311 } 10312 else 10313 { 10314 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10315 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 1); 10316 if (item_value == NULL) 10317 { 10318 result = __LINE__; 10319 } 10320 else 10321 { 10322 if (amqpvalue_get_terminus_durability(item_value, durable_value) != 0) 10323 { 10324 result = __LINE__; 10325 } 10326 else 10327 { 10328 result = 0; 10329 } 10330 } 10331 } 10332 10333 return result; 10334 } 10335 10336 int target_set_durable(TARGET_HANDLE target, terminus_durability durable_value) 10337 { 10338 int result; 10339 10340 if (target == NULL) 10341 { 10342 result = __LINE__; 10343 } 10344 else 10345 { 10346 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10347 AMQP_VALUE durable_amqp_value = amqpvalue_create_terminus_durability(durable_value); 10348 if (durable_amqp_value == NULL) 10349 { 10350 result = __LINE__; 10351 } 10352 else 10353 { 10354 if (amqpvalue_set_composite_item(target_instance->composite_value, 1, durable_amqp_value) != 0) 10355 { 10356 result = __LINE__; 10357 } 10358 else 10359 { 10360 result = 0; 10361 } 10362 10363 amqpvalue_destroy(durable_amqp_value); 10364 } 10365 } 10366 10367 return result; 10368 } 10369 10370 int target_get_expiry_policy(TARGET_HANDLE target, terminus_expiry_policy* expiry_policy_value) 10371 { 10372 int result; 10373 10374 if (target == NULL) 10375 { 10376 result = __LINE__; 10377 } 10378 else 10379 { 10380 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10381 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 2); 10382 if (item_value == NULL) 10383 { 10384 result = __LINE__; 10385 } 10386 else 10387 { 10388 if (amqpvalue_get_terminus_expiry_policy(item_value, expiry_policy_value) != 0) 10389 { 10390 result = __LINE__; 10391 } 10392 else 10393 { 10394 result = 0; 10395 } 10396 } 10397 } 10398 10399 return result; 10400 } 10401 10402 int target_set_expiry_policy(TARGET_HANDLE target, terminus_expiry_policy expiry_policy_value) 10403 { 10404 int result; 10405 10406 if (target == NULL) 10407 { 10408 result = __LINE__; 10409 } 10410 else 10411 { 10412 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10413 AMQP_VALUE expiry_policy_amqp_value = amqpvalue_create_terminus_expiry_policy(expiry_policy_value); 10414 if (expiry_policy_amqp_value == NULL) 10415 { 10416 result = __LINE__; 10417 } 10418 else 10419 { 10420 if (amqpvalue_set_composite_item(target_instance->composite_value, 2, expiry_policy_amqp_value) != 0) 10421 { 10422 result = __LINE__; 10423 } 10424 else 10425 { 10426 result = 0; 10427 } 10428 10429 amqpvalue_destroy(expiry_policy_amqp_value); 10430 } 10431 } 10432 10433 return result; 10434 } 10435 10436 int target_get_timeout(TARGET_HANDLE target, seconds* timeout_value) 10437 { 10438 int result; 10439 10440 if (target == NULL) 10441 { 10442 result = __LINE__; 10443 } 10444 else 10445 { 10446 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10447 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 3); 10448 if (item_value == NULL) 10449 { 10450 result = __LINE__; 10451 } 10452 else 10453 { 10454 if (amqpvalue_get_seconds(item_value, timeout_value) != 0) 10455 { 10456 result = __LINE__; 10457 } 10458 else 10459 { 10460 result = 0; 10461 } 10462 } 10463 } 10464 10465 return result; 10466 } 10467 10468 int target_set_timeout(TARGET_HANDLE target, seconds timeout_value) 10469 { 10470 int result; 10471 10472 if (target == NULL) 10473 { 10474 result = __LINE__; 10475 } 10476 else 10477 { 10478 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10479 AMQP_VALUE timeout_amqp_value = amqpvalue_create_seconds(timeout_value); 10480 if (timeout_amqp_value == NULL) 10481 { 10482 result = __LINE__; 10483 } 10484 else 10485 { 10486 if (amqpvalue_set_composite_item(target_instance->composite_value, 3, timeout_amqp_value) != 0) 10487 { 10488 result = __LINE__; 10489 } 10490 else 10491 { 10492 result = 0; 10493 } 10494 10495 amqpvalue_destroy(timeout_amqp_value); 10496 } 10497 } 10498 10499 return result; 10500 } 10501 10502 int target_get_dynamic(TARGET_HANDLE target, bool* dynamic_value) 10503 { 10504 int result; 10505 10506 if (target == NULL) 10507 { 10508 result = __LINE__; 10509 } 10510 else 10511 { 10512 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10513 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 4); 10514 if (item_value == NULL) 10515 { 10516 result = __LINE__; 10517 } 10518 else 10519 { 10520 if (amqpvalue_get_boolean(item_value, dynamic_value) != 0) 10521 { 10522 result = __LINE__; 10523 } 10524 else 10525 { 10526 result = 0; 10527 } 10528 } 10529 } 10530 10531 return result; 10532 } 10533 10534 int target_set_dynamic(TARGET_HANDLE target, bool dynamic_value) 10535 { 10536 int result; 10537 10538 if (target == NULL) 10539 { 10540 result = __LINE__; 10541 } 10542 else 10543 { 10544 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10545 AMQP_VALUE dynamic_amqp_value = amqpvalue_create_boolean(dynamic_value); 10546 if (dynamic_amqp_value == NULL) 10547 { 10548 result = __LINE__; 10549 } 10550 else 10551 { 10552 if (amqpvalue_set_composite_item(target_instance->composite_value, 4, dynamic_amqp_value) != 0) 10553 { 10554 result = __LINE__; 10555 } 10556 else 10557 { 10558 result = 0; 10559 } 10560 10561 amqpvalue_destroy(dynamic_amqp_value); 10562 } 10563 } 10564 10565 return result; 10566 } 10567 10568 int target_get_dynamic_node_properties(TARGET_HANDLE target, node_properties* dynamic_node_properties_value) 10569 { 10570 int result; 10571 10572 if (target == NULL) 10573 { 10574 result = __LINE__; 10575 } 10576 else 10577 { 10578 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10579 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 5); 10580 if (item_value == NULL) 10581 { 10582 result = __LINE__; 10583 } 10584 else 10585 { 10586 if (amqpvalue_get_node_properties(item_value, dynamic_node_properties_value) != 0) 10587 { 10588 result = __LINE__; 10589 } 10590 else 10591 { 10592 result = 0; 10593 } 10594 } 10595 } 10596 10597 return result; 10598 } 10599 10600 int target_set_dynamic_node_properties(TARGET_HANDLE target, node_properties dynamic_node_properties_value) 10601 { 10602 int result; 10603 10604 if (target == NULL) 10605 { 10606 result = __LINE__; 10607 } 10608 else 10609 { 10610 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10611 AMQP_VALUE dynamic_node_properties_amqp_value = amqpvalue_create_node_properties(dynamic_node_properties_value); 10612 if (dynamic_node_properties_amqp_value == NULL) 10613 { 10614 result = __LINE__; 10615 } 10616 else 10617 { 10618 if (amqpvalue_set_composite_item(target_instance->composite_value, 5, dynamic_node_properties_amqp_value) != 0) 10619 { 10620 result = __LINE__; 10621 } 10622 else 10623 { 10624 result = 0; 10625 } 10626 10627 amqpvalue_destroy(dynamic_node_properties_amqp_value); 10628 } 10629 } 10630 10631 return result; 10632 } 10633 10634 int target_get_capabilities(TARGET_HANDLE target, AMQP_VALUE* capabilities_value) 10635 { 10636 int result; 10637 10638 if (target == NULL) 10639 { 10640 result = __LINE__; 10641 } 10642 else 10643 { 10644 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10645 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(target_instance->composite_value, 6); 10646 if (item_value == NULL) 10647 { 10648 result = __LINE__; 10649 } 10650 else 10651 { 10652 if (amqpvalue_get_array(item_value, capabilities_value) != 0) 10653 { 10654 result = __LINE__; 10655 } 10656 else 10657 { 10658 result = 0; 10659 } 10660 } 10661 } 10662 10663 return result; 10664 } 10665 10666 int target_set_capabilities(TARGET_HANDLE target, AMQP_VALUE capabilities_value) 10667 { 10668 int result; 10669 10670 if (target == NULL) 10671 { 10672 result = __LINE__; 10673 } 10674 else 10675 { 10676 TARGET_INSTANCE* target_instance = (TARGET_INSTANCE*)target; 10677 AMQP_VALUE capabilities_amqp_value = amqpvalue_clone(capabilities_value); 10678 if (capabilities_amqp_value == NULL) 10679 { 10680 result = __LINE__; 10681 } 10682 else 10683 { 10684 if (amqpvalue_set_composite_item(target_instance->composite_value, 6, capabilities_amqp_value) != 0) 10685 { 10686 result = __LINE__; 10687 } 10688 else 10689 { 10690 result = 0; 10691 } 10692 10693 amqpvalue_destroy(capabilities_amqp_value); 10694 } 10695 } 10696 10697 return result; 10698 } 10699 10700 10701 /* annotations */ 10702 10703 AMQP_VALUE amqpvalue_create_annotations(AMQP_VALUE value) 10704 { 10705 return amqpvalue_clone(value); 10706 } 10707 10708 /* message-id-ulong */ 10709 10710 AMQP_VALUE amqpvalue_create_message_id_ulong(message_id_ulong value) 10711 { 10712 return amqpvalue_create_ulong(value); 10713 } 10714 10715 /* message-id-uuid */ 10716 10717 AMQP_VALUE amqpvalue_create_message_id_uuid(message_id_uuid value) 10718 { 10719 return amqpvalue_create_uuid(value); 10720 } 10721 10722 /* message-id-binary */ 10723 10724 AMQP_VALUE amqpvalue_create_message_id_binary(message_id_binary value) 10725 { 10726 return amqpvalue_create_binary(value); 10727 } 10728 10729 /* message-id-string */ 10730 10731 AMQP_VALUE amqpvalue_create_message_id_string(message_id_string value) 10732 { 10733 return amqpvalue_create_string(value); 10734 } 10735 10736 /* address-string */ 10737 10738 AMQP_VALUE amqpvalue_create_address_string(address_string value) 10739 { 10740 return amqpvalue_create_string(value); 10741 } 10742 10743 /* header */ 10744 10745 typedef struct HEADER_INSTANCE_TAG 10746 { 10747 AMQP_VALUE composite_value; 10748 } HEADER_INSTANCE; 10749 10750 static HEADER_HANDLE header_create_internal(void) 10751 { 10752 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)amqpalloc_malloc(sizeof(HEADER_INSTANCE)); 10753 if (header_instance != NULL) 10754 { 10755 header_instance->composite_value = NULL; 10756 } 10757 10758 return header_instance; 10759 } 10760 10761 HEADER_HANDLE header_create(void) 10762 { 10763 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)amqpalloc_malloc(sizeof(HEADER_INSTANCE)); 10764 if (header_instance != NULL) 10765 { 10766 header_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(112); 10767 if (header_instance->composite_value == NULL) 10768 { 10769 amqpalloc_free(header_instance); 10770 header_instance = NULL; 10771 } 10772 } 10773 10774 return header_instance; 10775 } 10776 10777 HEADER_HANDLE header_clone(HEADER_HANDLE value) 10778 { 10779 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)amqpalloc_malloc(sizeof(HEADER_INSTANCE)); 10780 if (header_instance != NULL) 10781 { 10782 header_instance->composite_value = amqpvalue_clone(((HEADER_INSTANCE*)value)->composite_value); 10783 if (header_instance->composite_value == NULL) 10784 { 10785 amqpalloc_free(header_instance); 10786 header_instance = NULL; 10787 } 10788 } 10789 10790 return header_instance; 10791 } 10792 10793 void header_destroy(HEADER_HANDLE header) 10794 { 10795 if (header != NULL) 10796 { 10797 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; 10798 amqpvalue_destroy(header_instance->composite_value); 10799 amqpalloc_free(header_instance); 10800 } 10801 } 10802 10803 AMQP_VALUE amqpvalue_create_header(HEADER_HANDLE header) 10804 { 10805 AMQP_VALUE result; 10806 10807 if (header == NULL) 10808 { 10809 result = NULL; 10810 } 10811 else 10812 { 10813 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; 10814 result = amqpvalue_clone(header_instance->composite_value); 10815 } 10816 10817 return result; 10818 } 10819 10820 bool is_header_type_by_descriptor(AMQP_VALUE descriptor) 10821 { 10822 bool result; 10823 10824 uint64_t descriptor_ulong; 10825 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 10826 (descriptor_ulong == 112)) 10827 { 10828 result = true; 10829 } 10830 else 10831 { 10832 result = false; 10833 } 10834 10835 return result; 10836 } 10837 10838 10839 int amqpvalue_get_header(AMQP_VALUE value, HEADER_HANDLE* header_handle) 10840 { 10841 int result; 10842 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header_create_internal(); 10843 *header_handle = header_instance; 10844 if (*header_handle == NULL) 10845 { 10846 result = __LINE__; 10847 } 10848 else 10849 { 10850 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 10851 if (list_value == NULL) 10852 { 10853 header_destroy(*header_handle); 10854 result = __LINE__; 10855 } 10856 else 10857 { 10858 do 10859 { 10860 AMQP_VALUE item_value; 10861 /* durable */ 10862 item_value = amqpvalue_get_list_item(list_value, 0); 10863 if (item_value == NULL) 10864 { 10865 /* do nothing */ 10866 } 10867 else 10868 { 10869 bool durable; 10870 if (amqpvalue_get_boolean(item_value, &durable) != 0) 10871 { 10872 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 10873 { 10874 header_destroy(*header_handle); 10875 result = __LINE__; 10876 break; 10877 } 10878 } 10879 10880 amqpvalue_destroy(item_value); 10881 } 10882 /* priority */ 10883 item_value = amqpvalue_get_list_item(list_value, 1); 10884 if (item_value == NULL) 10885 { 10886 /* do nothing */ 10887 } 10888 else 10889 { 10890 uint8_t priority; 10891 if (amqpvalue_get_ubyte(item_value, &priority) != 0) 10892 { 10893 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 10894 { 10895 header_destroy(*header_handle); 10896 result = __LINE__; 10897 break; 10898 } 10899 } 10900 10901 amqpvalue_destroy(item_value); 10902 } 10903 /* ttl */ 10904 item_value = amqpvalue_get_list_item(list_value, 2); 10905 if (item_value == NULL) 10906 { 10907 /* do nothing */ 10908 } 10909 else 10910 { 10911 milliseconds ttl; 10912 if (amqpvalue_get_milliseconds(item_value, &ttl) != 0) 10913 { 10914 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 10915 { 10916 header_destroy(*header_handle); 10917 result = __LINE__; 10918 break; 10919 } 10920 } 10921 10922 amqpvalue_destroy(item_value); 10923 } 10924 /* first-acquirer */ 10925 item_value = amqpvalue_get_list_item(list_value, 3); 10926 if (item_value == NULL) 10927 { 10928 /* do nothing */ 10929 } 10930 else 10931 { 10932 bool first_acquirer; 10933 if (amqpvalue_get_boolean(item_value, &first_acquirer) != 0) 10934 { 10935 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 10936 { 10937 header_destroy(*header_handle); 10938 result = __LINE__; 10939 break; 10940 } 10941 } 10942 10943 amqpvalue_destroy(item_value); 10944 } 10945 /* delivery-count */ 10946 item_value = amqpvalue_get_list_item(list_value, 4); 10947 if (item_value == NULL) 10948 { 10949 /* do nothing */ 10950 } 10951 else 10952 { 10953 uint32_t delivery_count; 10954 if (amqpvalue_get_uint(item_value, &delivery_count) != 0) 10955 { 10956 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 10957 { 10958 header_destroy(*header_handle); 10959 result = __LINE__; 10960 break; 10961 } 10962 } 10963 10964 amqpvalue_destroy(item_value); 10965 } 10966 10967 header_instance->composite_value = amqpvalue_clone(value); 10968 10969 result = 0; 10970 } while (0); 10971 } 10972 } 10973 10974 return result; 10975 } 10976 10977 int header_get_durable(HEADER_HANDLE header, bool* durable_value) 10978 { 10979 int result; 10980 10981 if (header == NULL) 10982 { 10983 result = __LINE__; 10984 } 10985 else 10986 { 10987 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; 10988 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 0); 10989 if (item_value == NULL) 10990 { 10991 result = __LINE__; 10992 } 10993 else 10994 { 10995 if (amqpvalue_get_boolean(item_value, durable_value) != 0) 10996 { 10997 result = __LINE__; 10998 } 10999 else 11000 { 11001 result = 0; 11002 } 11003 } 11004 } 11005 11006 return result; 11007 } 11008 11009 int header_set_durable(HEADER_HANDLE header, bool durable_value) 11010 { 11011 int result; 11012 11013 if (header == NULL) 11014 { 11015 result = __LINE__; 11016 } 11017 else 11018 { 11019 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; 11020 AMQP_VALUE durable_amqp_value = amqpvalue_create_boolean(durable_value); 11021 if (durable_amqp_value == NULL) 11022 { 11023 result = __LINE__; 11024 } 11025 else 11026 { 11027 if (amqpvalue_set_composite_item(header_instance->composite_value, 0, durable_amqp_value) != 0) 11028 { 11029 result = __LINE__; 11030 } 11031 else 11032 { 11033 result = 0; 11034 } 11035 11036 amqpvalue_destroy(durable_amqp_value); 11037 } 11038 } 11039 11040 return result; 11041 } 11042 11043 int header_get_priority(HEADER_HANDLE header, uint8_t* priority_value) 11044 { 11045 int result; 11046 11047 if (header == NULL) 11048 { 11049 result = __LINE__; 11050 } 11051 else 11052 { 11053 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; 11054 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 1); 11055 if (item_value == NULL) 11056 { 11057 result = __LINE__; 11058 } 11059 else 11060 { 11061 if (amqpvalue_get_ubyte(item_value, priority_value) != 0) 11062 { 11063 result = __LINE__; 11064 } 11065 else 11066 { 11067 result = 0; 11068 } 11069 } 11070 } 11071 11072 return result; 11073 } 11074 11075 int header_set_priority(HEADER_HANDLE header, uint8_t priority_value) 11076 { 11077 int result; 11078 11079 if (header == NULL) 11080 { 11081 result = __LINE__; 11082 } 11083 else 11084 { 11085 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; 11086 AMQP_VALUE priority_amqp_value = amqpvalue_create_ubyte(priority_value); 11087 if (priority_amqp_value == NULL) 11088 { 11089 result = __LINE__; 11090 } 11091 else 11092 { 11093 if (amqpvalue_set_composite_item(header_instance->composite_value, 1, priority_amqp_value) != 0) 11094 { 11095 result = __LINE__; 11096 } 11097 else 11098 { 11099 result = 0; 11100 } 11101 11102 amqpvalue_destroy(priority_amqp_value); 11103 } 11104 } 11105 11106 return result; 11107 } 11108 11109 int header_get_ttl(HEADER_HANDLE header, milliseconds* ttl_value) 11110 { 11111 int result; 11112 11113 if (header == NULL) 11114 { 11115 result = __LINE__; 11116 } 11117 else 11118 { 11119 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; 11120 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 2); 11121 if (item_value == NULL) 11122 { 11123 result = __LINE__; 11124 } 11125 else 11126 { 11127 if (amqpvalue_get_milliseconds(item_value, ttl_value) != 0) 11128 { 11129 result = __LINE__; 11130 } 11131 else 11132 { 11133 result = 0; 11134 } 11135 } 11136 } 11137 11138 return result; 11139 } 11140 11141 int header_set_ttl(HEADER_HANDLE header, milliseconds ttl_value) 11142 { 11143 int result; 11144 11145 if (header == NULL) 11146 { 11147 result = __LINE__; 11148 } 11149 else 11150 { 11151 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; 11152 AMQP_VALUE ttl_amqp_value = amqpvalue_create_milliseconds(ttl_value); 11153 if (ttl_amqp_value == NULL) 11154 { 11155 result = __LINE__; 11156 } 11157 else 11158 { 11159 if (amqpvalue_set_composite_item(header_instance->composite_value, 2, ttl_amqp_value) != 0) 11160 { 11161 result = __LINE__; 11162 } 11163 else 11164 { 11165 result = 0; 11166 } 11167 11168 amqpvalue_destroy(ttl_amqp_value); 11169 } 11170 } 11171 11172 return result; 11173 } 11174 11175 int header_get_first_acquirer(HEADER_HANDLE header, bool* first_acquirer_value) 11176 { 11177 int result; 11178 11179 if (header == NULL) 11180 { 11181 result = __LINE__; 11182 } 11183 else 11184 { 11185 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; 11186 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 3); 11187 if (item_value == NULL) 11188 { 11189 result = __LINE__; 11190 } 11191 else 11192 { 11193 if (amqpvalue_get_boolean(item_value, first_acquirer_value) != 0) 11194 { 11195 result = __LINE__; 11196 } 11197 else 11198 { 11199 result = 0; 11200 } 11201 } 11202 } 11203 11204 return result; 11205 } 11206 11207 int header_set_first_acquirer(HEADER_HANDLE header, bool first_acquirer_value) 11208 { 11209 int result; 11210 11211 if (header == NULL) 11212 { 11213 result = __LINE__; 11214 } 11215 else 11216 { 11217 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; 11218 AMQP_VALUE first_acquirer_amqp_value = amqpvalue_create_boolean(first_acquirer_value); 11219 if (first_acquirer_amqp_value == NULL) 11220 { 11221 result = __LINE__; 11222 } 11223 else 11224 { 11225 if (amqpvalue_set_composite_item(header_instance->composite_value, 3, first_acquirer_amqp_value) != 0) 11226 { 11227 result = __LINE__; 11228 } 11229 else 11230 { 11231 result = 0; 11232 } 11233 11234 amqpvalue_destroy(first_acquirer_amqp_value); 11235 } 11236 } 11237 11238 return result; 11239 } 11240 11241 int header_get_delivery_count(HEADER_HANDLE header, uint32_t* delivery_count_value) 11242 { 11243 int result; 11244 11245 if (header == NULL) 11246 { 11247 result = __LINE__; 11248 } 11249 else 11250 { 11251 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; 11252 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(header_instance->composite_value, 4); 11253 if (item_value == NULL) 11254 { 11255 result = __LINE__; 11256 } 11257 else 11258 { 11259 if (amqpvalue_get_uint(item_value, delivery_count_value) != 0) 11260 { 11261 result = __LINE__; 11262 } 11263 else 11264 { 11265 result = 0; 11266 } 11267 } 11268 } 11269 11270 return result; 11271 } 11272 11273 int header_set_delivery_count(HEADER_HANDLE header, uint32_t delivery_count_value) 11274 { 11275 int result; 11276 11277 if (header == NULL) 11278 { 11279 result = __LINE__; 11280 } 11281 else 11282 { 11283 HEADER_INSTANCE* header_instance = (HEADER_INSTANCE*)header; 11284 AMQP_VALUE delivery_count_amqp_value = amqpvalue_create_uint(delivery_count_value); 11285 if (delivery_count_amqp_value == NULL) 11286 { 11287 result = __LINE__; 11288 } 11289 else 11290 { 11291 if (amqpvalue_set_composite_item(header_instance->composite_value, 4, delivery_count_amqp_value) != 0) 11292 { 11293 result = __LINE__; 11294 } 11295 else 11296 { 11297 result = 0; 11298 } 11299 11300 amqpvalue_destroy(delivery_count_amqp_value); 11301 } 11302 } 11303 11304 return result; 11305 } 11306 11307 11308 /* delivery-annotations */ 11309 11310 AMQP_VALUE amqpvalue_create_delivery_annotations(delivery_annotations value) 11311 { 11312 AMQP_VALUE result; 11313 AMQP_VALUE described_value = amqpvalue_create_annotations(value); 11314 if (described_value == NULL) 11315 { 11316 result = NULL; 11317 } 11318 else 11319 { 11320 AMQP_VALUE descriptor = amqpvalue_create_ulong(113); 11321 if (descriptor == NULL) 11322 { 11323 result = NULL; 11324 } 11325 else 11326 { 11327 result = amqpvalue_create_described(amqpvalue_clone(descriptor), amqpvalue_clone(described_value)); 11328 11329 amqpvalue_destroy(descriptor); 11330 } 11331 11332 amqpvalue_destroy(described_value); 11333 } 11334 11335 return result; 11336 } 11337 11338 bool is_delivery_annotations_type_by_descriptor(AMQP_VALUE descriptor) 11339 { 11340 bool result; 11341 11342 uint64_t descriptor_ulong; 11343 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 11344 (descriptor_ulong == 113)) 11345 { 11346 result = true; 11347 } 11348 else 11349 { 11350 result = false; 11351 } 11352 11353 return result; 11354 } 11355 11356 /* message-annotations */ 11357 11358 AMQP_VALUE amqpvalue_create_message_annotations(message_annotations value) 11359 { 11360 AMQP_VALUE result; 11361 AMQP_VALUE described_value = amqpvalue_create_annotations(value); 11362 if (described_value == NULL) 11363 { 11364 result = NULL; 11365 } 11366 else 11367 { 11368 AMQP_VALUE descriptor = amqpvalue_create_ulong(114); 11369 if (descriptor == NULL) 11370 { 11371 result = NULL; 11372 } 11373 else 11374 { 11375 result = amqpvalue_create_described(amqpvalue_clone(descriptor), amqpvalue_clone(described_value)); 11376 11377 amqpvalue_destroy(descriptor); 11378 } 11379 11380 amqpvalue_destroy(described_value); 11381 } 11382 11383 return result; 11384 } 11385 11386 bool is_message_annotations_type_by_descriptor(AMQP_VALUE descriptor) 11387 { 11388 bool result; 11389 11390 uint64_t descriptor_ulong; 11391 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 11392 (descriptor_ulong == 114)) 11393 { 11394 result = true; 11395 } 11396 else 11397 { 11398 result = false; 11399 } 11400 11401 return result; 11402 } 11403 11404 /* application-properties */ 11405 11406 AMQP_VALUE amqpvalue_create_application_properties(AMQP_VALUE value) 11407 { 11408 AMQP_VALUE result; 11409 AMQP_VALUE described_value = amqpvalue_clone(value); 11410 if (described_value == NULL) 11411 { 11412 result = NULL; 11413 } 11414 else 11415 { 11416 AMQP_VALUE descriptor = amqpvalue_create_ulong(116); 11417 if (descriptor == NULL) 11418 { 11419 result = NULL; 11420 } 11421 else 11422 { 11423 result = amqpvalue_create_described(amqpvalue_clone(descriptor), amqpvalue_clone(described_value)); 11424 11425 amqpvalue_destroy(descriptor); 11426 } 11427 11428 amqpvalue_destroy(described_value); 11429 } 11430 11431 return result; 11432 } 11433 11434 bool is_application_properties_type_by_descriptor(AMQP_VALUE descriptor) 11435 { 11436 bool result; 11437 11438 uint64_t descriptor_ulong; 11439 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 11440 (descriptor_ulong == 116)) 11441 { 11442 result = true; 11443 } 11444 else 11445 { 11446 result = false; 11447 } 11448 11449 return result; 11450 } 11451 11452 /* data */ 11453 11454 AMQP_VALUE amqpvalue_create_data(data value) 11455 { 11456 AMQP_VALUE result; 11457 AMQP_VALUE described_value = amqpvalue_create_binary(value); 11458 if (described_value == NULL) 11459 { 11460 result = NULL; 11461 } 11462 else 11463 { 11464 AMQP_VALUE descriptor = amqpvalue_create_ulong(117); 11465 if (descriptor == NULL) 11466 { 11467 result = NULL; 11468 } 11469 else 11470 { 11471 result = amqpvalue_create_described(amqpvalue_clone(descriptor), amqpvalue_clone(described_value)); 11472 11473 amqpvalue_destroy(descriptor); 11474 } 11475 11476 amqpvalue_destroy(described_value); 11477 } 11478 11479 return result; 11480 } 11481 11482 bool is_data_type_by_descriptor(AMQP_VALUE descriptor) 11483 { 11484 bool result; 11485 11486 uint64_t descriptor_ulong; 11487 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 11488 (descriptor_ulong == 117)) 11489 { 11490 result = true; 11491 } 11492 else 11493 { 11494 result = false; 11495 } 11496 11497 return result; 11498 } 11499 11500 /* amqp-sequence */ 11501 11502 AMQP_VALUE amqpvalue_create_amqp_sequence(AMQP_VALUE value) 11503 { 11504 AMQP_VALUE result; 11505 AMQP_VALUE described_value = amqpvalue_clone(value); 11506 if (described_value == NULL) 11507 { 11508 result = NULL; 11509 } 11510 else 11511 { 11512 AMQP_VALUE descriptor = amqpvalue_create_ulong(118); 11513 if (descriptor == NULL) 11514 { 11515 result = NULL; 11516 } 11517 else 11518 { 11519 result = amqpvalue_create_described(amqpvalue_clone(descriptor), amqpvalue_clone(described_value)); 11520 11521 amqpvalue_destroy(descriptor); 11522 } 11523 11524 amqpvalue_destroy(described_value); 11525 } 11526 11527 return result; 11528 } 11529 11530 bool is_amqp_sequence_type_by_descriptor(AMQP_VALUE descriptor) 11531 { 11532 bool result; 11533 11534 uint64_t descriptor_ulong; 11535 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 11536 (descriptor_ulong == 118)) 11537 { 11538 result = true; 11539 } 11540 else 11541 { 11542 result = false; 11543 } 11544 11545 return result; 11546 } 11547 11548 /* amqp-value */ 11549 11550 AMQP_VALUE amqpvalue_create_amqp_value(AMQP_VALUE value) 11551 { 11552 AMQP_VALUE result; 11553 AMQP_VALUE described_value = amqpvalue_clone(value); 11554 if (described_value == NULL) 11555 { 11556 result = NULL; 11557 } 11558 else 11559 { 11560 AMQP_VALUE descriptor = amqpvalue_create_ulong(119); 11561 if (descriptor == NULL) 11562 { 11563 result = NULL; 11564 } 11565 else 11566 { 11567 result = amqpvalue_create_described(amqpvalue_clone(descriptor), amqpvalue_clone(described_value)); 11568 11569 amqpvalue_destroy(descriptor); 11570 } 11571 11572 amqpvalue_destroy(described_value); 11573 } 11574 11575 return result; 11576 } 11577 11578 bool is_amqp_value_type_by_descriptor(AMQP_VALUE descriptor) 11579 { 11580 bool result; 11581 11582 uint64_t descriptor_ulong; 11583 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 11584 (descriptor_ulong == 119)) 11585 { 11586 result = true; 11587 } 11588 else 11589 { 11590 result = false; 11591 } 11592 11593 return result; 11594 } 11595 11596 /* footer */ 11597 11598 AMQP_VALUE amqpvalue_create_footer(footer value) 11599 { 11600 AMQP_VALUE result; 11601 AMQP_VALUE described_value = amqpvalue_create_annotations(value); 11602 if (described_value == NULL) 11603 { 11604 result = NULL; 11605 } 11606 else 11607 { 11608 AMQP_VALUE descriptor = amqpvalue_create_ulong(120); 11609 if (descriptor == NULL) 11610 { 11611 result = NULL; 11612 } 11613 else 11614 { 11615 result = amqpvalue_create_described(amqpvalue_clone(descriptor), amqpvalue_clone(described_value)); 11616 11617 amqpvalue_destroy(descriptor); 11618 } 11619 11620 amqpvalue_destroy(described_value); 11621 } 11622 11623 return result; 11624 } 11625 11626 bool is_footer_type_by_descriptor(AMQP_VALUE descriptor) 11627 { 11628 bool result; 11629 11630 uint64_t descriptor_ulong; 11631 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 11632 (descriptor_ulong == 120)) 11633 { 11634 result = true; 11635 } 11636 else 11637 { 11638 result = false; 11639 } 11640 11641 return result; 11642 } 11643 11644 /* properties */ 11645 11646 typedef struct PROPERTIES_INSTANCE_TAG 11647 { 11648 AMQP_VALUE composite_value; 11649 } PROPERTIES_INSTANCE; 11650 11651 static PROPERTIES_HANDLE properties_create_internal(void) 11652 { 11653 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)amqpalloc_malloc(sizeof(PROPERTIES_INSTANCE)); 11654 if (properties_instance != NULL) 11655 { 11656 properties_instance->composite_value = NULL; 11657 } 11658 11659 return properties_instance; 11660 } 11661 11662 PROPERTIES_HANDLE properties_create(void) 11663 { 11664 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)amqpalloc_malloc(sizeof(PROPERTIES_INSTANCE)); 11665 if (properties_instance != NULL) 11666 { 11667 properties_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(115); 11668 if (properties_instance->composite_value == NULL) 11669 { 11670 amqpalloc_free(properties_instance); 11671 properties_instance = NULL; 11672 } 11673 } 11674 11675 return properties_instance; 11676 } 11677 11678 PROPERTIES_HANDLE properties_clone(PROPERTIES_HANDLE value) 11679 { 11680 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)amqpalloc_malloc(sizeof(PROPERTIES_INSTANCE)); 11681 if (properties_instance != NULL) 11682 { 11683 properties_instance->composite_value = amqpvalue_clone(((PROPERTIES_INSTANCE*)value)->composite_value); 11684 if (properties_instance->composite_value == NULL) 11685 { 11686 amqpalloc_free(properties_instance); 11687 properties_instance = NULL; 11688 } 11689 } 11690 11691 return properties_instance; 11692 } 11693 11694 void properties_destroy(PROPERTIES_HANDLE properties) 11695 { 11696 if (properties != NULL) 11697 { 11698 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 11699 amqpvalue_destroy(properties_instance->composite_value); 11700 amqpalloc_free(properties_instance); 11701 } 11702 } 11703 11704 AMQP_VALUE amqpvalue_create_properties(PROPERTIES_HANDLE properties) 11705 { 11706 AMQP_VALUE result; 11707 11708 if (properties == NULL) 11709 { 11710 result = NULL; 11711 } 11712 else 11713 { 11714 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 11715 result = amqpvalue_clone(properties_instance->composite_value); 11716 } 11717 11718 return result; 11719 } 11720 11721 bool is_properties_type_by_descriptor(AMQP_VALUE descriptor) 11722 { 11723 bool result; 11724 11725 uint64_t descriptor_ulong; 11726 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 11727 (descriptor_ulong == 115)) 11728 { 11729 result = true; 11730 } 11731 else 11732 { 11733 result = false; 11734 } 11735 11736 return result; 11737 } 11738 11739 11740 int amqpvalue_get_properties(AMQP_VALUE value, PROPERTIES_HANDLE* properties_handle) 11741 { 11742 int result; 11743 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties_create_internal(); 11744 *properties_handle = properties_instance; 11745 if (*properties_handle == NULL) 11746 { 11747 result = __LINE__; 11748 } 11749 else 11750 { 11751 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 11752 if (list_value == NULL) 11753 { 11754 properties_destroy(*properties_handle); 11755 result = __LINE__; 11756 } 11757 else 11758 { 11759 do 11760 { 11761 AMQP_VALUE item_value; 11762 /* message-id */ 11763 item_value = amqpvalue_get_list_item(list_value, 0); 11764 if (item_value == NULL) 11765 { 11766 /* do nothing */ 11767 } 11768 else 11769 { 11770 amqpvalue_destroy(item_value); 11771 } 11772 /* user-id */ 11773 item_value = amqpvalue_get_list_item(list_value, 1); 11774 if (item_value == NULL) 11775 { 11776 /* do nothing */ 11777 } 11778 else 11779 { 11780 amqp_binary user_id; 11781 if (amqpvalue_get_binary(item_value, &user_id) != 0) 11782 { 11783 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 11784 { 11785 properties_destroy(*properties_handle); 11786 result = __LINE__; 11787 break; 11788 } 11789 } 11790 11791 amqpvalue_destroy(item_value); 11792 } 11793 /* to */ 11794 item_value = amqpvalue_get_list_item(list_value, 2); 11795 if (item_value == NULL) 11796 { 11797 /* do nothing */ 11798 } 11799 else 11800 { 11801 amqpvalue_destroy(item_value); 11802 } 11803 /* subject */ 11804 item_value = amqpvalue_get_list_item(list_value, 3); 11805 if (item_value == NULL) 11806 { 11807 /* do nothing */ 11808 } 11809 else 11810 { 11811 const char* subject; 11812 if (amqpvalue_get_string(item_value, &subject) != 0) 11813 { 11814 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 11815 { 11816 properties_destroy(*properties_handle); 11817 result = __LINE__; 11818 break; 11819 } 11820 } 11821 11822 amqpvalue_destroy(item_value); 11823 } 11824 /* reply-to */ 11825 item_value = amqpvalue_get_list_item(list_value, 4); 11826 if (item_value == NULL) 11827 { 11828 /* do nothing */ 11829 } 11830 else 11831 { 11832 amqpvalue_destroy(item_value); 11833 } 11834 /* correlation-id */ 11835 item_value = amqpvalue_get_list_item(list_value, 5); 11836 if (item_value == NULL) 11837 { 11838 /* do nothing */ 11839 } 11840 else 11841 { 11842 amqpvalue_destroy(item_value); 11843 } 11844 /* content-type */ 11845 item_value = amqpvalue_get_list_item(list_value, 6); 11846 if (item_value == NULL) 11847 { 11848 /* do nothing */ 11849 } 11850 else 11851 { 11852 const char* content_type; 11853 if (amqpvalue_get_symbol(item_value, &content_type) != 0) 11854 { 11855 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 11856 { 11857 properties_destroy(*properties_handle); 11858 result = __LINE__; 11859 break; 11860 } 11861 } 11862 11863 amqpvalue_destroy(item_value); 11864 } 11865 /* content-encoding */ 11866 item_value = amqpvalue_get_list_item(list_value, 7); 11867 if (item_value == NULL) 11868 { 11869 /* do nothing */ 11870 } 11871 else 11872 { 11873 const char* content_encoding; 11874 if (amqpvalue_get_symbol(item_value, &content_encoding) != 0) 11875 { 11876 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 11877 { 11878 properties_destroy(*properties_handle); 11879 result = __LINE__; 11880 break; 11881 } 11882 } 11883 11884 amqpvalue_destroy(item_value); 11885 } 11886 /* absolute-expiry-time */ 11887 item_value = amqpvalue_get_list_item(list_value, 8); 11888 if (item_value == NULL) 11889 { 11890 /* do nothing */ 11891 } 11892 else 11893 { 11894 timestamp absolute_expiry_time; 11895 if (amqpvalue_get_timestamp(item_value, &absolute_expiry_time) != 0) 11896 { 11897 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 11898 { 11899 properties_destroy(*properties_handle); 11900 result = __LINE__; 11901 break; 11902 } 11903 } 11904 11905 amqpvalue_destroy(item_value); 11906 } 11907 /* creation-time */ 11908 item_value = amqpvalue_get_list_item(list_value, 9); 11909 if (item_value == NULL) 11910 { 11911 /* do nothing */ 11912 } 11913 else 11914 { 11915 timestamp creation_time; 11916 if (amqpvalue_get_timestamp(item_value, &creation_time) != 0) 11917 { 11918 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 11919 { 11920 properties_destroy(*properties_handle); 11921 result = __LINE__; 11922 break; 11923 } 11924 } 11925 11926 amqpvalue_destroy(item_value); 11927 } 11928 /* group-id */ 11929 item_value = amqpvalue_get_list_item(list_value, 10); 11930 if (item_value == NULL) 11931 { 11932 /* do nothing */ 11933 } 11934 else 11935 { 11936 const char* group_id; 11937 if (amqpvalue_get_string(item_value, &group_id) != 0) 11938 { 11939 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 11940 { 11941 properties_destroy(*properties_handle); 11942 result = __LINE__; 11943 break; 11944 } 11945 } 11946 11947 amqpvalue_destroy(item_value); 11948 } 11949 /* group-sequence */ 11950 item_value = amqpvalue_get_list_item(list_value, 11); 11951 if (item_value == NULL) 11952 { 11953 /* do nothing */ 11954 } 11955 else 11956 { 11957 sequence_no group_sequence; 11958 if (amqpvalue_get_sequence_no(item_value, &group_sequence) != 0) 11959 { 11960 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 11961 { 11962 properties_destroy(*properties_handle); 11963 result = __LINE__; 11964 break; 11965 } 11966 } 11967 11968 amqpvalue_destroy(item_value); 11969 } 11970 /* reply-to-group-id */ 11971 item_value = amqpvalue_get_list_item(list_value, 12); 11972 if (item_value == NULL) 11973 { 11974 /* do nothing */ 11975 } 11976 else 11977 { 11978 const char* reply_to_group_id; 11979 if (amqpvalue_get_string(item_value, &reply_to_group_id) != 0) 11980 { 11981 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 11982 { 11983 properties_destroy(*properties_handle); 11984 result = __LINE__; 11985 break; 11986 } 11987 } 11988 11989 amqpvalue_destroy(item_value); 11990 } 11991 11992 properties_instance->composite_value = amqpvalue_clone(value); 11993 11994 result = 0; 11995 } while (0); 11996 } 11997 } 11998 11999 return result; 12000 } 12001 12002 int properties_get_message_id(PROPERTIES_HANDLE properties, AMQP_VALUE* message_id_value) 12003 { 12004 int result; 12005 12006 if (properties == NULL) 12007 { 12008 result = __LINE__; 12009 } 12010 else 12011 { 12012 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12013 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 0); 12014 if (item_value == NULL) 12015 { 12016 result = __LINE__; 12017 } 12018 else 12019 { 12020 *message_id_value = item_value; 12021 result = 0; 12022 } 12023 } 12024 12025 return result; 12026 } 12027 12028 int properties_set_message_id(PROPERTIES_HANDLE properties, AMQP_VALUE message_id_value) 12029 { 12030 int result; 12031 12032 if (properties == NULL) 12033 { 12034 result = __LINE__; 12035 } 12036 else 12037 { 12038 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12039 AMQP_VALUE message_id_amqp_value = amqpvalue_clone(message_id_value); 12040 if (message_id_amqp_value == NULL) 12041 { 12042 result = __LINE__; 12043 } 12044 else 12045 { 12046 if (amqpvalue_set_composite_item(properties_instance->composite_value, 0, message_id_amqp_value) != 0) 12047 { 12048 result = __LINE__; 12049 } 12050 else 12051 { 12052 result = 0; 12053 } 12054 12055 amqpvalue_destroy(message_id_amqp_value); 12056 } 12057 } 12058 12059 return result; 12060 } 12061 12062 int properties_get_user_id(PROPERTIES_HANDLE properties, amqp_binary* user_id_value) 12063 { 12064 int result; 12065 12066 if (properties == NULL) 12067 { 12068 result = __LINE__; 12069 } 12070 else 12071 { 12072 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12073 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 1); 12074 if (item_value == NULL) 12075 { 12076 result = __LINE__; 12077 } 12078 else 12079 { 12080 if (amqpvalue_get_binary(item_value, user_id_value) != 0) 12081 { 12082 result = __LINE__; 12083 } 12084 else 12085 { 12086 result = 0; 12087 } 12088 } 12089 } 12090 12091 return result; 12092 } 12093 12094 int properties_set_user_id(PROPERTIES_HANDLE properties, amqp_binary user_id_value) 12095 { 12096 int result; 12097 12098 if (properties == NULL) 12099 { 12100 result = __LINE__; 12101 } 12102 else 12103 { 12104 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12105 AMQP_VALUE user_id_amqp_value = amqpvalue_create_binary(user_id_value); 12106 if (user_id_amqp_value == NULL) 12107 { 12108 result = __LINE__; 12109 } 12110 else 12111 { 12112 if (amqpvalue_set_composite_item(properties_instance->composite_value, 1, user_id_amqp_value) != 0) 12113 { 12114 result = __LINE__; 12115 } 12116 else 12117 { 12118 result = 0; 12119 } 12120 12121 amqpvalue_destroy(user_id_amqp_value); 12122 } 12123 } 12124 12125 return result; 12126 } 12127 12128 int properties_get_to(PROPERTIES_HANDLE properties, AMQP_VALUE* to_value) 12129 { 12130 int result; 12131 12132 if (properties == NULL) 12133 { 12134 result = __LINE__; 12135 } 12136 else 12137 { 12138 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12139 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 2); 12140 if (item_value == NULL) 12141 { 12142 result = __LINE__; 12143 } 12144 else 12145 { 12146 *to_value = item_value; 12147 result = 0; 12148 } 12149 } 12150 12151 return result; 12152 } 12153 12154 int properties_set_to(PROPERTIES_HANDLE properties, AMQP_VALUE to_value) 12155 { 12156 int result; 12157 12158 if (properties == NULL) 12159 { 12160 result = __LINE__; 12161 } 12162 else 12163 { 12164 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12165 AMQP_VALUE to_amqp_value = amqpvalue_clone(to_value); 12166 if (to_amqp_value == NULL) 12167 { 12168 result = __LINE__; 12169 } 12170 else 12171 { 12172 if (amqpvalue_set_composite_item(properties_instance->composite_value, 2, to_amqp_value) != 0) 12173 { 12174 result = __LINE__; 12175 } 12176 else 12177 { 12178 result = 0; 12179 } 12180 12181 amqpvalue_destroy(to_amqp_value); 12182 } 12183 } 12184 12185 return result; 12186 } 12187 12188 int properties_get_subject(PROPERTIES_HANDLE properties, const char** subject_value) 12189 { 12190 int result; 12191 12192 if (properties == NULL) 12193 { 12194 result = __LINE__; 12195 } 12196 else 12197 { 12198 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12199 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 3); 12200 if (item_value == NULL) 12201 { 12202 result = __LINE__; 12203 } 12204 else 12205 { 12206 if (amqpvalue_get_string(item_value, subject_value) != 0) 12207 { 12208 result = __LINE__; 12209 } 12210 else 12211 { 12212 result = 0; 12213 } 12214 } 12215 } 12216 12217 return result; 12218 } 12219 12220 int properties_set_subject(PROPERTIES_HANDLE properties, const char* subject_value) 12221 { 12222 int result; 12223 12224 if (properties == NULL) 12225 { 12226 result = __LINE__; 12227 } 12228 else 12229 { 12230 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12231 AMQP_VALUE subject_amqp_value = amqpvalue_create_string(subject_value); 12232 if (subject_amqp_value == NULL) 12233 { 12234 result = __LINE__; 12235 } 12236 else 12237 { 12238 if (amqpvalue_set_composite_item(properties_instance->composite_value, 3, subject_amqp_value) != 0) 12239 { 12240 result = __LINE__; 12241 } 12242 else 12243 { 12244 result = 0; 12245 } 12246 12247 amqpvalue_destroy(subject_amqp_value); 12248 } 12249 } 12250 12251 return result; 12252 } 12253 12254 int properties_get_reply_to(PROPERTIES_HANDLE properties, AMQP_VALUE* reply_to_value) 12255 { 12256 int result; 12257 12258 if (properties == NULL) 12259 { 12260 result = __LINE__; 12261 } 12262 else 12263 { 12264 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12265 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 4); 12266 if (item_value == NULL) 12267 { 12268 result = __LINE__; 12269 } 12270 else 12271 { 12272 *reply_to_value = item_value; 12273 result = 0; 12274 } 12275 } 12276 12277 return result; 12278 } 12279 12280 int properties_set_reply_to(PROPERTIES_HANDLE properties, AMQP_VALUE reply_to_value) 12281 { 12282 int result; 12283 12284 if (properties == NULL) 12285 { 12286 result = __LINE__; 12287 } 12288 else 12289 { 12290 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12291 AMQP_VALUE reply_to_amqp_value = amqpvalue_clone(reply_to_value); 12292 if (reply_to_amqp_value == NULL) 12293 { 12294 result = __LINE__; 12295 } 12296 else 12297 { 12298 if (amqpvalue_set_composite_item(properties_instance->composite_value, 4, reply_to_amqp_value) != 0) 12299 { 12300 result = __LINE__; 12301 } 12302 else 12303 { 12304 result = 0; 12305 } 12306 12307 amqpvalue_destroy(reply_to_amqp_value); 12308 } 12309 } 12310 12311 return result; 12312 } 12313 12314 int properties_get_correlation_id(PROPERTIES_HANDLE properties, AMQP_VALUE* correlation_id_value) 12315 { 12316 int result; 12317 12318 if (properties == NULL) 12319 { 12320 result = __LINE__; 12321 } 12322 else 12323 { 12324 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12325 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 5); 12326 if (item_value == NULL) 12327 { 12328 result = __LINE__; 12329 } 12330 else 12331 { 12332 *correlation_id_value = item_value; 12333 result = 0; 12334 } 12335 } 12336 12337 return result; 12338 } 12339 12340 int properties_set_correlation_id(PROPERTIES_HANDLE properties, AMQP_VALUE correlation_id_value) 12341 { 12342 int result; 12343 12344 if (properties == NULL) 12345 { 12346 result = __LINE__; 12347 } 12348 else 12349 { 12350 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12351 AMQP_VALUE correlation_id_amqp_value = amqpvalue_clone(correlation_id_value); 12352 if (correlation_id_amqp_value == NULL) 12353 { 12354 result = __LINE__; 12355 } 12356 else 12357 { 12358 if (amqpvalue_set_composite_item(properties_instance->composite_value, 5, correlation_id_amqp_value) != 0) 12359 { 12360 result = __LINE__; 12361 } 12362 else 12363 { 12364 result = 0; 12365 } 12366 12367 amqpvalue_destroy(correlation_id_amqp_value); 12368 } 12369 } 12370 12371 return result; 12372 } 12373 12374 int properties_get_content_type(PROPERTIES_HANDLE properties, const char** content_type_value) 12375 { 12376 int result; 12377 12378 if (properties == NULL) 12379 { 12380 result = __LINE__; 12381 } 12382 else 12383 { 12384 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12385 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 6); 12386 if (item_value == NULL) 12387 { 12388 result = __LINE__; 12389 } 12390 else 12391 { 12392 if (amqpvalue_get_symbol(item_value, content_type_value) != 0) 12393 { 12394 result = __LINE__; 12395 } 12396 else 12397 { 12398 result = 0; 12399 } 12400 } 12401 } 12402 12403 return result; 12404 } 12405 12406 int properties_set_content_type(PROPERTIES_HANDLE properties, const char* content_type_value) 12407 { 12408 int result; 12409 12410 if (properties == NULL) 12411 { 12412 result = __LINE__; 12413 } 12414 else 12415 { 12416 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12417 AMQP_VALUE content_type_amqp_value = amqpvalue_create_symbol(content_type_value); 12418 if (content_type_amqp_value == NULL) 12419 { 12420 result = __LINE__; 12421 } 12422 else 12423 { 12424 if (amqpvalue_set_composite_item(properties_instance->composite_value, 6, content_type_amqp_value) != 0) 12425 { 12426 result = __LINE__; 12427 } 12428 else 12429 { 12430 result = 0; 12431 } 12432 12433 amqpvalue_destroy(content_type_amqp_value); 12434 } 12435 } 12436 12437 return result; 12438 } 12439 12440 int properties_get_content_encoding(PROPERTIES_HANDLE properties, const char** content_encoding_value) 12441 { 12442 int result; 12443 12444 if (properties == NULL) 12445 { 12446 result = __LINE__; 12447 } 12448 else 12449 { 12450 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12451 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 7); 12452 if (item_value == NULL) 12453 { 12454 result = __LINE__; 12455 } 12456 else 12457 { 12458 if (amqpvalue_get_symbol(item_value, content_encoding_value) != 0) 12459 { 12460 result = __LINE__; 12461 } 12462 else 12463 { 12464 result = 0; 12465 } 12466 } 12467 } 12468 12469 return result; 12470 } 12471 12472 int properties_set_content_encoding(PROPERTIES_HANDLE properties, const char* content_encoding_value) 12473 { 12474 int result; 12475 12476 if (properties == NULL) 12477 { 12478 result = __LINE__; 12479 } 12480 else 12481 { 12482 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12483 AMQP_VALUE content_encoding_amqp_value = amqpvalue_create_symbol(content_encoding_value); 12484 if (content_encoding_amqp_value == NULL) 12485 { 12486 result = __LINE__; 12487 } 12488 else 12489 { 12490 if (amqpvalue_set_composite_item(properties_instance->composite_value, 7, content_encoding_amqp_value) != 0) 12491 { 12492 result = __LINE__; 12493 } 12494 else 12495 { 12496 result = 0; 12497 } 12498 12499 amqpvalue_destroy(content_encoding_amqp_value); 12500 } 12501 } 12502 12503 return result; 12504 } 12505 12506 int properties_get_absolute_expiry_time(PROPERTIES_HANDLE properties, timestamp* absolute_expiry_time_value) 12507 { 12508 int result; 12509 12510 if (properties == NULL) 12511 { 12512 result = __LINE__; 12513 } 12514 else 12515 { 12516 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12517 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 8); 12518 if (item_value == NULL) 12519 { 12520 result = __LINE__; 12521 } 12522 else 12523 { 12524 if (amqpvalue_get_timestamp(item_value, absolute_expiry_time_value) != 0) 12525 { 12526 result = __LINE__; 12527 } 12528 else 12529 { 12530 result = 0; 12531 } 12532 } 12533 } 12534 12535 return result; 12536 } 12537 12538 int properties_set_absolute_expiry_time(PROPERTIES_HANDLE properties, timestamp absolute_expiry_time_value) 12539 { 12540 int result; 12541 12542 if (properties == NULL) 12543 { 12544 result = __LINE__; 12545 } 12546 else 12547 { 12548 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12549 AMQP_VALUE absolute_expiry_time_amqp_value = amqpvalue_create_timestamp(absolute_expiry_time_value); 12550 if (absolute_expiry_time_amqp_value == NULL) 12551 { 12552 result = __LINE__; 12553 } 12554 else 12555 { 12556 if (amqpvalue_set_composite_item(properties_instance->composite_value, 8, absolute_expiry_time_amqp_value) != 0) 12557 { 12558 result = __LINE__; 12559 } 12560 else 12561 { 12562 result = 0; 12563 } 12564 12565 amqpvalue_destroy(absolute_expiry_time_amqp_value); 12566 } 12567 } 12568 12569 return result; 12570 } 12571 12572 int properties_get_creation_time(PROPERTIES_HANDLE properties, timestamp* creation_time_value) 12573 { 12574 int result; 12575 12576 if (properties == NULL) 12577 { 12578 result = __LINE__; 12579 } 12580 else 12581 { 12582 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12583 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 9); 12584 if (item_value == NULL) 12585 { 12586 result = __LINE__; 12587 } 12588 else 12589 { 12590 if (amqpvalue_get_timestamp(item_value, creation_time_value) != 0) 12591 { 12592 result = __LINE__; 12593 } 12594 else 12595 { 12596 result = 0; 12597 } 12598 } 12599 } 12600 12601 return result; 12602 } 12603 12604 int properties_set_creation_time(PROPERTIES_HANDLE properties, timestamp creation_time_value) 12605 { 12606 int result; 12607 12608 if (properties == NULL) 12609 { 12610 result = __LINE__; 12611 } 12612 else 12613 { 12614 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12615 AMQP_VALUE creation_time_amqp_value = amqpvalue_create_timestamp(creation_time_value); 12616 if (creation_time_amqp_value == NULL) 12617 { 12618 result = __LINE__; 12619 } 12620 else 12621 { 12622 if (amqpvalue_set_composite_item(properties_instance->composite_value, 9, creation_time_amqp_value) != 0) 12623 { 12624 result = __LINE__; 12625 } 12626 else 12627 { 12628 result = 0; 12629 } 12630 12631 amqpvalue_destroy(creation_time_amqp_value); 12632 } 12633 } 12634 12635 return result; 12636 } 12637 12638 int properties_get_group_id(PROPERTIES_HANDLE properties, const char** group_id_value) 12639 { 12640 int result; 12641 12642 if (properties == NULL) 12643 { 12644 result = __LINE__; 12645 } 12646 else 12647 { 12648 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12649 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 10); 12650 if (item_value == NULL) 12651 { 12652 result = __LINE__; 12653 } 12654 else 12655 { 12656 if (amqpvalue_get_string(item_value, group_id_value) != 0) 12657 { 12658 result = __LINE__; 12659 } 12660 else 12661 { 12662 result = 0; 12663 } 12664 } 12665 } 12666 12667 return result; 12668 } 12669 12670 int properties_set_group_id(PROPERTIES_HANDLE properties, const char* group_id_value) 12671 { 12672 int result; 12673 12674 if (properties == NULL) 12675 { 12676 result = __LINE__; 12677 } 12678 else 12679 { 12680 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12681 AMQP_VALUE group_id_amqp_value = amqpvalue_create_string(group_id_value); 12682 if (group_id_amqp_value == NULL) 12683 { 12684 result = __LINE__; 12685 } 12686 else 12687 { 12688 if (amqpvalue_set_composite_item(properties_instance->composite_value, 10, group_id_amqp_value) != 0) 12689 { 12690 result = __LINE__; 12691 } 12692 else 12693 { 12694 result = 0; 12695 } 12696 12697 amqpvalue_destroy(group_id_amqp_value); 12698 } 12699 } 12700 12701 return result; 12702 } 12703 12704 int properties_get_group_sequence(PROPERTIES_HANDLE properties, sequence_no* group_sequence_value) 12705 { 12706 int result; 12707 12708 if (properties == NULL) 12709 { 12710 result = __LINE__; 12711 } 12712 else 12713 { 12714 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12715 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 11); 12716 if (item_value == NULL) 12717 { 12718 result = __LINE__; 12719 } 12720 else 12721 { 12722 if (amqpvalue_get_sequence_no(item_value, group_sequence_value) != 0) 12723 { 12724 result = __LINE__; 12725 } 12726 else 12727 { 12728 result = 0; 12729 } 12730 } 12731 } 12732 12733 return result; 12734 } 12735 12736 int properties_set_group_sequence(PROPERTIES_HANDLE properties, sequence_no group_sequence_value) 12737 { 12738 int result; 12739 12740 if (properties == NULL) 12741 { 12742 result = __LINE__; 12743 } 12744 else 12745 { 12746 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12747 AMQP_VALUE group_sequence_amqp_value = amqpvalue_create_sequence_no(group_sequence_value); 12748 if (group_sequence_amqp_value == NULL) 12749 { 12750 result = __LINE__; 12751 } 12752 else 12753 { 12754 if (amqpvalue_set_composite_item(properties_instance->composite_value, 11, group_sequence_amqp_value) != 0) 12755 { 12756 result = __LINE__; 12757 } 12758 else 12759 { 12760 result = 0; 12761 } 12762 12763 amqpvalue_destroy(group_sequence_amqp_value); 12764 } 12765 } 12766 12767 return result; 12768 } 12769 12770 int properties_get_reply_to_group_id(PROPERTIES_HANDLE properties, const char** reply_to_group_id_value) 12771 { 12772 int result; 12773 12774 if (properties == NULL) 12775 { 12776 result = __LINE__; 12777 } 12778 else 12779 { 12780 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12781 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(properties_instance->composite_value, 12); 12782 if (item_value == NULL) 12783 { 12784 result = __LINE__; 12785 } 12786 else 12787 { 12788 if (amqpvalue_get_string(item_value, reply_to_group_id_value) != 0) 12789 { 12790 result = __LINE__; 12791 } 12792 else 12793 { 12794 result = 0; 12795 } 12796 } 12797 } 12798 12799 return result; 12800 } 12801 12802 int properties_set_reply_to_group_id(PROPERTIES_HANDLE properties, const char* reply_to_group_id_value) 12803 { 12804 int result; 12805 12806 if (properties == NULL) 12807 { 12808 result = __LINE__; 12809 } 12810 else 12811 { 12812 PROPERTIES_INSTANCE* properties_instance = (PROPERTIES_INSTANCE*)properties; 12813 AMQP_VALUE reply_to_group_id_amqp_value = amqpvalue_create_string(reply_to_group_id_value); 12814 if (reply_to_group_id_amqp_value == NULL) 12815 { 12816 result = __LINE__; 12817 } 12818 else 12819 { 12820 if (amqpvalue_set_composite_item(properties_instance->composite_value, 12, reply_to_group_id_amqp_value) != 0) 12821 { 12822 result = __LINE__; 12823 } 12824 else 12825 { 12826 result = 0; 12827 } 12828 12829 amqpvalue_destroy(reply_to_group_id_amqp_value); 12830 } 12831 } 12832 12833 return result; 12834 } 12835 12836 12837 /* received */ 12838 12839 typedef struct RECEIVED_INSTANCE_TAG 12840 { 12841 AMQP_VALUE composite_value; 12842 } RECEIVED_INSTANCE; 12843 12844 static RECEIVED_HANDLE received_create_internal(void) 12845 { 12846 RECEIVED_INSTANCE* received_instance = (RECEIVED_INSTANCE*)amqpalloc_malloc(sizeof(RECEIVED_INSTANCE)); 12847 if (received_instance != NULL) 12848 { 12849 received_instance->composite_value = NULL; 12850 } 12851 12852 return received_instance; 12853 } 12854 12855 RECEIVED_HANDLE received_create(uint32_t section_number_value, uint64_t section_offset_value) 12856 { 12857 RECEIVED_INSTANCE* received_instance = (RECEIVED_INSTANCE*)amqpalloc_malloc(sizeof(RECEIVED_INSTANCE)); 12858 if (received_instance != NULL) 12859 { 12860 received_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(35); 12861 if (received_instance->composite_value == NULL) 12862 { 12863 amqpalloc_free(received_instance); 12864 received_instance = NULL; 12865 } 12866 else 12867 { 12868 AMQP_VALUE section_number_amqp_value; 12869 AMQP_VALUE section_offset_amqp_value; 12870 int result = 0; 12871 12872 section_number_amqp_value = amqpvalue_create_uint(section_number_value); 12873 if ((result == 0) && (amqpvalue_set_composite_item(received_instance->composite_value, 0, section_number_amqp_value) != 0)) 12874 { 12875 result = __LINE__; 12876 } 12877 section_offset_amqp_value = amqpvalue_create_ulong(section_offset_value); 12878 if ((result == 0) && (amqpvalue_set_composite_item(received_instance->composite_value, 1, section_offset_amqp_value) != 0)) 12879 { 12880 result = __LINE__; 12881 } 12882 12883 amqpvalue_destroy(section_number_amqp_value); 12884 amqpvalue_destroy(section_offset_amqp_value); 12885 } 12886 } 12887 12888 return received_instance; 12889 } 12890 12891 RECEIVED_HANDLE received_clone(RECEIVED_HANDLE value) 12892 { 12893 RECEIVED_INSTANCE* received_instance = (RECEIVED_INSTANCE*)amqpalloc_malloc(sizeof(RECEIVED_INSTANCE)); 12894 if (received_instance != NULL) 12895 { 12896 received_instance->composite_value = amqpvalue_clone(((RECEIVED_INSTANCE*)value)->composite_value); 12897 if (received_instance->composite_value == NULL) 12898 { 12899 amqpalloc_free(received_instance); 12900 received_instance = NULL; 12901 } 12902 } 12903 12904 return received_instance; 12905 } 12906 12907 void received_destroy(RECEIVED_HANDLE received) 12908 { 12909 if (received != NULL) 12910 { 12911 RECEIVED_INSTANCE* received_instance = (RECEIVED_INSTANCE*)received; 12912 amqpvalue_destroy(received_instance->composite_value); 12913 amqpalloc_free(received_instance); 12914 } 12915 } 12916 12917 AMQP_VALUE amqpvalue_create_received(RECEIVED_HANDLE received) 12918 { 12919 AMQP_VALUE result; 12920 12921 if (received == NULL) 12922 { 12923 result = NULL; 12924 } 12925 else 12926 { 12927 RECEIVED_INSTANCE* received_instance = (RECEIVED_INSTANCE*)received; 12928 result = amqpvalue_clone(received_instance->composite_value); 12929 } 12930 12931 return result; 12932 } 12933 12934 bool is_received_type_by_descriptor(AMQP_VALUE descriptor) 12935 { 12936 bool result; 12937 12938 uint64_t descriptor_ulong; 12939 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 12940 (descriptor_ulong == 35)) 12941 { 12942 result = true; 12943 } 12944 else 12945 { 12946 result = false; 12947 } 12948 12949 return result; 12950 } 12951 12952 12953 int amqpvalue_get_received(AMQP_VALUE value, RECEIVED_HANDLE* received_handle) 12954 { 12955 int result; 12956 RECEIVED_INSTANCE* received_instance = (RECEIVED_INSTANCE*)received_create_internal(); 12957 *received_handle = received_instance; 12958 if (*received_handle == NULL) 12959 { 12960 result = __LINE__; 12961 } 12962 else 12963 { 12964 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 12965 if (list_value == NULL) 12966 { 12967 received_destroy(*received_handle); 12968 result = __LINE__; 12969 } 12970 else 12971 { 12972 do 12973 { 12974 AMQP_VALUE item_value; 12975 /* section-number */ 12976 item_value = amqpvalue_get_list_item(list_value, 0); 12977 if (item_value == NULL) 12978 { 12979 { 12980 received_destroy(*received_handle); 12981 result = __LINE__; 12982 break; 12983 } 12984 } 12985 else 12986 { 12987 uint32_t section_number; 12988 if (amqpvalue_get_uint(item_value, §ion_number) != 0) 12989 { 12990 received_destroy(*received_handle); 12991 result = __LINE__; 12992 break; 12993 } 12994 12995 amqpvalue_destroy(item_value); 12996 } 12997 /* section-offset */ 12998 item_value = amqpvalue_get_list_item(list_value, 1); 12999 if (item_value == NULL) 13000 { 13001 { 13002 received_destroy(*received_handle); 13003 result = __LINE__; 13004 break; 13005 } 13006 } 13007 else 13008 { 13009 uint64_t section_offset; 13010 if (amqpvalue_get_ulong(item_value, §ion_offset) != 0) 13011 { 13012 received_destroy(*received_handle); 13013 result = __LINE__; 13014 break; 13015 } 13016 13017 amqpvalue_destroy(item_value); 13018 } 13019 13020 received_instance->composite_value = amqpvalue_clone(value); 13021 13022 result = 0; 13023 } while (0); 13024 } 13025 } 13026 13027 return result; 13028 } 13029 13030 int received_get_section_number(RECEIVED_HANDLE received, uint32_t* section_number_value) 13031 { 13032 int result; 13033 13034 if (received == NULL) 13035 { 13036 result = __LINE__; 13037 } 13038 else 13039 { 13040 RECEIVED_INSTANCE* received_instance = (RECEIVED_INSTANCE*)received; 13041 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(received_instance->composite_value, 0); 13042 if (item_value == NULL) 13043 { 13044 result = __LINE__; 13045 } 13046 else 13047 { 13048 if (amqpvalue_get_uint(item_value, section_number_value) != 0) 13049 { 13050 result = __LINE__; 13051 } 13052 else 13053 { 13054 result = 0; 13055 } 13056 } 13057 } 13058 13059 return result; 13060 } 13061 13062 int received_set_section_number(RECEIVED_HANDLE received, uint32_t section_number_value) 13063 { 13064 int result; 13065 13066 if (received == NULL) 13067 { 13068 result = __LINE__; 13069 } 13070 else 13071 { 13072 RECEIVED_INSTANCE* received_instance = (RECEIVED_INSTANCE*)received; 13073 AMQP_VALUE section_number_amqp_value = amqpvalue_create_uint(section_number_value); 13074 if (section_number_amqp_value == NULL) 13075 { 13076 result = __LINE__; 13077 } 13078 else 13079 { 13080 if (amqpvalue_set_composite_item(received_instance->composite_value, 0, section_number_amqp_value) != 0) 13081 { 13082 result = __LINE__; 13083 } 13084 else 13085 { 13086 result = 0; 13087 } 13088 13089 amqpvalue_destroy(section_number_amqp_value); 13090 } 13091 } 13092 13093 return result; 13094 } 13095 13096 int received_get_section_offset(RECEIVED_HANDLE received, uint64_t* section_offset_value) 13097 { 13098 int result; 13099 13100 if (received == NULL) 13101 { 13102 result = __LINE__; 13103 } 13104 else 13105 { 13106 RECEIVED_INSTANCE* received_instance = (RECEIVED_INSTANCE*)received; 13107 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(received_instance->composite_value, 1); 13108 if (item_value == NULL) 13109 { 13110 result = __LINE__; 13111 } 13112 else 13113 { 13114 if (amqpvalue_get_ulong(item_value, section_offset_value) != 0) 13115 { 13116 result = __LINE__; 13117 } 13118 else 13119 { 13120 result = 0; 13121 } 13122 } 13123 } 13124 13125 return result; 13126 } 13127 13128 int received_set_section_offset(RECEIVED_HANDLE received, uint64_t section_offset_value) 13129 { 13130 int result; 13131 13132 if (received == NULL) 13133 { 13134 result = __LINE__; 13135 } 13136 else 13137 { 13138 RECEIVED_INSTANCE* received_instance = (RECEIVED_INSTANCE*)received; 13139 AMQP_VALUE section_offset_amqp_value = amqpvalue_create_ulong(section_offset_value); 13140 if (section_offset_amqp_value == NULL) 13141 { 13142 result = __LINE__; 13143 } 13144 else 13145 { 13146 if (amqpvalue_set_composite_item(received_instance->composite_value, 1, section_offset_amqp_value) != 0) 13147 { 13148 result = __LINE__; 13149 } 13150 else 13151 { 13152 result = 0; 13153 } 13154 13155 amqpvalue_destroy(section_offset_amqp_value); 13156 } 13157 } 13158 13159 return result; 13160 } 13161 13162 13163 /* accepted */ 13164 13165 typedef struct ACCEPTED_INSTANCE_TAG 13166 { 13167 AMQP_VALUE composite_value; 13168 } ACCEPTED_INSTANCE; 13169 13170 static ACCEPTED_HANDLE accepted_create_internal(void) 13171 { 13172 ACCEPTED_INSTANCE* accepted_instance = (ACCEPTED_INSTANCE*)amqpalloc_malloc(sizeof(ACCEPTED_INSTANCE)); 13173 if (accepted_instance != NULL) 13174 { 13175 accepted_instance->composite_value = NULL; 13176 } 13177 13178 return accepted_instance; 13179 } 13180 13181 ACCEPTED_HANDLE accepted_create(void) 13182 { 13183 ACCEPTED_INSTANCE* accepted_instance = (ACCEPTED_INSTANCE*)amqpalloc_malloc(sizeof(ACCEPTED_INSTANCE)); 13184 if (accepted_instance != NULL) 13185 { 13186 accepted_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(36); 13187 if (accepted_instance->composite_value == NULL) 13188 { 13189 amqpalloc_free(accepted_instance); 13190 accepted_instance = NULL; 13191 } 13192 } 13193 13194 return accepted_instance; 13195 } 13196 13197 ACCEPTED_HANDLE accepted_clone(ACCEPTED_HANDLE value) 13198 { 13199 ACCEPTED_INSTANCE* accepted_instance = (ACCEPTED_INSTANCE*)amqpalloc_malloc(sizeof(ACCEPTED_INSTANCE)); 13200 if (accepted_instance != NULL) 13201 { 13202 accepted_instance->composite_value = amqpvalue_clone(((ACCEPTED_INSTANCE*)value)->composite_value); 13203 if (accepted_instance->composite_value == NULL) 13204 { 13205 amqpalloc_free(accepted_instance); 13206 accepted_instance = NULL; 13207 } 13208 } 13209 13210 return accepted_instance; 13211 } 13212 13213 void accepted_destroy(ACCEPTED_HANDLE accepted) 13214 { 13215 if (accepted != NULL) 13216 { 13217 ACCEPTED_INSTANCE* accepted_instance = (ACCEPTED_INSTANCE*)accepted; 13218 amqpvalue_destroy(accepted_instance->composite_value); 13219 amqpalloc_free(accepted_instance); 13220 } 13221 } 13222 13223 AMQP_VALUE amqpvalue_create_accepted(ACCEPTED_HANDLE accepted) 13224 { 13225 AMQP_VALUE result; 13226 13227 if (accepted == NULL) 13228 { 13229 result = NULL; 13230 } 13231 else 13232 { 13233 ACCEPTED_INSTANCE* accepted_instance = (ACCEPTED_INSTANCE*)accepted; 13234 result = amqpvalue_clone(accepted_instance->composite_value); 13235 } 13236 13237 return result; 13238 } 13239 13240 bool is_accepted_type_by_descriptor(AMQP_VALUE descriptor) 13241 { 13242 bool result; 13243 13244 uint64_t descriptor_ulong; 13245 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 13246 (descriptor_ulong == 36)) 13247 { 13248 result = true; 13249 } 13250 else 13251 { 13252 result = false; 13253 } 13254 13255 return result; 13256 } 13257 13258 13259 int amqpvalue_get_accepted(AMQP_VALUE value, ACCEPTED_HANDLE* accepted_handle) 13260 { 13261 int result; 13262 ACCEPTED_INSTANCE* accepted_instance = (ACCEPTED_INSTANCE*)accepted_create_internal(); 13263 *accepted_handle = accepted_instance; 13264 if (*accepted_handle == NULL) 13265 { 13266 result = __LINE__; 13267 } 13268 else 13269 { 13270 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 13271 if (list_value == NULL) 13272 { 13273 accepted_destroy(*accepted_handle); 13274 result = __LINE__; 13275 } 13276 else 13277 { 13278 do 13279 { 13280 13281 accepted_instance->composite_value = amqpvalue_clone(value); 13282 13283 result = 0; 13284 } while (0); 13285 } 13286 } 13287 13288 return result; 13289 } 13290 13291 13292 /* rejected */ 13293 13294 typedef struct REJECTED_INSTANCE_TAG 13295 { 13296 AMQP_VALUE composite_value; 13297 } REJECTED_INSTANCE; 13298 13299 static REJECTED_HANDLE rejected_create_internal(void) 13300 { 13301 REJECTED_INSTANCE* rejected_instance = (REJECTED_INSTANCE*)amqpalloc_malloc(sizeof(REJECTED_INSTANCE)); 13302 if (rejected_instance != NULL) 13303 { 13304 rejected_instance->composite_value = NULL; 13305 } 13306 13307 return rejected_instance; 13308 } 13309 13310 REJECTED_HANDLE rejected_create(void) 13311 { 13312 REJECTED_INSTANCE* rejected_instance = (REJECTED_INSTANCE*)amqpalloc_malloc(sizeof(REJECTED_INSTANCE)); 13313 if (rejected_instance != NULL) 13314 { 13315 rejected_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(37); 13316 if (rejected_instance->composite_value == NULL) 13317 { 13318 amqpalloc_free(rejected_instance); 13319 rejected_instance = NULL; 13320 } 13321 } 13322 13323 return rejected_instance; 13324 } 13325 13326 REJECTED_HANDLE rejected_clone(REJECTED_HANDLE value) 13327 { 13328 REJECTED_INSTANCE* rejected_instance = (REJECTED_INSTANCE*)amqpalloc_malloc(sizeof(REJECTED_INSTANCE)); 13329 if (rejected_instance != NULL) 13330 { 13331 rejected_instance->composite_value = amqpvalue_clone(((REJECTED_INSTANCE*)value)->composite_value); 13332 if (rejected_instance->composite_value == NULL) 13333 { 13334 amqpalloc_free(rejected_instance); 13335 rejected_instance = NULL; 13336 } 13337 } 13338 13339 return rejected_instance; 13340 } 13341 13342 void rejected_destroy(REJECTED_HANDLE rejected) 13343 { 13344 if (rejected != NULL) 13345 { 13346 REJECTED_INSTANCE* rejected_instance = (REJECTED_INSTANCE*)rejected; 13347 amqpvalue_destroy(rejected_instance->composite_value); 13348 amqpalloc_free(rejected_instance); 13349 } 13350 } 13351 13352 AMQP_VALUE amqpvalue_create_rejected(REJECTED_HANDLE rejected) 13353 { 13354 AMQP_VALUE result; 13355 13356 if (rejected == NULL) 13357 { 13358 result = NULL; 13359 } 13360 else 13361 { 13362 REJECTED_INSTANCE* rejected_instance = (REJECTED_INSTANCE*)rejected; 13363 result = amqpvalue_clone(rejected_instance->composite_value); 13364 } 13365 13366 return result; 13367 } 13368 13369 bool is_rejected_type_by_descriptor(AMQP_VALUE descriptor) 13370 { 13371 bool result; 13372 13373 uint64_t descriptor_ulong; 13374 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 13375 (descriptor_ulong == 37)) 13376 { 13377 result = true; 13378 } 13379 else 13380 { 13381 result = false; 13382 } 13383 13384 return result; 13385 } 13386 13387 13388 int amqpvalue_get_rejected(AMQP_VALUE value, REJECTED_HANDLE* rejected_handle) 13389 { 13390 int result; 13391 REJECTED_INSTANCE* rejected_instance = (REJECTED_INSTANCE*)rejected_create_internal(); 13392 *rejected_handle = rejected_instance; 13393 if (*rejected_handle == NULL) 13394 { 13395 result = __LINE__; 13396 } 13397 else 13398 { 13399 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 13400 if (list_value == NULL) 13401 { 13402 rejected_destroy(*rejected_handle); 13403 result = __LINE__; 13404 } 13405 else 13406 { 13407 do 13408 { 13409 AMQP_VALUE item_value; 13410 /* error */ 13411 item_value = amqpvalue_get_list_item(list_value, 0); 13412 if (item_value == NULL) 13413 { 13414 /* do nothing */ 13415 } 13416 else 13417 { 13418 ERROR_HANDLE error; 13419 if (amqpvalue_get_error(item_value, &error) != 0) 13420 { 13421 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 13422 { 13423 rejected_destroy(*rejected_handle); 13424 result = __LINE__; 13425 break; 13426 } 13427 } 13428 13429 amqpvalue_destroy(item_value); 13430 } 13431 13432 rejected_instance->composite_value = amqpvalue_clone(value); 13433 13434 result = 0; 13435 } while (0); 13436 } 13437 } 13438 13439 return result; 13440 } 13441 13442 int rejected_get_error(REJECTED_HANDLE rejected, ERROR_HANDLE* error_value) 13443 { 13444 int result; 13445 13446 if (rejected == NULL) 13447 { 13448 result = __LINE__; 13449 } 13450 else 13451 { 13452 REJECTED_INSTANCE* rejected_instance = (REJECTED_INSTANCE*)rejected; 13453 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(rejected_instance->composite_value, 0); 13454 if (item_value == NULL) 13455 { 13456 result = __LINE__; 13457 } 13458 else 13459 { 13460 if (amqpvalue_get_error(item_value, error_value) != 0) 13461 { 13462 result = __LINE__; 13463 } 13464 else 13465 { 13466 result = 0; 13467 } 13468 } 13469 } 13470 13471 return result; 13472 } 13473 13474 int rejected_set_error(REJECTED_HANDLE rejected, ERROR_HANDLE error_value) 13475 { 13476 int result; 13477 13478 if (rejected == NULL) 13479 { 13480 result = __LINE__; 13481 } 13482 else 13483 { 13484 REJECTED_INSTANCE* rejected_instance = (REJECTED_INSTANCE*)rejected; 13485 AMQP_VALUE error_amqp_value = amqpvalue_create_error(error_value); 13486 if (error_amqp_value == NULL) 13487 { 13488 result = __LINE__; 13489 } 13490 else 13491 { 13492 if (amqpvalue_set_composite_item(rejected_instance->composite_value, 0, error_amqp_value) != 0) 13493 { 13494 result = __LINE__; 13495 } 13496 else 13497 { 13498 result = 0; 13499 } 13500 13501 amqpvalue_destroy(error_amqp_value); 13502 } 13503 } 13504 13505 return result; 13506 } 13507 13508 13509 /* released */ 13510 13511 typedef struct RELEASED_INSTANCE_TAG 13512 { 13513 AMQP_VALUE composite_value; 13514 } RELEASED_INSTANCE; 13515 13516 static RELEASED_HANDLE released_create_internal(void) 13517 { 13518 RELEASED_INSTANCE* released_instance = (RELEASED_INSTANCE*)amqpalloc_malloc(sizeof(RELEASED_INSTANCE)); 13519 if (released_instance != NULL) 13520 { 13521 released_instance->composite_value = NULL; 13522 } 13523 13524 return released_instance; 13525 } 13526 13527 RELEASED_HANDLE released_create(void) 13528 { 13529 RELEASED_INSTANCE* released_instance = (RELEASED_INSTANCE*)amqpalloc_malloc(sizeof(RELEASED_INSTANCE)); 13530 if (released_instance != NULL) 13531 { 13532 released_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(38); 13533 if (released_instance->composite_value == NULL) 13534 { 13535 amqpalloc_free(released_instance); 13536 released_instance = NULL; 13537 } 13538 } 13539 13540 return released_instance; 13541 } 13542 13543 RELEASED_HANDLE released_clone(RELEASED_HANDLE value) 13544 { 13545 RELEASED_INSTANCE* released_instance = (RELEASED_INSTANCE*)amqpalloc_malloc(sizeof(RELEASED_INSTANCE)); 13546 if (released_instance != NULL) 13547 { 13548 released_instance->composite_value = amqpvalue_clone(((RELEASED_INSTANCE*)value)->composite_value); 13549 if (released_instance->composite_value == NULL) 13550 { 13551 amqpalloc_free(released_instance); 13552 released_instance = NULL; 13553 } 13554 } 13555 13556 return released_instance; 13557 } 13558 13559 void released_destroy(RELEASED_HANDLE released) 13560 { 13561 if (released != NULL) 13562 { 13563 RELEASED_INSTANCE* released_instance = (RELEASED_INSTANCE*)released; 13564 amqpvalue_destroy(released_instance->composite_value); 13565 amqpalloc_free(released_instance); 13566 } 13567 } 13568 13569 AMQP_VALUE amqpvalue_create_released(RELEASED_HANDLE released) 13570 { 13571 AMQP_VALUE result; 13572 13573 if (released == NULL) 13574 { 13575 result = NULL; 13576 } 13577 else 13578 { 13579 RELEASED_INSTANCE* released_instance = (RELEASED_INSTANCE*)released; 13580 result = amqpvalue_clone(released_instance->composite_value); 13581 } 13582 13583 return result; 13584 } 13585 13586 bool is_released_type_by_descriptor(AMQP_VALUE descriptor) 13587 { 13588 bool result; 13589 13590 uint64_t descriptor_ulong; 13591 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 13592 (descriptor_ulong == 38)) 13593 { 13594 result = true; 13595 } 13596 else 13597 { 13598 result = false; 13599 } 13600 13601 return result; 13602 } 13603 13604 13605 int amqpvalue_get_released(AMQP_VALUE value, RELEASED_HANDLE* released_handle) 13606 { 13607 int result; 13608 RELEASED_INSTANCE* released_instance = (RELEASED_INSTANCE*)released_create_internal(); 13609 *released_handle = released_instance; 13610 if (*released_handle == NULL) 13611 { 13612 result = __LINE__; 13613 } 13614 else 13615 { 13616 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 13617 if (list_value == NULL) 13618 { 13619 released_destroy(*released_handle); 13620 result = __LINE__; 13621 } 13622 else 13623 { 13624 do 13625 { 13626 13627 released_instance->composite_value = amqpvalue_clone(value); 13628 13629 result = 0; 13630 } while (0); 13631 } 13632 } 13633 13634 return result; 13635 } 13636 13637 13638 /* modified */ 13639 13640 typedef struct MODIFIED_INSTANCE_TAG 13641 { 13642 AMQP_VALUE composite_value; 13643 } MODIFIED_INSTANCE; 13644 13645 static MODIFIED_HANDLE modified_create_internal(void) 13646 { 13647 MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)amqpalloc_malloc(sizeof(MODIFIED_INSTANCE)); 13648 if (modified_instance != NULL) 13649 { 13650 modified_instance->composite_value = NULL; 13651 } 13652 13653 return modified_instance; 13654 } 13655 13656 MODIFIED_HANDLE modified_create(void) 13657 { 13658 MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)amqpalloc_malloc(sizeof(MODIFIED_INSTANCE)); 13659 if (modified_instance != NULL) 13660 { 13661 modified_instance->composite_value = amqpvalue_create_composite_with_ulong_descriptor(39); 13662 if (modified_instance->composite_value == NULL) 13663 { 13664 amqpalloc_free(modified_instance); 13665 modified_instance = NULL; 13666 } 13667 } 13668 13669 return modified_instance; 13670 } 13671 13672 MODIFIED_HANDLE modified_clone(MODIFIED_HANDLE value) 13673 { 13674 MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)amqpalloc_malloc(sizeof(MODIFIED_INSTANCE)); 13675 if (modified_instance != NULL) 13676 { 13677 modified_instance->composite_value = amqpvalue_clone(((MODIFIED_INSTANCE*)value)->composite_value); 13678 if (modified_instance->composite_value == NULL) 13679 { 13680 amqpalloc_free(modified_instance); 13681 modified_instance = NULL; 13682 } 13683 } 13684 13685 return modified_instance; 13686 } 13687 13688 void modified_destroy(MODIFIED_HANDLE modified) 13689 { 13690 if (modified != NULL) 13691 { 13692 MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)modified; 13693 amqpvalue_destroy(modified_instance->composite_value); 13694 amqpalloc_free(modified_instance); 13695 } 13696 } 13697 13698 AMQP_VALUE amqpvalue_create_modified(MODIFIED_HANDLE modified) 13699 { 13700 AMQP_VALUE result; 13701 13702 if (modified == NULL) 13703 { 13704 result = NULL; 13705 } 13706 else 13707 { 13708 MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)modified; 13709 result = amqpvalue_clone(modified_instance->composite_value); 13710 } 13711 13712 return result; 13713 } 13714 13715 bool is_modified_type_by_descriptor(AMQP_VALUE descriptor) 13716 { 13717 bool result; 13718 13719 uint64_t descriptor_ulong; 13720 if ((amqpvalue_get_ulong(descriptor, &descriptor_ulong) == 0) && 13721 (descriptor_ulong == 39)) 13722 { 13723 result = true; 13724 } 13725 else 13726 { 13727 result = false; 13728 } 13729 13730 return result; 13731 } 13732 13733 13734 int amqpvalue_get_modified(AMQP_VALUE value, MODIFIED_HANDLE* modified_handle) 13735 { 13736 int result; 13737 MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)modified_create_internal(); 13738 *modified_handle = modified_instance; 13739 if (*modified_handle == NULL) 13740 { 13741 result = __LINE__; 13742 } 13743 else 13744 { 13745 AMQP_VALUE list_value = amqpvalue_get_inplace_described_value(value); 13746 if (list_value == NULL) 13747 { 13748 modified_destroy(*modified_handle); 13749 result = __LINE__; 13750 } 13751 else 13752 { 13753 do 13754 { 13755 AMQP_VALUE item_value; 13756 /* delivery-failed */ 13757 item_value = amqpvalue_get_list_item(list_value, 0); 13758 if (item_value == NULL) 13759 { 13760 /* do nothing */ 13761 } 13762 else 13763 { 13764 bool delivery_failed; 13765 if (amqpvalue_get_boolean(item_value, &delivery_failed) != 0) 13766 { 13767 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 13768 { 13769 modified_destroy(*modified_handle); 13770 result = __LINE__; 13771 break; 13772 } 13773 } 13774 13775 amqpvalue_destroy(item_value); 13776 } 13777 /* undeliverable-here */ 13778 item_value = amqpvalue_get_list_item(list_value, 1); 13779 if (item_value == NULL) 13780 { 13781 /* do nothing */ 13782 } 13783 else 13784 { 13785 bool undeliverable_here; 13786 if (amqpvalue_get_boolean(item_value, &undeliverable_here) != 0) 13787 { 13788 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 13789 { 13790 modified_destroy(*modified_handle); 13791 result = __LINE__; 13792 break; 13793 } 13794 } 13795 13796 amqpvalue_destroy(item_value); 13797 } 13798 /* message-annotations */ 13799 item_value = amqpvalue_get_list_item(list_value, 2); 13800 if (item_value == NULL) 13801 { 13802 /* do nothing */ 13803 } 13804 else 13805 { 13806 fields message_annotations; 13807 if (amqpvalue_get_fields(item_value, &message_annotations) != 0) 13808 { 13809 if (amqpvalue_get_type(item_value) != AMQP_TYPE_NULL) 13810 { 13811 modified_destroy(*modified_handle); 13812 result = __LINE__; 13813 break; 13814 } 13815 } 13816 13817 amqpvalue_destroy(item_value); 13818 } 13819 13820 modified_instance->composite_value = amqpvalue_clone(value); 13821 13822 result = 0; 13823 } while (0); 13824 } 13825 } 13826 13827 return result; 13828 } 13829 13830 int modified_get_delivery_failed(MODIFIED_HANDLE modified, bool* delivery_failed_value) 13831 { 13832 int result; 13833 13834 if (modified == NULL) 13835 { 13836 result = __LINE__; 13837 } 13838 else 13839 { 13840 MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)modified; 13841 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(modified_instance->composite_value, 0); 13842 if (item_value == NULL) 13843 { 13844 result = __LINE__; 13845 } 13846 else 13847 { 13848 if (amqpvalue_get_boolean(item_value, delivery_failed_value) != 0) 13849 { 13850 result = __LINE__; 13851 } 13852 else 13853 { 13854 result = 0; 13855 } 13856 } 13857 } 13858 13859 return result; 13860 } 13861 13862 int modified_set_delivery_failed(MODIFIED_HANDLE modified, bool delivery_failed_value) 13863 { 13864 int result; 13865 13866 if (modified == NULL) 13867 { 13868 result = __LINE__; 13869 } 13870 else 13871 { 13872 MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)modified; 13873 AMQP_VALUE delivery_failed_amqp_value = amqpvalue_create_boolean(delivery_failed_value); 13874 if (delivery_failed_amqp_value == NULL) 13875 { 13876 result = __LINE__; 13877 } 13878 else 13879 { 13880 if (amqpvalue_set_composite_item(modified_instance->composite_value, 0, delivery_failed_amqp_value) != 0) 13881 { 13882 result = __LINE__; 13883 } 13884 else 13885 { 13886 result = 0; 13887 } 13888 13889 amqpvalue_destroy(delivery_failed_amqp_value); 13890 } 13891 } 13892 13893 return result; 13894 } 13895 13896 int modified_get_undeliverable_here(MODIFIED_HANDLE modified, bool* undeliverable_here_value) 13897 { 13898 int result; 13899 13900 if (modified == NULL) 13901 { 13902 result = __LINE__; 13903 } 13904 else 13905 { 13906 MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)modified; 13907 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(modified_instance->composite_value, 1); 13908 if (item_value == NULL) 13909 { 13910 result = __LINE__; 13911 } 13912 else 13913 { 13914 if (amqpvalue_get_boolean(item_value, undeliverable_here_value) != 0) 13915 { 13916 result = __LINE__; 13917 } 13918 else 13919 { 13920 result = 0; 13921 } 13922 } 13923 } 13924 13925 return result; 13926 } 13927 13928 int modified_set_undeliverable_here(MODIFIED_HANDLE modified, bool undeliverable_here_value) 13929 { 13930 int result; 13931 13932 if (modified == NULL) 13933 { 13934 result = __LINE__; 13935 } 13936 else 13937 { 13938 MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)modified; 13939 AMQP_VALUE undeliverable_here_amqp_value = amqpvalue_create_boolean(undeliverable_here_value); 13940 if (undeliverable_here_amqp_value == NULL) 13941 { 13942 result = __LINE__; 13943 } 13944 else 13945 { 13946 if (amqpvalue_set_composite_item(modified_instance->composite_value, 1, undeliverable_here_amqp_value) != 0) 13947 { 13948 result = __LINE__; 13949 } 13950 else 13951 { 13952 result = 0; 13953 } 13954 13955 amqpvalue_destroy(undeliverable_here_amqp_value); 13956 } 13957 } 13958 13959 return result; 13960 } 13961 13962 int modified_get_message_annotations(MODIFIED_HANDLE modified, fields* message_annotations_value) 13963 { 13964 int result; 13965 13966 if (modified == NULL) 13967 { 13968 result = __LINE__; 13969 } 13970 else 13971 { 13972 MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)modified; 13973 AMQP_VALUE item_value = amqpvalue_get_composite_item_in_place(modified_instance->composite_value, 2); 13974 if (item_value == NULL) 13975 { 13976 result = __LINE__; 13977 } 13978 else 13979 { 13980 if (amqpvalue_get_fields(item_value, message_annotations_value) != 0) 13981 { 13982 result = __LINE__; 13983 } 13984 else 13985 { 13986 result = 0; 13987 } 13988 } 13989 } 13990 13991 return result; 13992 } 13993 13994 int modified_set_message_annotations(MODIFIED_HANDLE modified, fields message_annotations_value) 13995 { 13996 int result; 13997 13998 if (modified == NULL) 13999 { 14000 result = __LINE__; 14001 } 14002 else 14003 { 14004 MODIFIED_INSTANCE* modified_instance = (MODIFIED_INSTANCE*)modified; 14005 AMQP_VALUE message_annotations_amqp_value = amqpvalue_create_fields(message_annotations_value); 14006 if (message_annotations_amqp_value == NULL) 14007 { 14008 result = __LINE__; 14009 } 14010 else 14011 { 14012 if (amqpvalue_set_composite_item(modified_instance->composite_value, 2, message_annotations_amqp_value) != 0) 14013 { 14014 result = __LINE__; 14015 } 14016 else 14017 { 14018 result = 0; 14019 } 14020 14021 amqpvalue_destroy(message_annotations_amqp_value); 14022 } 14023 } 14024 14025 return result; 14026 } 14027 14028
Generated on Tue Jul 12 2022 12:43:16 by
