A small memory footprint AMQP implimentation

Dependents:   iothub_client_sample_amqp remote_monitoring simplesample_amqp

Committer:
AzureIoTClient
Date:
Fri Feb 24 14:00:58 2017 -0800
Revision:
19:000ab4e6a2c1
Parent:
17:923575db8b2d
Child:
20:206846c14c80
1.1.8

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Azure.IoT Build 0:6ae2f7bca550 1 // Copyright (c) Microsoft. All rights reserved.
Azure.IoT Build 0:6ae2f7bca550 2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
Azure.IoT Build 0:6ae2f7bca550 3
Azure.IoT Build 0:6ae2f7bca550 4 #include <stdlib.h>
Azure.IoT Build 0:6ae2f7bca550 5 #include <string.h>
AzureIoTClient 19:000ab4e6a2c1 6 #include "azure_c_shared_utility/optimize_size.h"
Azure.IoT Build 0:6ae2f7bca550 7 #include "azure_uamqp_c/message.h"
Azure.IoT Build 0:6ae2f7bca550 8 #include "azure_uamqp_c/amqpvalue.h"
Azure.IoT Build 0:6ae2f7bca550 9 #include "azure_uamqp_c/amqpalloc.h"
Azure.IoT Build 0:6ae2f7bca550 10
Azure.IoT Build 0:6ae2f7bca550 11 typedef struct BODY_AMQP_DATA_TAG
Azure.IoT Build 0:6ae2f7bca550 12 {
Azure.IoT Build 0:6ae2f7bca550 13 unsigned char* body_data_section_bytes;
Azure.IoT Build 0:6ae2f7bca550 14 size_t body_data_section_length;
Azure.IoT Build 0:6ae2f7bca550 15 } BODY_AMQP_DATA;
Azure.IoT Build 0:6ae2f7bca550 16
Azure.IoT Build 0:6ae2f7bca550 17 typedef struct MESSAGE_INSTANCE_TAG
Azure.IoT Build 0:6ae2f7bca550 18 {
Azure.IoT Build 0:6ae2f7bca550 19 BODY_AMQP_DATA* body_amqp_data_items;
Azure.IoT Build 0:6ae2f7bca550 20 size_t body_amqp_data_count;
Azure.IoT Build 0:6ae2f7bca550 21 AMQP_VALUE* body_amqp_sequence_items;
Azure.IoT Build 0:6ae2f7bca550 22 size_t body_amqp_sequence_count;
Azure.IoT Build 0:6ae2f7bca550 23 AMQP_VALUE body_amqp_value;
Azure.IoT Build 0:6ae2f7bca550 24 HEADER_HANDLE header;
Azure.IoT Build 0:6ae2f7bca550 25 annotations delivery_annotations;
Azure.IoT Build 0:6ae2f7bca550 26 annotations message_annotations;
Azure.IoT Build 0:6ae2f7bca550 27 PROPERTIES_HANDLE properties;
Azure.IoT Build 0:6ae2f7bca550 28 application_properties application_properties;
Azure.IoT Build 0:6ae2f7bca550 29 annotations footer;
Azure.IoT Build 0:6ae2f7bca550 30 uint32_t message_format;
Azure.IoT Build 0:6ae2f7bca550 31 } MESSAGE_INSTANCE;
Azure.IoT Build 0:6ae2f7bca550 32
Azure.IoT Build 0:6ae2f7bca550 33 static void free_all_body_data_items(MESSAGE_INSTANCE* message_instance)
Azure.IoT Build 0:6ae2f7bca550 34 {
Azure.IoT Build 0:6ae2f7bca550 35 size_t i;
Azure.IoT Build 0:6ae2f7bca550 36
Azure.IoT Build 0:6ae2f7bca550 37 for (i = 0; i < message_instance->body_amqp_data_count; i++)
Azure.IoT Build 0:6ae2f7bca550 38 {
Azure.IoT Build 0:6ae2f7bca550 39 if (message_instance->body_amqp_data_items[i].body_data_section_bytes != NULL)
Azure.IoT Build 0:6ae2f7bca550 40 {
Azure.IoT Build 0:6ae2f7bca550 41 amqpalloc_free(message_instance->body_amqp_data_items[i].body_data_section_bytes);
Azure.IoT Build 0:6ae2f7bca550 42 }
Azure.IoT Build 0:6ae2f7bca550 43 }
Azure.IoT Build 0:6ae2f7bca550 44
Azure.IoT Build 0:6ae2f7bca550 45 amqpalloc_free(message_instance->body_amqp_data_items);
Azure.IoT Build 0:6ae2f7bca550 46 message_instance->body_amqp_data_count = 0;
Azure.IoT Build 0:6ae2f7bca550 47 message_instance->body_amqp_data_items = NULL;
Azure.IoT Build 0:6ae2f7bca550 48 }
Azure.IoT Build 0:6ae2f7bca550 49
Azure.IoT Build 0:6ae2f7bca550 50 static void free_all_body_sequence_items(MESSAGE_INSTANCE* message_instance)
Azure.IoT Build 0:6ae2f7bca550 51 {
Azure.IoT Build 0:6ae2f7bca550 52 size_t i;
Azure.IoT Build 0:6ae2f7bca550 53
Azure.IoT Build 0:6ae2f7bca550 54 for (i = 0; i < message_instance->body_amqp_sequence_count; i++)
Azure.IoT Build 0:6ae2f7bca550 55 {
Azure.IoT Build 0:6ae2f7bca550 56 if (message_instance->body_amqp_sequence_items[i] != NULL)
Azure.IoT Build 0:6ae2f7bca550 57 {
Azure.IoT Build 0:6ae2f7bca550 58 amqpvalue_destroy(message_instance->body_amqp_sequence_items[i]);
Azure.IoT Build 0:6ae2f7bca550 59 }
Azure.IoT Build 0:6ae2f7bca550 60 }
Azure.IoT Build 0:6ae2f7bca550 61
Azure.IoT Build 0:6ae2f7bca550 62 amqpalloc_free(message_instance->body_amqp_sequence_items);
Azure.IoT Build 0:6ae2f7bca550 63 message_instance->body_amqp_sequence_count = 0;
Azure.IoT Build 0:6ae2f7bca550 64 message_instance->body_amqp_sequence_items = NULL;
Azure.IoT Build 0:6ae2f7bca550 65 }
Azure.IoT Build 0:6ae2f7bca550 66
Azure.IoT Build 0:6ae2f7bca550 67 MESSAGE_HANDLE message_create(void)
Azure.IoT Build 0:6ae2f7bca550 68 {
Azure.IoT Build 0:6ae2f7bca550 69 MESSAGE_INSTANCE* result = (MESSAGE_INSTANCE*)amqpalloc_malloc(sizeof(MESSAGE_INSTANCE));
Azure.IoT Build 0:6ae2f7bca550 70 /* Codes_SRS_MESSAGE_01_002: [If allocating memory for the message fails, message_create shall fail and return NULL.] */
Azure.IoT Build 0:6ae2f7bca550 71 if (result != NULL)
Azure.IoT Build 0:6ae2f7bca550 72 {
Azure.IoT Build 0:6ae2f7bca550 73 result->header = NULL;
Azure.IoT Build 0:6ae2f7bca550 74 result->delivery_annotations = NULL;
Azure.IoT Build 0:6ae2f7bca550 75 result->message_annotations = NULL;
Azure.IoT Build 0:6ae2f7bca550 76 result->properties = NULL;
Azure.IoT Build 0:6ae2f7bca550 77 result->application_properties = NULL;
Azure.IoT Build 0:6ae2f7bca550 78 result->footer = NULL;
Azure.IoT Build 0:6ae2f7bca550 79 result->body_amqp_data_items = NULL;
Azure.IoT Build 0:6ae2f7bca550 80 result->body_amqp_data_count = 0;
Azure.IoT Build 0:6ae2f7bca550 81 result->body_amqp_value = NULL;
Azure.IoT Build 0:6ae2f7bca550 82 result->body_amqp_sequence_items = NULL;
Azure.IoT Build 0:6ae2f7bca550 83 result->body_amqp_sequence_count = 0;
Azure.IoT Build 0:6ae2f7bca550 84 result->message_format = 0;
Azure.IoT Build 0:6ae2f7bca550 85 }
Azure.IoT Build 0:6ae2f7bca550 86
Azure.IoT Build 0:6ae2f7bca550 87 /* Codes_SRS_MESSAGE_01_001: [message_create shall create a new AMQP message instance and on success it shall return a non-NULL handle for the newly created message instance.] */
Azure.IoT Build 0:6ae2f7bca550 88 return result;
Azure.IoT Build 0:6ae2f7bca550 89 }
Azure.IoT Build 0:6ae2f7bca550 90
Azure.IoT Build 0:6ae2f7bca550 91 MESSAGE_HANDLE message_clone(MESSAGE_HANDLE source_message)
Azure.IoT Build 0:6ae2f7bca550 92 {
Azure.IoT Build 0:6ae2f7bca550 93 MESSAGE_INSTANCE* result;
Azure.IoT Build 0:6ae2f7bca550 94
Azure.IoT Build 0:6ae2f7bca550 95 /* Codes_SRS_MESSAGE_01_062: [If source_message is NULL, message_clone shall fail and return NULL.] */
Azure.IoT Build 0:6ae2f7bca550 96 if (source_message == NULL)
Azure.IoT Build 0:6ae2f7bca550 97 {
Azure.IoT Build 0:6ae2f7bca550 98 result = NULL;
Azure.IoT Build 0:6ae2f7bca550 99 }
Azure.IoT Build 0:6ae2f7bca550 100 else
Azure.IoT Build 0:6ae2f7bca550 101 {
Azure.IoT Build 0:6ae2f7bca550 102 MESSAGE_INSTANCE* source_message_instance = (MESSAGE_INSTANCE*)source_message;
Azure.IoT Build 0:6ae2f7bca550 103 result = (MESSAGE_INSTANCE*)message_create();
Azure.IoT Build 0:6ae2f7bca550 104
Azure.IoT Build 0:6ae2f7bca550 105 /* Codes_SRS_MESSAGE_01_003: [message_clone shall clone a message entirely and on success return a non-NULL handle to the cloned message.] */
Azure.IoT Build 0:6ae2f7bca550 106 /* Codes_SRS_MESSAGE_01_004: [If allocating memory for the new cloned message fails, message_clone shall fail and return NULL.] */
Azure.IoT Build 0:6ae2f7bca550 107 if (result != NULL)
Azure.IoT Build 0:6ae2f7bca550 108 {
Azure.IoT Build 0:6ae2f7bca550 109 result->message_format = source_message_instance->message_format;
Azure.IoT Build 0:6ae2f7bca550 110
Azure.IoT Build 0:6ae2f7bca550 111 if (source_message_instance->header != NULL)
Azure.IoT Build 0:6ae2f7bca550 112 {
Azure.IoT Build 0:6ae2f7bca550 113 /* Codes_SRS_MESSAGE_01_005: [If a header exists on the source message it shall be cloned by using header_clone.] */
Azure.IoT Build 0:6ae2f7bca550 114 result->header = header_clone(source_message_instance->header);
Azure.IoT Build 0:6ae2f7bca550 115 if (result->header == NULL)
Azure.IoT Build 0:6ae2f7bca550 116 {
Azure.IoT Build 0:6ae2f7bca550 117 message_destroy(result);
Azure.IoT Build 0:6ae2f7bca550 118 result = NULL;
Azure.IoT Build 0:6ae2f7bca550 119 }
Azure.IoT Build 0:6ae2f7bca550 120 }
Azure.IoT Build 0:6ae2f7bca550 121
Azure.IoT Build 0:6ae2f7bca550 122 if ((result != NULL) && (source_message_instance->delivery_annotations != NULL))
Azure.IoT Build 0:6ae2f7bca550 123 {
Azure.IoT Build 0:6ae2f7bca550 124 /* Codes_SRS_MESSAGE_01_006: [If delivery annotations exist on the source message they shall be cloned by using annotations_clone.] */
Azure.IoT Build 0:6ae2f7bca550 125 result->delivery_annotations = annotations_clone(source_message_instance->delivery_annotations);
Azure.IoT Build 0:6ae2f7bca550 126 if (result->delivery_annotations == NULL)
Azure.IoT Build 0:6ae2f7bca550 127 {
Azure.IoT Build 0:6ae2f7bca550 128 message_destroy(result);
Azure.IoT Build 0:6ae2f7bca550 129 result = NULL;
Azure.IoT Build 0:6ae2f7bca550 130 }
Azure.IoT Build 0:6ae2f7bca550 131 }
Azure.IoT Build 0:6ae2f7bca550 132
Azure.IoT Build 0:6ae2f7bca550 133 if ((result != NULL) && (source_message_instance->message_annotations != NULL))
Azure.IoT Build 0:6ae2f7bca550 134 {
Azure.IoT Build 0:6ae2f7bca550 135 /* Codes_SRS_MESSAGE_01_007: [If message annotations exist on the source message they shall be cloned by using annotations_clone.] */
Azure.IoT Build 0:6ae2f7bca550 136 result->message_annotations = annotations_clone(source_message_instance->message_annotations);
Azure.IoT Build 0:6ae2f7bca550 137 if (result->message_annotations == NULL)
Azure.IoT Build 0:6ae2f7bca550 138 {
Azure.IoT Build 0:6ae2f7bca550 139 message_destroy(result);
Azure.IoT Build 0:6ae2f7bca550 140 result = NULL;
Azure.IoT Build 0:6ae2f7bca550 141 }
Azure.IoT Build 0:6ae2f7bca550 142 }
Azure.IoT Build 0:6ae2f7bca550 143
Azure.IoT Build 0:6ae2f7bca550 144 if ((result != NULL) && (source_message_instance->properties != NULL))
Azure.IoT Build 0:6ae2f7bca550 145 {
Azure.IoT Build 0:6ae2f7bca550 146 /* Codes_SRS_MESSAGE_01_008: [If message properties exist on the source message they shall be cloned by using properties_clone.] */
Azure.IoT Build 0:6ae2f7bca550 147 result->properties = properties_clone(source_message_instance->properties);
Azure.IoT Build 0:6ae2f7bca550 148 if (result->properties == NULL)
Azure.IoT Build 0:6ae2f7bca550 149 {
Azure.IoT Build 0:6ae2f7bca550 150 message_destroy(result);
Azure.IoT Build 0:6ae2f7bca550 151 result = NULL;
Azure.IoT Build 0:6ae2f7bca550 152 }
Azure.IoT Build 0:6ae2f7bca550 153 }
Azure.IoT Build 0:6ae2f7bca550 154
Azure.IoT Build 0:6ae2f7bca550 155 if ((result != NULL) && (source_message_instance->application_properties != NULL))
Azure.IoT Build 0:6ae2f7bca550 156 {
Azure.IoT Build 0:6ae2f7bca550 157 /* Codes_SRS_MESSAGE_01_009: [If application properties exist on the source message they shall be cloned by using amqpvalue_clone.] */
Azure.IoT Build 0:6ae2f7bca550 158 result->application_properties = amqpvalue_clone(source_message_instance->application_properties);
Azure.IoT Build 0:6ae2f7bca550 159 if (result->application_properties == NULL)
Azure.IoT Build 0:6ae2f7bca550 160 {
Azure.IoT Build 0:6ae2f7bca550 161 message_destroy(result);
Azure.IoT Build 0:6ae2f7bca550 162 result = NULL;
Azure.IoT Build 0:6ae2f7bca550 163 }
Azure.IoT Build 0:6ae2f7bca550 164 }
Azure.IoT Build 0:6ae2f7bca550 165
Azure.IoT Build 0:6ae2f7bca550 166 if ((result != NULL) && (source_message_instance->footer != NULL))
Azure.IoT Build 0:6ae2f7bca550 167 {
Azure.IoT Build 0:6ae2f7bca550 168 /* Codes_SRS_MESSAGE_01_010: [If a footer exists on the source message it shall be cloned by using annotations_clone.] */
Azure.IoT Build 0:6ae2f7bca550 169 result->footer = amqpvalue_clone(source_message_instance->footer);
Azure.IoT Build 0:6ae2f7bca550 170 if (result->footer == NULL)
Azure.IoT Build 0:6ae2f7bca550 171 {
Azure.IoT Build 0:6ae2f7bca550 172 message_destroy(result);
Azure.IoT Build 0:6ae2f7bca550 173 result = NULL;
Azure.IoT Build 0:6ae2f7bca550 174 }
Azure.IoT Build 0:6ae2f7bca550 175 }
Azure.IoT Build 0:6ae2f7bca550 176
Azure.IoT Build 0:6ae2f7bca550 177 if ((result != NULL) && (source_message_instance->body_amqp_data_count > 0))
Azure.IoT Build 0:6ae2f7bca550 178 {
Azure.IoT Build 0:6ae2f7bca550 179 size_t i;
Azure.IoT Build 0:6ae2f7bca550 180
Azure.IoT Build 0:6ae2f7bca550 181 result->body_amqp_data_items = (BODY_AMQP_DATA*)amqpalloc_malloc(source_message_instance->body_amqp_data_count * sizeof(BODY_AMQP_DATA));
Azure.IoT Build 0:6ae2f7bca550 182 if (result->body_amqp_data_items == NULL)
Azure.IoT Build 0:6ae2f7bca550 183 {
Azure.IoT Build 0:6ae2f7bca550 184 message_destroy(result);
Azure.IoT Build 0:6ae2f7bca550 185 result = NULL;
Azure.IoT Build 0:6ae2f7bca550 186 }
Azure.IoT Build 0:6ae2f7bca550 187 else
Azure.IoT Build 0:6ae2f7bca550 188 {
Azure.IoT Build 0:6ae2f7bca550 189 for (i = 0; i < source_message_instance->body_amqp_data_count; i++)
Azure.IoT Build 0:6ae2f7bca550 190 {
Azure.IoT Build 0:6ae2f7bca550 191 result->body_amqp_data_items[i].body_data_section_length = source_message_instance->body_amqp_data_items[i].body_data_section_length;
Azure.IoT Build 0:6ae2f7bca550 192
Azure.IoT Build 0:6ae2f7bca550 193 /* Codes_SRS_MESSAGE_01_011: [If an AMQP data has been set as message body on the source message it shall be cloned by allocating memory for the binary payload.] */
Azure.IoT Build 0:6ae2f7bca550 194 result->body_amqp_data_items[i].body_data_section_bytes = amqpalloc_malloc(source_message_instance->body_amqp_data_items[i].body_data_section_length);
Azure.IoT Build 0:6ae2f7bca550 195 if (result->body_amqp_data_items[i].body_data_section_bytes == NULL)
Azure.IoT Build 0:6ae2f7bca550 196 {
Azure.IoT Build 0:6ae2f7bca550 197 break;
Azure.IoT Build 0:6ae2f7bca550 198 }
Azure.IoT Build 0:6ae2f7bca550 199 else
Azure.IoT Build 0:6ae2f7bca550 200 {
Azure.IoT Build 0:6ae2f7bca550 201 (void)memcpy(result->body_amqp_data_items[i].body_data_section_bytes, source_message_instance->body_amqp_data_items[i].body_data_section_bytes, result->body_amqp_data_items[i].body_data_section_length);
Azure.IoT Build 0:6ae2f7bca550 202 }
Azure.IoT Build 0:6ae2f7bca550 203 }
Azure.IoT Build 0:6ae2f7bca550 204
Azure.IoT Build 0:6ae2f7bca550 205 result->body_amqp_data_count = i;
Azure.IoT Build 0:6ae2f7bca550 206 if (i < source_message_instance->body_amqp_data_count)
Azure.IoT Build 0:6ae2f7bca550 207 {
Azure.IoT Build 0:6ae2f7bca550 208 message_destroy(result);
Azure.IoT Build 0:6ae2f7bca550 209 result = NULL;
Azure.IoT Build 0:6ae2f7bca550 210 }
Azure.IoT Build 0:6ae2f7bca550 211 }
Azure.IoT Build 0:6ae2f7bca550 212 }
Azure.IoT Build 0:6ae2f7bca550 213
Azure.IoT Build 0:6ae2f7bca550 214 if ((result != NULL) && (source_message_instance->body_amqp_sequence_count > 0))
Azure.IoT Build 0:6ae2f7bca550 215 {
Azure.IoT Build 0:6ae2f7bca550 216 size_t i;
Azure.IoT Build 0:6ae2f7bca550 217
Azure.IoT Build 0:6ae2f7bca550 218 result->body_amqp_sequence_items = (AMQP_VALUE*)amqpalloc_malloc(source_message_instance->body_amqp_sequence_count * sizeof(AMQP_VALUE));
Azure.IoT Build 0:6ae2f7bca550 219 if (result->body_amqp_sequence_items == NULL)
Azure.IoT Build 0:6ae2f7bca550 220 {
Azure.IoT Build 0:6ae2f7bca550 221 message_destroy(result);
Azure.IoT Build 0:6ae2f7bca550 222 result = NULL;
Azure.IoT Build 0:6ae2f7bca550 223 }
Azure.IoT Build 0:6ae2f7bca550 224 else
Azure.IoT Build 0:6ae2f7bca550 225 {
Azure.IoT Build 0:6ae2f7bca550 226 for (i = 0; i < source_message_instance->body_amqp_sequence_count; i++)
Azure.IoT Build 0:6ae2f7bca550 227 {
Azure.IoT Build 0:6ae2f7bca550 228 /* Codes_SRS_MESSAGE_01_011: [If an AMQP data has been set as message body on the source message it shall be cloned by allocating memory for the binary payload.] */
Azure.IoT Build 0:6ae2f7bca550 229 result->body_amqp_sequence_items[i] = amqpvalue_clone(source_message_instance->body_amqp_sequence_items[i]);
Azure.IoT Build 0:6ae2f7bca550 230 if (result->body_amqp_sequence_items[i] == NULL)
Azure.IoT Build 0:6ae2f7bca550 231 {
Azure.IoT Build 0:6ae2f7bca550 232 break;
Azure.IoT Build 0:6ae2f7bca550 233 }
Azure.IoT Build 0:6ae2f7bca550 234 }
Azure.IoT Build 0:6ae2f7bca550 235
Azure.IoT Build 0:6ae2f7bca550 236 result->body_amqp_sequence_count = i;
Azure.IoT Build 0:6ae2f7bca550 237 if (i < source_message_instance->body_amqp_sequence_count)
Azure.IoT Build 0:6ae2f7bca550 238 {
Azure.IoT Build 0:6ae2f7bca550 239 message_destroy(result);
Azure.IoT Build 0:6ae2f7bca550 240 result = NULL;
Azure.IoT Build 0:6ae2f7bca550 241 }
Azure.IoT Build 0:6ae2f7bca550 242 }
Azure.IoT Build 0:6ae2f7bca550 243 }
Azure.IoT Build 0:6ae2f7bca550 244
Azure.IoT Build 0:6ae2f7bca550 245 if ((result != NULL) && (source_message_instance->body_amqp_value != NULL))
Azure.IoT Build 0:6ae2f7bca550 246 {
Azure.IoT Build 0:6ae2f7bca550 247 result->body_amqp_value = amqpvalue_clone(source_message_instance->body_amqp_value);
Azure.IoT Build 0:6ae2f7bca550 248 if (result->body_amqp_value == NULL)
Azure.IoT Build 0:6ae2f7bca550 249 {
Azure.IoT Build 0:6ae2f7bca550 250 message_destroy(result);
Azure.IoT Build 0:6ae2f7bca550 251 result = NULL;
Azure.IoT Build 0:6ae2f7bca550 252 }
Azure.IoT Build 0:6ae2f7bca550 253 }
Azure.IoT Build 0:6ae2f7bca550 254 }
Azure.IoT Build 0:6ae2f7bca550 255 }
Azure.IoT Build 0:6ae2f7bca550 256
Azure.IoT Build 0:6ae2f7bca550 257 return result;
Azure.IoT Build 0:6ae2f7bca550 258 }
Azure.IoT Build 0:6ae2f7bca550 259
Azure.IoT Build 0:6ae2f7bca550 260 void message_destroy(MESSAGE_HANDLE message)
Azure.IoT Build 0:6ae2f7bca550 261 {
Azure.IoT Build 0:6ae2f7bca550 262 if (message != NULL)
Azure.IoT Build 0:6ae2f7bca550 263 {
Azure.IoT Build 0:6ae2f7bca550 264 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 265
Azure.IoT Build 0:6ae2f7bca550 266 if (message_instance->header != NULL)
Azure.IoT Build 0:6ae2f7bca550 267 {
Azure.IoT Build 0:6ae2f7bca550 268 header_destroy(message_instance->header);
Azure.IoT Build 0:6ae2f7bca550 269 }
Azure.IoT Build 0:6ae2f7bca550 270 if (message_instance->properties != NULL)
Azure.IoT Build 0:6ae2f7bca550 271 {
Azure.IoT Build 0:6ae2f7bca550 272 properties_destroy(message_instance->properties);
Azure.IoT Build 0:6ae2f7bca550 273 }
Azure.IoT Build 0:6ae2f7bca550 274 if (message_instance->application_properties != NULL)
Azure.IoT Build 0:6ae2f7bca550 275 {
Azure.IoT Build 0:6ae2f7bca550 276 application_properties_destroy(message_instance->application_properties);
Azure.IoT Build 0:6ae2f7bca550 277 }
Azure.IoT Build 0:6ae2f7bca550 278 if (message_instance->footer != NULL)
Azure.IoT Build 0:6ae2f7bca550 279 {
Azure.IoT Build 0:6ae2f7bca550 280 annotations_destroy(message_instance->footer);
Azure.IoT Build 0:6ae2f7bca550 281 }
Azure.IoT Build 0:6ae2f7bca550 282 if (message_instance->body_amqp_value != NULL)
Azure.IoT Build 0:6ae2f7bca550 283 {
Azure.IoT Build 0:6ae2f7bca550 284 amqpvalue_destroy(message_instance->body_amqp_value);
Azure.IoT Build 0:6ae2f7bca550 285 }
Azure.IoT Build 0:6ae2f7bca550 286 if (message_instance->message_annotations != NULL)
Azure.IoT Build 0:6ae2f7bca550 287 {
Azure.IoT Build 0:6ae2f7bca550 288 application_properties_destroy(message_instance->message_annotations);
Azure.IoT Build 0:6ae2f7bca550 289 }
Azure.IoT Build 0:6ae2f7bca550 290
Azure.IoT Build 0:6ae2f7bca550 291 free_all_body_data_items(message_instance);
Azure.IoT Build 0:6ae2f7bca550 292 free_all_body_sequence_items(message_instance);
Azure.IoT Build 0:6ae2f7bca550 293 amqpalloc_free(message_instance);
Azure.IoT Build 0:6ae2f7bca550 294 }
Azure.IoT Build 0:6ae2f7bca550 295 }
Azure.IoT Build 0:6ae2f7bca550 296
Azure.IoT Build 0:6ae2f7bca550 297 int message_set_header(MESSAGE_HANDLE message, HEADER_HANDLE header)
Azure.IoT Build 0:6ae2f7bca550 298 {
Azure.IoT Build 0:6ae2f7bca550 299 int result;
Azure.IoT Build 0:6ae2f7bca550 300
Azure.IoT Build 0:6ae2f7bca550 301 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 302 (header == NULL))
Azure.IoT Build 0:6ae2f7bca550 303 {
AzureIoTClient 19:000ab4e6a2c1 304 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 305 }
Azure.IoT Build 0:6ae2f7bca550 306 else
Azure.IoT Build 0:6ae2f7bca550 307 {
Azure.IoT Build 0:6ae2f7bca550 308 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 309 HEADER_HANDLE new_header;
Azure.IoT Build 0:6ae2f7bca550 310
Azure.IoT Build 0:6ae2f7bca550 311 new_header = header_clone(header);
Azure.IoT Build 0:6ae2f7bca550 312 if (new_header == NULL)
Azure.IoT Build 0:6ae2f7bca550 313 {
AzureIoTClient 19:000ab4e6a2c1 314 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 315 }
Azure.IoT Build 0:6ae2f7bca550 316 else
Azure.IoT Build 0:6ae2f7bca550 317 {
Azure.IoT Build 0:6ae2f7bca550 318 if (message_instance->header != NULL)
Azure.IoT Build 0:6ae2f7bca550 319 {
Azure.IoT Build 0:6ae2f7bca550 320 header_destroy(message_instance->header);
Azure.IoT Build 0:6ae2f7bca550 321 }
Azure.IoT Build 0:6ae2f7bca550 322
Azure.IoT Build 0:6ae2f7bca550 323 message_instance->header = new_header;
Azure.IoT Build 0:6ae2f7bca550 324 result = 0;
Azure.IoT Build 0:6ae2f7bca550 325 }
Azure.IoT Build 0:6ae2f7bca550 326 }
Azure.IoT Build 0:6ae2f7bca550 327
Azure.IoT Build 0:6ae2f7bca550 328 return result;
Azure.IoT Build 0:6ae2f7bca550 329 }
Azure.IoT Build 0:6ae2f7bca550 330
Azure.IoT Build 0:6ae2f7bca550 331 int message_get_header(MESSAGE_HANDLE message, HEADER_HANDLE* header)
Azure.IoT Build 0:6ae2f7bca550 332 {
Azure.IoT Build 0:6ae2f7bca550 333 int result;
Azure.IoT Build 0:6ae2f7bca550 334
Azure.IoT Build 0:6ae2f7bca550 335 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 336 (header == NULL))
Azure.IoT Build 0:6ae2f7bca550 337 {
AzureIoTClient 19:000ab4e6a2c1 338 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 339 }
Azure.IoT Build 0:6ae2f7bca550 340 else
Azure.IoT Build 0:6ae2f7bca550 341 {
Azure.IoT Build 0:6ae2f7bca550 342 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 343
Azure.IoT Build 0:6ae2f7bca550 344 if (message_instance->header == NULL)
Azure.IoT Build 0:6ae2f7bca550 345 {
Azure.IoT Build 0:6ae2f7bca550 346 *header = NULL;
Azure.IoT Build 0:6ae2f7bca550 347 result = 0;
Azure.IoT Build 0:6ae2f7bca550 348 }
Azure.IoT Build 0:6ae2f7bca550 349 else
Azure.IoT Build 0:6ae2f7bca550 350 {
Azure.IoT Build 0:6ae2f7bca550 351 *header = header_clone(message_instance->header);
Azure.IoT Build 0:6ae2f7bca550 352 if (*header == NULL)
Azure.IoT Build 0:6ae2f7bca550 353 {
AzureIoTClient 19:000ab4e6a2c1 354 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 355 }
Azure.IoT Build 0:6ae2f7bca550 356 else
Azure.IoT Build 0:6ae2f7bca550 357 {
Azure.IoT Build 0:6ae2f7bca550 358 result = 0;
Azure.IoT Build 0:6ae2f7bca550 359 }
Azure.IoT Build 0:6ae2f7bca550 360 }
Azure.IoT Build 0:6ae2f7bca550 361 }
Azure.IoT Build 0:6ae2f7bca550 362
Azure.IoT Build 0:6ae2f7bca550 363 return result;
Azure.IoT Build 0:6ae2f7bca550 364 }
Azure.IoT Build 0:6ae2f7bca550 365
Azure.IoT Build 0:6ae2f7bca550 366 int message_set_delivery_annotations(MESSAGE_HANDLE message, annotations delivery_annotations)
Azure.IoT Build 0:6ae2f7bca550 367 {
Azure.IoT Build 0:6ae2f7bca550 368 int result;
Azure.IoT Build 0:6ae2f7bca550 369
Azure.IoT Build 0:6ae2f7bca550 370 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 371 (delivery_annotations == NULL))
Azure.IoT Build 0:6ae2f7bca550 372 {
AzureIoTClient 19:000ab4e6a2c1 373 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 374 }
Azure.IoT Build 0:6ae2f7bca550 375 else
Azure.IoT Build 0:6ae2f7bca550 376 {
Azure.IoT Build 0:6ae2f7bca550 377 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 378 annotations new_delivery_annotations;
Azure.IoT Build 0:6ae2f7bca550 379
Azure.IoT Build 0:6ae2f7bca550 380 new_delivery_annotations = annotations_clone(delivery_annotations);
Azure.IoT Build 0:6ae2f7bca550 381 if (new_delivery_annotations == NULL)
Azure.IoT Build 0:6ae2f7bca550 382 {
AzureIoTClient 19:000ab4e6a2c1 383 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 384 }
Azure.IoT Build 0:6ae2f7bca550 385 else
Azure.IoT Build 0:6ae2f7bca550 386 {
Azure.IoT Build 0:6ae2f7bca550 387 if (message_instance->delivery_annotations != NULL)
Azure.IoT Build 0:6ae2f7bca550 388 {
Azure.IoT Build 0:6ae2f7bca550 389 annotations_destroy(message_instance->delivery_annotations);
Azure.IoT Build 0:6ae2f7bca550 390 }
Azure.IoT Build 0:6ae2f7bca550 391 message_instance->delivery_annotations = new_delivery_annotations;
Azure.IoT Build 0:6ae2f7bca550 392 result = 0;
Azure.IoT Build 0:6ae2f7bca550 393 }
Azure.IoT Build 0:6ae2f7bca550 394 }
Azure.IoT Build 0:6ae2f7bca550 395
Azure.IoT Build 0:6ae2f7bca550 396 return result;
Azure.IoT Build 0:6ae2f7bca550 397 }
Azure.IoT Build 0:6ae2f7bca550 398
Azure.IoT Build 0:6ae2f7bca550 399 int message_get_delivery_annotations(MESSAGE_HANDLE message, annotations* delivery_annotations)
Azure.IoT Build 0:6ae2f7bca550 400 {
Azure.IoT Build 0:6ae2f7bca550 401 int result;
Azure.IoT Build 0:6ae2f7bca550 402
Azure.IoT Build 0:6ae2f7bca550 403 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 404 (delivery_annotations == NULL))
Azure.IoT Build 0:6ae2f7bca550 405 {
AzureIoTClient 19:000ab4e6a2c1 406 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 407 }
Azure.IoT Build 0:6ae2f7bca550 408 else
Azure.IoT Build 0:6ae2f7bca550 409 {
Azure.IoT Build 0:6ae2f7bca550 410 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 411
Azure.IoT Build 0:6ae2f7bca550 412 if (message_instance->delivery_annotations == NULL)
Azure.IoT Build 0:6ae2f7bca550 413 {
Azure.IoT Build 0:6ae2f7bca550 414 *delivery_annotations = NULL;
Azure.IoT Build 0:6ae2f7bca550 415 result = 0;
Azure.IoT Build 0:6ae2f7bca550 416 }
Azure.IoT Build 0:6ae2f7bca550 417 else
Azure.IoT Build 0:6ae2f7bca550 418 {
Azure.IoT Build 0:6ae2f7bca550 419 *delivery_annotations = annotations_clone(message_instance->delivery_annotations);
Azure.IoT Build 0:6ae2f7bca550 420 if (*delivery_annotations == NULL)
Azure.IoT Build 0:6ae2f7bca550 421 {
AzureIoTClient 19:000ab4e6a2c1 422 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 423 }
Azure.IoT Build 0:6ae2f7bca550 424 else
Azure.IoT Build 0:6ae2f7bca550 425 {
Azure.IoT Build 0:6ae2f7bca550 426 result = 0;
Azure.IoT Build 0:6ae2f7bca550 427 }
Azure.IoT Build 0:6ae2f7bca550 428 }
Azure.IoT Build 0:6ae2f7bca550 429 }
Azure.IoT Build 0:6ae2f7bca550 430
Azure.IoT Build 0:6ae2f7bca550 431 return result;
Azure.IoT Build 0:6ae2f7bca550 432 }
Azure.IoT Build 0:6ae2f7bca550 433
Azure.IoT Build 0:6ae2f7bca550 434 int message_set_message_annotations(MESSAGE_HANDLE message, annotations message_annotations)
Azure.IoT Build 0:6ae2f7bca550 435 {
Azure.IoT Build 0:6ae2f7bca550 436 int result;
Azure.IoT Build 0:6ae2f7bca550 437
Azure.IoT Build 0:6ae2f7bca550 438 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 439 (message_annotations == NULL))
Azure.IoT Build 0:6ae2f7bca550 440 {
AzureIoTClient 19:000ab4e6a2c1 441 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 442 }
Azure.IoT Build 0:6ae2f7bca550 443 else
Azure.IoT Build 0:6ae2f7bca550 444 {
Azure.IoT Build 0:6ae2f7bca550 445 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 446 annotations new_message_annotations;
Azure.IoT Build 0:6ae2f7bca550 447
Azure.IoT Build 0:6ae2f7bca550 448 new_message_annotations = annotations_clone(message_annotations);
Azure.IoT Build 0:6ae2f7bca550 449 if (new_message_annotations == NULL)
Azure.IoT Build 0:6ae2f7bca550 450 {
AzureIoTClient 19:000ab4e6a2c1 451 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 452 }
Azure.IoT Build 0:6ae2f7bca550 453 else
Azure.IoT Build 0:6ae2f7bca550 454 {
Azure.IoT Build 0:6ae2f7bca550 455 if (message_instance->message_annotations != NULL)
Azure.IoT Build 0:6ae2f7bca550 456 {
Azure.IoT Build 0:6ae2f7bca550 457 annotations_destroy(message_instance->message_annotations);
Azure.IoT Build 0:6ae2f7bca550 458 }
Azure.IoT Build 0:6ae2f7bca550 459
Azure.IoT Build 0:6ae2f7bca550 460 message_instance->message_annotations = new_message_annotations;
Azure.IoT Build 0:6ae2f7bca550 461 result = 0;
Azure.IoT Build 0:6ae2f7bca550 462 }
Azure.IoT Build 0:6ae2f7bca550 463 }
Azure.IoT Build 0:6ae2f7bca550 464
Azure.IoT Build 0:6ae2f7bca550 465 return result;
Azure.IoT Build 0:6ae2f7bca550 466 }
Azure.IoT Build 0:6ae2f7bca550 467
Azure.IoT Build 0:6ae2f7bca550 468 int message_get_message_annotations(MESSAGE_HANDLE message, annotations* message_annotations)
Azure.IoT Build 0:6ae2f7bca550 469 {
Azure.IoT Build 0:6ae2f7bca550 470 int result;
Azure.IoT Build 0:6ae2f7bca550 471
Azure.IoT Build 0:6ae2f7bca550 472 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 473 (message_annotations == NULL))
Azure.IoT Build 0:6ae2f7bca550 474 {
AzureIoTClient 19:000ab4e6a2c1 475 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 476 }
Azure.IoT Build 0:6ae2f7bca550 477 else
Azure.IoT Build 0:6ae2f7bca550 478 {
Azure.IoT Build 0:6ae2f7bca550 479 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 480
Azure.IoT Build 0:6ae2f7bca550 481 if (message_instance->message_annotations == NULL)
Azure.IoT Build 0:6ae2f7bca550 482 {
Azure.IoT Build 0:6ae2f7bca550 483 *message_annotations = NULL;
Azure.IoT Build 0:6ae2f7bca550 484 result = 0;
Azure.IoT Build 0:6ae2f7bca550 485 }
Azure.IoT Build 0:6ae2f7bca550 486 else
Azure.IoT Build 0:6ae2f7bca550 487 {
Azure.IoT Build 0:6ae2f7bca550 488 *message_annotations = annotations_clone(message_instance->message_annotations);
Azure.IoT Build 0:6ae2f7bca550 489 if (*message_annotations == NULL)
Azure.IoT Build 0:6ae2f7bca550 490 {
AzureIoTClient 19:000ab4e6a2c1 491 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 492 }
Azure.IoT Build 0:6ae2f7bca550 493 else
Azure.IoT Build 0:6ae2f7bca550 494 {
Azure.IoT Build 0:6ae2f7bca550 495 result = 0;
Azure.IoT Build 0:6ae2f7bca550 496 }
Azure.IoT Build 0:6ae2f7bca550 497 }
Azure.IoT Build 0:6ae2f7bca550 498 }
Azure.IoT Build 0:6ae2f7bca550 499
Azure.IoT Build 0:6ae2f7bca550 500 return result;
Azure.IoT Build 0:6ae2f7bca550 501 }
Azure.IoT Build 0:6ae2f7bca550 502
Azure.IoT Build 0:6ae2f7bca550 503 int message_set_properties(MESSAGE_HANDLE message, PROPERTIES_HANDLE properties)
Azure.IoT Build 0:6ae2f7bca550 504 {
Azure.IoT Build 0:6ae2f7bca550 505 int result;
Azure.IoT Build 0:6ae2f7bca550 506
Azure.IoT Build 0:6ae2f7bca550 507 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 508 (properties == NULL))
Azure.IoT Build 0:6ae2f7bca550 509 {
AzureIoTClient 19:000ab4e6a2c1 510 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 511 }
Azure.IoT Build 0:6ae2f7bca550 512 else
Azure.IoT Build 0:6ae2f7bca550 513 {
Azure.IoT Build 0:6ae2f7bca550 514 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 515 PROPERTIES_HANDLE new_properties;
Azure.IoT Build 0:6ae2f7bca550 516
Azure.IoT Build 0:6ae2f7bca550 517 new_properties = properties_clone(properties);
Azure.IoT Build 0:6ae2f7bca550 518 if (new_properties == NULL)
Azure.IoT Build 0:6ae2f7bca550 519 {
AzureIoTClient 19:000ab4e6a2c1 520 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 521 }
Azure.IoT Build 0:6ae2f7bca550 522 else
Azure.IoT Build 0:6ae2f7bca550 523 {
Azure.IoT Build 0:6ae2f7bca550 524 if (message_instance->properties != NULL)
Azure.IoT Build 0:6ae2f7bca550 525 {
Azure.IoT Build 0:6ae2f7bca550 526 properties_destroy(message_instance->properties);
Azure.IoT Build 0:6ae2f7bca550 527 }
Azure.IoT Build 0:6ae2f7bca550 528
Azure.IoT Build 0:6ae2f7bca550 529 message_instance->properties = new_properties;
Azure.IoT Build 0:6ae2f7bca550 530 result = 0;
Azure.IoT Build 0:6ae2f7bca550 531 }
Azure.IoT Build 0:6ae2f7bca550 532 }
Azure.IoT Build 0:6ae2f7bca550 533
Azure.IoT Build 0:6ae2f7bca550 534 return result;
Azure.IoT Build 0:6ae2f7bca550 535 }
Azure.IoT Build 0:6ae2f7bca550 536
Azure.IoT Build 0:6ae2f7bca550 537 int message_get_properties(MESSAGE_HANDLE message, PROPERTIES_HANDLE* properties)
Azure.IoT Build 0:6ae2f7bca550 538 {
Azure.IoT Build 0:6ae2f7bca550 539 int result;
Azure.IoT Build 0:6ae2f7bca550 540
Azure.IoT Build 0:6ae2f7bca550 541 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 542 (properties == NULL))
Azure.IoT Build 0:6ae2f7bca550 543 {
AzureIoTClient 19:000ab4e6a2c1 544 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 545 }
Azure.IoT Build 0:6ae2f7bca550 546 else
Azure.IoT Build 0:6ae2f7bca550 547 {
Azure.IoT Build 0:6ae2f7bca550 548 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 549
Azure.IoT Build 0:6ae2f7bca550 550 if (message_instance->properties == NULL)
Azure.IoT Build 0:6ae2f7bca550 551 {
Azure.IoT Build 0:6ae2f7bca550 552 *properties = NULL;
Azure.IoT Build 0:6ae2f7bca550 553 result = 0;
Azure.IoT Build 0:6ae2f7bca550 554 }
Azure.IoT Build 0:6ae2f7bca550 555 else
Azure.IoT Build 0:6ae2f7bca550 556 {
Azure.IoT Build 0:6ae2f7bca550 557 *properties = properties_clone(message_instance->properties);
Azure.IoT Build 0:6ae2f7bca550 558 if (*properties == NULL)
Azure.IoT Build 0:6ae2f7bca550 559 {
AzureIoTClient 19:000ab4e6a2c1 560 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 561 }
Azure.IoT Build 0:6ae2f7bca550 562 else
Azure.IoT Build 0:6ae2f7bca550 563 {
Azure.IoT Build 0:6ae2f7bca550 564 result = 0;
Azure.IoT Build 0:6ae2f7bca550 565 }
Azure.IoT Build 0:6ae2f7bca550 566 }
Azure.IoT Build 0:6ae2f7bca550 567 }
Azure.IoT Build 0:6ae2f7bca550 568
Azure.IoT Build 0:6ae2f7bca550 569 return result;
Azure.IoT Build 0:6ae2f7bca550 570 }
Azure.IoT Build 0:6ae2f7bca550 571
Azure.IoT Build 0:6ae2f7bca550 572 int message_set_application_properties(MESSAGE_HANDLE message, AMQP_VALUE application_properties)
Azure.IoT Build 0:6ae2f7bca550 573 {
Azure.IoT Build 0:6ae2f7bca550 574 int result;
Azure.IoT Build 0:6ae2f7bca550 575
Azure.IoT Build 0:6ae2f7bca550 576 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 577 (application_properties == NULL))
Azure.IoT Build 0:6ae2f7bca550 578 {
AzureIoTClient 19:000ab4e6a2c1 579 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 580 }
Azure.IoT Build 0:6ae2f7bca550 581 else
Azure.IoT Build 0:6ae2f7bca550 582 {
Azure.IoT Build 0:6ae2f7bca550 583 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 584 AMQP_VALUE new_application_properties;
Azure.IoT Build 0:6ae2f7bca550 585
Azure.IoT Build 0:6ae2f7bca550 586 new_application_properties = application_properties_clone(application_properties);
Azure.IoT Build 0:6ae2f7bca550 587 if (new_application_properties == NULL)
Azure.IoT Build 0:6ae2f7bca550 588 {
AzureIoTClient 19:000ab4e6a2c1 589 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 590 }
Azure.IoT Build 0:6ae2f7bca550 591 else
Azure.IoT Build 0:6ae2f7bca550 592 {
Azure.IoT Build 0:6ae2f7bca550 593 if (message_instance->application_properties != NULL)
Azure.IoT Build 0:6ae2f7bca550 594 {
Azure.IoT Build 0:6ae2f7bca550 595 amqpvalue_destroy(message_instance->application_properties);
Azure.IoT Build 0:6ae2f7bca550 596 }
Azure.IoT Build 0:6ae2f7bca550 597
Azure.IoT Build 0:6ae2f7bca550 598 message_instance->application_properties = new_application_properties;
Azure.IoT Build 0:6ae2f7bca550 599 result = 0;
Azure.IoT Build 0:6ae2f7bca550 600 }
Azure.IoT Build 0:6ae2f7bca550 601 }
Azure.IoT Build 0:6ae2f7bca550 602
Azure.IoT Build 0:6ae2f7bca550 603 return result;
Azure.IoT Build 0:6ae2f7bca550 604 }
Azure.IoT Build 0:6ae2f7bca550 605
Azure.IoT Build 0:6ae2f7bca550 606 int message_get_application_properties(MESSAGE_HANDLE message, AMQP_VALUE* application_properties)
Azure.IoT Build 0:6ae2f7bca550 607 {
Azure.IoT Build 0:6ae2f7bca550 608 int result;
Azure.IoT Build 0:6ae2f7bca550 609
Azure.IoT Build 0:6ae2f7bca550 610 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 611 (application_properties == NULL))
Azure.IoT Build 0:6ae2f7bca550 612 {
AzureIoTClient 19:000ab4e6a2c1 613 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 614 }
Azure.IoT Build 0:6ae2f7bca550 615 else
Azure.IoT Build 0:6ae2f7bca550 616 {
Azure.IoT Build 0:6ae2f7bca550 617 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 618
Azure.IoT Build 0:6ae2f7bca550 619 if (message_instance->application_properties == NULL)
Azure.IoT Build 0:6ae2f7bca550 620 {
Azure.IoT Build 0:6ae2f7bca550 621 *application_properties = NULL;
Azure.IoT Build 0:6ae2f7bca550 622 result = 0;
Azure.IoT Build 0:6ae2f7bca550 623 }
Azure.IoT Build 0:6ae2f7bca550 624 else
Azure.IoT Build 0:6ae2f7bca550 625 {
Azure.IoT Build 0:6ae2f7bca550 626 *application_properties = application_properties_clone(message_instance->application_properties);
Azure.IoT Build 0:6ae2f7bca550 627 if (*application_properties == NULL)
Azure.IoT Build 0:6ae2f7bca550 628 {
AzureIoTClient 19:000ab4e6a2c1 629 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 630 }
Azure.IoT Build 0:6ae2f7bca550 631 else
Azure.IoT Build 0:6ae2f7bca550 632 {
Azure.IoT Build 0:6ae2f7bca550 633 result = 0;
Azure.IoT Build 0:6ae2f7bca550 634 }
Azure.IoT Build 0:6ae2f7bca550 635 }
Azure.IoT Build 0:6ae2f7bca550 636 }
Azure.IoT Build 0:6ae2f7bca550 637
Azure.IoT Build 0:6ae2f7bca550 638 return result;
Azure.IoT Build 0:6ae2f7bca550 639 }
Azure.IoT Build 0:6ae2f7bca550 640
Azure.IoT Build 0:6ae2f7bca550 641 int message_set_footer(MESSAGE_HANDLE message, annotations footer)
Azure.IoT Build 0:6ae2f7bca550 642 {
Azure.IoT Build 0:6ae2f7bca550 643 int result;
Azure.IoT Build 0:6ae2f7bca550 644
Azure.IoT Build 0:6ae2f7bca550 645 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 646 (footer == NULL))
Azure.IoT Build 0:6ae2f7bca550 647 {
AzureIoTClient 19:000ab4e6a2c1 648 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 649 }
Azure.IoT Build 0:6ae2f7bca550 650 else
Azure.IoT Build 0:6ae2f7bca550 651 {
Azure.IoT Build 0:6ae2f7bca550 652 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 653 AMQP_VALUE new_footer;
Azure.IoT Build 0:6ae2f7bca550 654
Azure.IoT Build 0:6ae2f7bca550 655 new_footer = annotations_clone(footer);
Azure.IoT Build 0:6ae2f7bca550 656 if (new_footer == NULL)
Azure.IoT Build 0:6ae2f7bca550 657 {
AzureIoTClient 19:000ab4e6a2c1 658 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 659 }
Azure.IoT Build 0:6ae2f7bca550 660 else
Azure.IoT Build 0:6ae2f7bca550 661 {
Azure.IoT Build 0:6ae2f7bca550 662 if (message_instance->footer != NULL)
Azure.IoT Build 0:6ae2f7bca550 663 {
Azure.IoT Build 0:6ae2f7bca550 664 annotations_destroy(message_instance->footer);
Azure.IoT Build 0:6ae2f7bca550 665 }
Azure.IoT Build 0:6ae2f7bca550 666
Azure.IoT Build 0:6ae2f7bca550 667 message_instance->footer = new_footer;
Azure.IoT Build 0:6ae2f7bca550 668 result = 0;
Azure.IoT Build 0:6ae2f7bca550 669 }
Azure.IoT Build 0:6ae2f7bca550 670 }
Azure.IoT Build 0:6ae2f7bca550 671
Azure.IoT Build 0:6ae2f7bca550 672 return result;
Azure.IoT Build 0:6ae2f7bca550 673 }
Azure.IoT Build 0:6ae2f7bca550 674
Azure.IoT Build 0:6ae2f7bca550 675 int message_get_footer(MESSAGE_HANDLE message, annotations* footer)
Azure.IoT Build 0:6ae2f7bca550 676 {
Azure.IoT Build 0:6ae2f7bca550 677 int result;
Azure.IoT Build 0:6ae2f7bca550 678
Azure.IoT Build 0:6ae2f7bca550 679 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 680 (footer == NULL))
Azure.IoT Build 0:6ae2f7bca550 681 {
AzureIoTClient 19:000ab4e6a2c1 682 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 683 }
Azure.IoT Build 0:6ae2f7bca550 684 else
Azure.IoT Build 0:6ae2f7bca550 685 {
Azure.IoT Build 0:6ae2f7bca550 686 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 687
Azure.IoT Build 0:6ae2f7bca550 688 if (message_instance->footer == NULL)
Azure.IoT Build 0:6ae2f7bca550 689 {
Azure.IoT Build 0:6ae2f7bca550 690 *footer = NULL;
Azure.IoT Build 0:6ae2f7bca550 691 result = 0;
Azure.IoT Build 0:6ae2f7bca550 692 }
Azure.IoT Build 0:6ae2f7bca550 693 else
Azure.IoT Build 0:6ae2f7bca550 694 {
Azure.IoT Build 0:6ae2f7bca550 695 *footer = annotations_clone(message_instance->footer);
Azure.IoT Build 0:6ae2f7bca550 696 if (*footer == NULL)
Azure.IoT Build 0:6ae2f7bca550 697 {
AzureIoTClient 19:000ab4e6a2c1 698 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 699 }
Azure.IoT Build 0:6ae2f7bca550 700 else
Azure.IoT Build 0:6ae2f7bca550 701 {
Azure.IoT Build 0:6ae2f7bca550 702 result = 0;
Azure.IoT Build 0:6ae2f7bca550 703 }
Azure.IoT Build 0:6ae2f7bca550 704 }
Azure.IoT Build 0:6ae2f7bca550 705 }
Azure.IoT Build 0:6ae2f7bca550 706
Azure.IoT Build 0:6ae2f7bca550 707 return result;
Azure.IoT Build 0:6ae2f7bca550 708 }
Azure.IoT Build 0:6ae2f7bca550 709
Azure.IoT Build 0:6ae2f7bca550 710 int message_add_body_amqp_data(MESSAGE_HANDLE message, BINARY_DATA binary_data)
Azure.IoT Build 0:6ae2f7bca550 711 {
Azure.IoT Build 0:6ae2f7bca550 712 int result;
Azure.IoT Build 0:6ae2f7bca550 713
Azure.IoT Build 0:6ae2f7bca550 714 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 715 if ((message == NULL) ||
AzureIoTClient 17:923575db8b2d 716 ((binary_data.bytes == NULL) &&
AzureIoTClient 17:923575db8b2d 717 (binary_data.length != 0)))
Azure.IoT Build 0:6ae2f7bca550 718 {
AzureIoTClient 19:000ab4e6a2c1 719 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 720 }
Azure.IoT Build 0:6ae2f7bca550 721 else
Azure.IoT Build 0:6ae2f7bca550 722 {
Azure.IoT Build 0:6ae2f7bca550 723 BODY_AMQP_DATA* new_body_amqp_data_items = (BODY_AMQP_DATA*)amqpalloc_realloc(message_instance->body_amqp_data_items, sizeof(BODY_AMQP_DATA) * (message_instance->body_amqp_data_count + 1));
Azure.IoT Build 0:6ae2f7bca550 724 if (new_body_amqp_data_items == NULL)
Azure.IoT Build 0:6ae2f7bca550 725 {
AzureIoTClient 19:000ab4e6a2c1 726 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 727 }
Azure.IoT Build 0:6ae2f7bca550 728 else
Azure.IoT Build 0:6ae2f7bca550 729 {
Azure.IoT Build 0:6ae2f7bca550 730 message_instance->body_amqp_data_items = new_body_amqp_data_items;
Azure.IoT Build 0:6ae2f7bca550 731
Azure.IoT Build 0:6ae2f7bca550 732 message_instance->body_amqp_data_items[message_instance->body_amqp_data_count].body_data_section_bytes = (unsigned char*)amqpalloc_malloc(binary_data.length);
Azure.IoT Build 0:6ae2f7bca550 733 if (message_instance->body_amqp_data_items[message_instance->body_amqp_data_count].body_data_section_bytes == NULL)
Azure.IoT Build 0:6ae2f7bca550 734 {
AzureIoTClient 19:000ab4e6a2c1 735 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 736 }
Azure.IoT Build 0:6ae2f7bca550 737 else
Azure.IoT Build 0:6ae2f7bca550 738 {
Azure.IoT Build 0:6ae2f7bca550 739 message_instance->body_amqp_data_items[message_instance->body_amqp_data_count].body_data_section_length = binary_data.length;
Azure.IoT Build 0:6ae2f7bca550 740 (void)memcpy(message_instance->body_amqp_data_items[message_instance->body_amqp_data_count].body_data_section_bytes, binary_data.bytes, binary_data.length);
Azure.IoT Build 0:6ae2f7bca550 741
Azure.IoT Build 0:6ae2f7bca550 742 if (message_instance->body_amqp_value != NULL)
Azure.IoT Build 0:6ae2f7bca550 743 {
Azure.IoT Build 0:6ae2f7bca550 744 amqpvalue_destroy(message_instance->body_amqp_value);
Azure.IoT Build 0:6ae2f7bca550 745 message_instance->body_amqp_value = NULL;
Azure.IoT Build 0:6ae2f7bca550 746 }
Azure.IoT Build 0:6ae2f7bca550 747 free_all_body_sequence_items(message_instance);
Azure.IoT Build 0:6ae2f7bca550 748
Azure.IoT Build 0:6ae2f7bca550 749 message_instance->body_amqp_data_count++;
Azure.IoT Build 0:6ae2f7bca550 750 result = 0;
Azure.IoT Build 0:6ae2f7bca550 751 }
Azure.IoT Build 0:6ae2f7bca550 752 }
Azure.IoT Build 0:6ae2f7bca550 753 }
Azure.IoT Build 0:6ae2f7bca550 754
Azure.IoT Build 0:6ae2f7bca550 755 return result;
Azure.IoT Build 0:6ae2f7bca550 756 }
Azure.IoT Build 0:6ae2f7bca550 757
Azure.IoT Build 0:6ae2f7bca550 758 int message_get_body_amqp_data(MESSAGE_HANDLE message, size_t index, BINARY_DATA* binary_data)
Azure.IoT Build 0:6ae2f7bca550 759 {
Azure.IoT Build 0:6ae2f7bca550 760 int result;
Azure.IoT Build 0:6ae2f7bca550 761
Azure.IoT Build 0:6ae2f7bca550 762 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 763 (binary_data == NULL))
Azure.IoT Build 0:6ae2f7bca550 764 {
AzureIoTClient 19:000ab4e6a2c1 765 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 766 }
Azure.IoT Build 0:6ae2f7bca550 767 else
Azure.IoT Build 0:6ae2f7bca550 768 {
Azure.IoT Build 0:6ae2f7bca550 769 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 770
Azure.IoT Build 0:6ae2f7bca550 771 if (index >= message_instance->body_amqp_data_count)
Azure.IoT Build 0:6ae2f7bca550 772 {
AzureIoTClient 19:000ab4e6a2c1 773 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 774 }
Azure.IoT Build 0:6ae2f7bca550 775 else
Azure.IoT Build 0:6ae2f7bca550 776 {
Azure.IoT Build 0:6ae2f7bca550 777 binary_data->bytes = message_instance->body_amqp_data_items[index].body_data_section_bytes;
Azure.IoT Build 0:6ae2f7bca550 778 binary_data->length = message_instance->body_amqp_data_items[index].body_data_section_length;
Azure.IoT Build 0:6ae2f7bca550 779
Azure.IoT Build 0:6ae2f7bca550 780 result = 0;
Azure.IoT Build 0:6ae2f7bca550 781 }
Azure.IoT Build 0:6ae2f7bca550 782 }
Azure.IoT Build 0:6ae2f7bca550 783
Azure.IoT Build 0:6ae2f7bca550 784 return result;
Azure.IoT Build 0:6ae2f7bca550 785 }
Azure.IoT Build 0:6ae2f7bca550 786
Azure.IoT Build 0:6ae2f7bca550 787 int message_get_body_amqp_data_count(MESSAGE_HANDLE message, size_t* count)
Azure.IoT Build 0:6ae2f7bca550 788 {
Azure.IoT Build 0:6ae2f7bca550 789 int result;
Azure.IoT Build 0:6ae2f7bca550 790
Azure.IoT Build 0:6ae2f7bca550 791 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 792 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 793 (count == NULL))
Azure.IoT Build 0:6ae2f7bca550 794 {
AzureIoTClient 19:000ab4e6a2c1 795 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 796 }
Azure.IoT Build 0:6ae2f7bca550 797 else
Azure.IoT Build 0:6ae2f7bca550 798 {
Azure.IoT Build 0:6ae2f7bca550 799 *count = message_instance->body_amqp_data_count;
Azure.IoT Build 0:6ae2f7bca550 800 result = 0;
Azure.IoT Build 0:6ae2f7bca550 801 }
Azure.IoT Build 0:6ae2f7bca550 802
Azure.IoT Build 0:6ae2f7bca550 803 return result;
Azure.IoT Build 0:6ae2f7bca550 804 }
Azure.IoT Build 0:6ae2f7bca550 805
Azure.IoT Build 0:6ae2f7bca550 806 int message_add_body_amqp_sequence(MESSAGE_HANDLE message, AMQP_VALUE sequence_list)
Azure.IoT Build 0:6ae2f7bca550 807 {
Azure.IoT Build 0:6ae2f7bca550 808 int result;
Azure.IoT Build 0:6ae2f7bca550 809 size_t item_count;
Azure.IoT Build 0:6ae2f7bca550 810
Azure.IoT Build 0:6ae2f7bca550 811 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 812 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 813 (sequence_list == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 814 (amqpvalue_get_list_item_count(sequence_list, (uint32_t*)&item_count) != 0))
Azure.IoT Build 0:6ae2f7bca550 815 {
AzureIoTClient 19:000ab4e6a2c1 816 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 817 }
Azure.IoT Build 0:6ae2f7bca550 818 else
Azure.IoT Build 0:6ae2f7bca550 819 {
Azure.IoT Build 0:6ae2f7bca550 820 AMQP_VALUE* new_body_amqp_sequence_items = (AMQP_VALUE*)amqpalloc_realloc(message_instance->body_amqp_sequence_items, sizeof(AMQP_VALUE) * (message_instance->body_amqp_sequence_count + 1));
Azure.IoT Build 0:6ae2f7bca550 821 if (new_body_amqp_sequence_items == NULL)
Azure.IoT Build 0:6ae2f7bca550 822 {
AzureIoTClient 19:000ab4e6a2c1 823 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 824 }
Azure.IoT Build 0:6ae2f7bca550 825 else
Azure.IoT Build 0:6ae2f7bca550 826 {
Azure.IoT Build 0:6ae2f7bca550 827 message_instance->body_amqp_sequence_items = new_body_amqp_sequence_items;
Azure.IoT Build 0:6ae2f7bca550 828
Azure.IoT Build 0:6ae2f7bca550 829 message_instance->body_amqp_sequence_items[message_instance->body_amqp_sequence_count] = amqpvalue_clone(sequence_list);
Azure.IoT Build 0:6ae2f7bca550 830 if (message_instance->body_amqp_sequence_items[message_instance->body_amqp_sequence_count] == NULL)
Azure.IoT Build 0:6ae2f7bca550 831 {
AzureIoTClient 19:000ab4e6a2c1 832 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 833 }
Azure.IoT Build 0:6ae2f7bca550 834 else
Azure.IoT Build 0:6ae2f7bca550 835 {
Azure.IoT Build 0:6ae2f7bca550 836 if (message_instance->body_amqp_value != NULL)
Azure.IoT Build 0:6ae2f7bca550 837 {
Azure.IoT Build 0:6ae2f7bca550 838 amqpvalue_destroy(message_instance->body_amqp_value);
Azure.IoT Build 0:6ae2f7bca550 839 message_instance->body_amqp_value = NULL;
Azure.IoT Build 0:6ae2f7bca550 840 }
Azure.IoT Build 0:6ae2f7bca550 841 free_all_body_data_items(message_instance);
Azure.IoT Build 0:6ae2f7bca550 842
Azure.IoT Build 0:6ae2f7bca550 843 message_instance->body_amqp_sequence_count++;
Azure.IoT Build 0:6ae2f7bca550 844 result = 0;
Azure.IoT Build 0:6ae2f7bca550 845 }
Azure.IoT Build 0:6ae2f7bca550 846 }
Azure.IoT Build 0:6ae2f7bca550 847 }
Azure.IoT Build 0:6ae2f7bca550 848
Azure.IoT Build 0:6ae2f7bca550 849 return result;
Azure.IoT Build 0:6ae2f7bca550 850 }
Azure.IoT Build 0:6ae2f7bca550 851
Azure.IoT Build 0:6ae2f7bca550 852 int message_get_body_amqp_sequence(MESSAGE_HANDLE message, size_t index, AMQP_VALUE* sequence_list)
Azure.IoT Build 0:6ae2f7bca550 853 {
Azure.IoT Build 0:6ae2f7bca550 854 int result;
Azure.IoT Build 0:6ae2f7bca550 855
Azure.IoT Build 0:6ae2f7bca550 856 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 857 (sequence_list == NULL))
Azure.IoT Build 0:6ae2f7bca550 858 {
AzureIoTClient 19:000ab4e6a2c1 859 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 860 }
Azure.IoT Build 0:6ae2f7bca550 861 else
Azure.IoT Build 0:6ae2f7bca550 862 {
Azure.IoT Build 0:6ae2f7bca550 863 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 864
Azure.IoT Build 0:6ae2f7bca550 865 if (index >= message_instance->body_amqp_sequence_count)
Azure.IoT Build 0:6ae2f7bca550 866 {
AzureIoTClient 19:000ab4e6a2c1 867 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 868 }
Azure.IoT Build 0:6ae2f7bca550 869 else
Azure.IoT Build 0:6ae2f7bca550 870 {
Azure.IoT Build 0:6ae2f7bca550 871 *sequence_list = amqpvalue_clone(message_instance->body_amqp_sequence_items[index]);
Azure.IoT Build 0:6ae2f7bca550 872 if (*sequence_list == NULL)
Azure.IoT Build 0:6ae2f7bca550 873 {
AzureIoTClient 19:000ab4e6a2c1 874 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 875 }
Azure.IoT Build 0:6ae2f7bca550 876 else
Azure.IoT Build 0:6ae2f7bca550 877 {
Azure.IoT Build 0:6ae2f7bca550 878 result = 0;
Azure.IoT Build 0:6ae2f7bca550 879 }
Azure.IoT Build 0:6ae2f7bca550 880 }
Azure.IoT Build 0:6ae2f7bca550 881 }
Azure.IoT Build 0:6ae2f7bca550 882
Azure.IoT Build 0:6ae2f7bca550 883 return result;
Azure.IoT Build 0:6ae2f7bca550 884 }
Azure.IoT Build 0:6ae2f7bca550 885
Azure.IoT Build 0:6ae2f7bca550 886 int message_get_body_amqp_sequence_count(MESSAGE_HANDLE message, size_t* count)
Azure.IoT Build 0:6ae2f7bca550 887 {
Azure.IoT Build 0:6ae2f7bca550 888 int result;
Azure.IoT Build 0:6ae2f7bca550 889
Azure.IoT Build 0:6ae2f7bca550 890 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 891 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 892 (count == NULL))
Azure.IoT Build 0:6ae2f7bca550 893 {
AzureIoTClient 19:000ab4e6a2c1 894 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 895 }
Azure.IoT Build 0:6ae2f7bca550 896 else
Azure.IoT Build 0:6ae2f7bca550 897 {
Azure.IoT Build 0:6ae2f7bca550 898 *count = message_instance->body_amqp_sequence_count;
Azure.IoT Build 0:6ae2f7bca550 899 result = 0;
Azure.IoT Build 0:6ae2f7bca550 900 }
Azure.IoT Build 0:6ae2f7bca550 901
Azure.IoT Build 0:6ae2f7bca550 902 return result;
Azure.IoT Build 0:6ae2f7bca550 903 }
Azure.IoT Build 0:6ae2f7bca550 904
Azure.IoT Build 0:6ae2f7bca550 905 int message_set_body_amqp_value(MESSAGE_HANDLE message, AMQP_VALUE body_amqp_value)
Azure.IoT Build 0:6ae2f7bca550 906 {
Azure.IoT Build 0:6ae2f7bca550 907 int result;
Azure.IoT Build 0:6ae2f7bca550 908
Azure.IoT Build 0:6ae2f7bca550 909 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 910 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 911 (body_amqp_value == NULL))
Azure.IoT Build 0:6ae2f7bca550 912 {
AzureIoTClient 19:000ab4e6a2c1 913 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 914 }
Azure.IoT Build 0:6ae2f7bca550 915 else
Azure.IoT Build 0:6ae2f7bca550 916 {
Azure.IoT Build 0:6ae2f7bca550 917 message_instance->body_amqp_value = amqpvalue_clone(body_amqp_value);
Azure.IoT Build 0:6ae2f7bca550 918
Azure.IoT Build 0:6ae2f7bca550 919 free_all_body_data_items(message_instance);
Azure.IoT Build 0:6ae2f7bca550 920 free_all_body_sequence_items(message_instance);
Azure.IoT Build 0:6ae2f7bca550 921 result = 0;
Azure.IoT Build 0:6ae2f7bca550 922 }
Azure.IoT Build 0:6ae2f7bca550 923
Azure.IoT Build 0:6ae2f7bca550 924 return result;
Azure.IoT Build 0:6ae2f7bca550 925 }
Azure.IoT Build 0:6ae2f7bca550 926
Azure.IoT Build 0:6ae2f7bca550 927 int message_get_inplace_body_amqp_value(MESSAGE_HANDLE message, AMQP_VALUE* body_amqp_value)
Azure.IoT Build 0:6ae2f7bca550 928 {
Azure.IoT Build 0:6ae2f7bca550 929 int result;
Azure.IoT Build 0:6ae2f7bca550 930
Azure.IoT Build 0:6ae2f7bca550 931 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 932 (body_amqp_value == NULL))
Azure.IoT Build 0:6ae2f7bca550 933 {
AzureIoTClient 19:000ab4e6a2c1 934 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 935 }
Azure.IoT Build 0:6ae2f7bca550 936 else
Azure.IoT Build 0:6ae2f7bca550 937 {
Azure.IoT Build 0:6ae2f7bca550 938 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 939
Azure.IoT Build 0:6ae2f7bca550 940 *body_amqp_value = message_instance->body_amqp_value;
Azure.IoT Build 0:6ae2f7bca550 941
Azure.IoT Build 0:6ae2f7bca550 942 result = 0;
Azure.IoT Build 0:6ae2f7bca550 943 }
Azure.IoT Build 0:6ae2f7bca550 944
Azure.IoT Build 0:6ae2f7bca550 945 return result;
Azure.IoT Build 0:6ae2f7bca550 946 }
Azure.IoT Build 0:6ae2f7bca550 947
Azure.IoT Build 0:6ae2f7bca550 948 int message_get_body_type(MESSAGE_HANDLE message, MESSAGE_BODY_TYPE* body_type)
Azure.IoT Build 0:6ae2f7bca550 949 {
Azure.IoT Build 0:6ae2f7bca550 950 int result;
Azure.IoT Build 0:6ae2f7bca550 951
Azure.IoT Build 0:6ae2f7bca550 952 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 953 (body_type == NULL))
Azure.IoT Build 0:6ae2f7bca550 954 {
AzureIoTClient 19:000ab4e6a2c1 955 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 956 }
Azure.IoT Build 0:6ae2f7bca550 957 else
Azure.IoT Build 0:6ae2f7bca550 958 {
Azure.IoT Build 0:6ae2f7bca550 959 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 960
Azure.IoT Build 0:6ae2f7bca550 961 if (message_instance->body_amqp_value != NULL)
Azure.IoT Build 0:6ae2f7bca550 962 {
Azure.IoT Build 0:6ae2f7bca550 963 *body_type = MESSAGE_BODY_TYPE_VALUE;
Azure.IoT Build 0:6ae2f7bca550 964 }
Azure.IoT Build 0:6ae2f7bca550 965 else if (message_instance->body_amqp_data_count > 0)
Azure.IoT Build 0:6ae2f7bca550 966 {
Azure.IoT Build 0:6ae2f7bca550 967 *body_type = MESSAGE_BODY_TYPE_DATA;
Azure.IoT Build 0:6ae2f7bca550 968 }
Azure.IoT Build 0:6ae2f7bca550 969 else if (message_instance->body_amqp_sequence_count > 0)
Azure.IoT Build 0:6ae2f7bca550 970 {
Azure.IoT Build 0:6ae2f7bca550 971 *body_type = MESSAGE_BODY_TYPE_SEQUENCE;
Azure.IoT Build 0:6ae2f7bca550 972 }
Azure.IoT Build 0:6ae2f7bca550 973 else
Azure.IoT Build 0:6ae2f7bca550 974 {
Azure.IoT Build 0:6ae2f7bca550 975 *body_type = MESSAGE_BODY_TYPE_NONE;
Azure.IoT Build 0:6ae2f7bca550 976 }
Azure.IoT Build 0:6ae2f7bca550 977
Azure.IoT Build 0:6ae2f7bca550 978 result = 0;
Azure.IoT Build 0:6ae2f7bca550 979 }
Azure.IoT Build 0:6ae2f7bca550 980
Azure.IoT Build 0:6ae2f7bca550 981 return result;
Azure.IoT Build 0:6ae2f7bca550 982 }
Azure.IoT Build 0:6ae2f7bca550 983
Azure.IoT Build 0:6ae2f7bca550 984 int message_set_message_format(MESSAGE_HANDLE message, uint32_t message_format)
Azure.IoT Build 0:6ae2f7bca550 985 {
Azure.IoT Build 0:6ae2f7bca550 986 int result;
Azure.IoT Build 0:6ae2f7bca550 987
Azure.IoT Build 0:6ae2f7bca550 988 if (message == NULL)
Azure.IoT Build 0:6ae2f7bca550 989 {
AzureIoTClient 19:000ab4e6a2c1 990 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 991 }
Azure.IoT Build 0:6ae2f7bca550 992 else
Azure.IoT Build 0:6ae2f7bca550 993 {
Azure.IoT Build 0:6ae2f7bca550 994 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 995 message_instance->message_format = message_format;
Azure.IoT Build 0:6ae2f7bca550 996 result = 0;
Azure.IoT Build 0:6ae2f7bca550 997 }
Azure.IoT Build 0:6ae2f7bca550 998
Azure.IoT Build 0:6ae2f7bca550 999 return result;
Azure.IoT Build 0:6ae2f7bca550 1000 }
Azure.IoT Build 0:6ae2f7bca550 1001
Azure.IoT Build 0:6ae2f7bca550 1002 int message_get_message_format(MESSAGE_HANDLE message, uint32_t *message_format)
Azure.IoT Build 0:6ae2f7bca550 1003 {
Azure.IoT Build 0:6ae2f7bca550 1004 int result;
Azure.IoT Build 0:6ae2f7bca550 1005
Azure.IoT Build 0:6ae2f7bca550 1006 if ((message == NULL) ||
Azure.IoT Build 0:6ae2f7bca550 1007 (message_format == NULL))
Azure.IoT Build 0:6ae2f7bca550 1008 {
AzureIoTClient 19:000ab4e6a2c1 1009 result = __FAILURE__;
Azure.IoT Build 0:6ae2f7bca550 1010 }
Azure.IoT Build 0:6ae2f7bca550 1011 else
Azure.IoT Build 0:6ae2f7bca550 1012 {
Azure.IoT Build 0:6ae2f7bca550 1013 MESSAGE_INSTANCE* message_instance = (MESSAGE_INSTANCE*)message;
Azure.IoT Build 0:6ae2f7bca550 1014 *message_format = message_instance->message_format;
Azure.IoT Build 0:6ae2f7bca550 1015 result = 0;
Azure.IoT Build 0:6ae2f7bca550 1016 }
Azure.IoT Build 0:6ae2f7bca550 1017
Azure.IoT Build 0:6ae2f7bca550 1018 return result;
Azure.IoT Build 0:6ae2f7bca550 1019 }