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
messaging.c
00001 // Copyright (c) Microsoft. All rights reserved. 00002 // Licensed under the MIT license. See LICENSE file in the project root for full license information. 00003 00004 #include <stdlib.h> 00005 #ifdef _CRTDBG_MAP_ALLOC 00006 #include <crtdbg.h> 00007 #endif 00008 #include <stdbool.h> 00009 #include "azure_uamqp_c/amqpvalue.h" 00010 #include "azure_uamqp_c/amqp_definitions.h" 00011 00012 AMQP_VALUE messaging_create_source(const char* address) 00013 { 00014 AMQP_VALUE result; 00015 SOURCE_HANDLE source = source_create(); 00016 if (source == NULL) 00017 { 00018 result = NULL; 00019 } 00020 else 00021 { 00022 AMQP_VALUE address_value = amqpvalue_create_string(address); 00023 if (address_value == NULL) 00024 { 00025 result = NULL; 00026 } 00027 else 00028 { 00029 if (source_set_address(source, address_value) != 0) 00030 { 00031 result = NULL; 00032 } 00033 else 00034 { 00035 result = amqpvalue_create_source(source); 00036 } 00037 00038 amqpvalue_destroy(address_value); 00039 } 00040 00041 source_destroy(source); 00042 } 00043 00044 return result; 00045 } 00046 00047 AMQP_VALUE messaging_create_target(const char* address) 00048 { 00049 AMQP_VALUE result; 00050 TARGET_HANDLE target = target_create(); 00051 if (target == NULL) 00052 { 00053 result = NULL; 00054 } 00055 else 00056 { 00057 AMQP_VALUE address_value = amqpvalue_create_string(address); 00058 if (address_value == NULL) 00059 { 00060 result = NULL; 00061 } 00062 else 00063 { 00064 if (target_set_address(target, address_value) != 0) 00065 { 00066 result = NULL; 00067 } 00068 else 00069 { 00070 result = amqpvalue_create_target(target); 00071 } 00072 00073 amqpvalue_destroy(address_value); 00074 } 00075 00076 target_destroy(target); 00077 } 00078 00079 return result; 00080 } 00081 00082 AMQP_VALUE messaging_delivery_received(uint32_t section_number, uint64_t section_offset) 00083 { 00084 AMQP_VALUE result; 00085 RECEIVED_HANDLE received = received_create(section_number, section_offset); 00086 if (received == NULL) 00087 { 00088 result = NULL; 00089 } 00090 else 00091 { 00092 result = amqpvalue_create_received(received); 00093 received_destroy(received); 00094 } 00095 00096 return result; 00097 } 00098 00099 AMQP_VALUE messaging_delivery_accepted(void) 00100 { 00101 AMQP_VALUE result; 00102 ACCEPTED_HANDLE accepted = accepted_create(); 00103 if (accepted == NULL) 00104 { 00105 result = NULL; 00106 } 00107 else 00108 { 00109 result = amqpvalue_create_accepted(accepted); 00110 accepted_destroy(accepted); 00111 } 00112 00113 return result; 00114 } 00115 00116 AMQP_VALUE messaging_delivery_rejected(const char* error_condition, const char* error_description) 00117 { 00118 AMQP_VALUE result; 00119 REJECTED_HANDLE rejected = rejected_create(); 00120 if (rejected == NULL) 00121 { 00122 result = NULL; 00123 } 00124 else 00125 { 00126 ERROR_HANDLE error_handle = NULL; 00127 bool error_constructing = false; 00128 00129 if (error_condition != NULL) 00130 { 00131 error_handle = error_create(error_condition); 00132 if (error_handle == NULL) 00133 { 00134 error_constructing = true; 00135 } 00136 else 00137 { 00138 if ((error_description != NULL) && 00139 (error_set_description(error_handle, error_description) != 0)) 00140 { 00141 error_constructing = true; 00142 } 00143 else 00144 { 00145 if (rejected_set_error(rejected, error_handle) != 0) 00146 { 00147 error_constructing = true; 00148 } 00149 } 00150 00151 error_destroy(error_handle); 00152 } 00153 } 00154 00155 if (error_constructing) 00156 { 00157 result = NULL; 00158 } 00159 else 00160 { 00161 result = amqpvalue_create_rejected(rejected); 00162 } 00163 00164 rejected_destroy(rejected); 00165 } 00166 00167 return result; 00168 } 00169 00170 AMQP_VALUE messaging_delivery_released(void) 00171 { 00172 AMQP_VALUE result; 00173 RELEASED_HANDLE released = released_create(); 00174 if (released == NULL) 00175 { 00176 result = NULL; 00177 } 00178 else 00179 { 00180 result = amqpvalue_create_released(released); 00181 released_destroy(released); 00182 } 00183 00184 return result; 00185 } 00186 00187 AMQP_VALUE messaging_delivery_modified(bool delivery_failed, bool undeliverable_here, fields message_annotations) 00188 { 00189 AMQP_VALUE result; 00190 MODIFIED_HANDLE modified = modified_create(); 00191 if (modified == NULL) 00192 { 00193 result = NULL; 00194 } 00195 else 00196 { 00197 if ((modified_set_delivery_failed(modified, delivery_failed) != 0) || 00198 (modified_set_undeliverable_here(modified, undeliverable_here) != 0) || 00199 ((message_annotations != NULL) && (modified_set_message_annotations(modified, message_annotations) != 0))) 00200 { 00201 result = NULL; 00202 } 00203 else 00204 { 00205 result = amqpvalue_create_modified(modified); 00206 } 00207 00208 modified_destroy(modified); 00209 } 00210 00211 return result; 00212 }
Generated on Tue Jul 12 2022 12:43:21 by
