A small memory footprint AMQP implimentation

Dependents:   iothub_client_sample_amqp remote_monitoring simplesample_amqp

Committer:
AzureIoTClient
Date:
Tue Jan 24 15:23:52 2017 -0800
Revision:
17:923575db8b2d
Parent:
12:b30dacf113f2
Child:
19:000ab4e6a2c1
1.1.5

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