A small memory footprint AMQP implimentation
Dependents: iothub_client_sample_amqp remote_monitoring simplesample_amqp
Diff: message_receiver.c
- Revision:
- 20:206846c14c80
- Parent:
- 19:000ab4e6a2c1
- Child:
- 21:f9c433d8e6ca
--- a/message_receiver.c Fri Feb 24 14:00:58 2017 -0800 +++ b/message_receiver.c Fri Mar 10 11:47:49 2017 -0800 @@ -2,6 +2,7 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. #include <stdlib.h> + #include "azure_c_shared_utility/optimize_size.h" #include "azure_uamqp_c/message_receiver.h" #include "azure_uamqp_c/amqpalloc.h" @@ -191,7 +192,7 @@ } else { - result = message_receiver_instance->on_message_received(message_receiver_instance->callback_context, message); + result = message_receiver_instance->on_message_received(message_receiver_instance->callback_context, message); } } @@ -338,3 +339,97 @@ return result; } + +int messagereceiver_get_link_name(MESSAGE_RECEIVER_HANDLE message_receiver, const char** link_name) +{ + int result; + + if (message_receiver == NULL) + { + result = __FAILURE__; + } + else + { + MESSAGE_RECEIVER_INSTANCE* message_receiver_instance = (MESSAGE_RECEIVER_INSTANCE*)message_receiver; + if (link_get_name(message_receiver_instance->link, link_name) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + + return result; +} + +int messagereceiver_get_received_message_id(MESSAGE_RECEIVER_HANDLE message_receiver, delivery_number* message_id) +{ + int result; + + if (message_receiver == NULL) + { + result = __FAILURE__; + } + else + { + MESSAGE_RECEIVER_INSTANCE* message_receiver_instance = (MESSAGE_RECEIVER_INSTANCE*)message_receiver; + if (link_get_received_message_id(message_receiver_instance->link, message_id) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + + return result; +} + +int messagereceiver_send_message_disposition(MESSAGE_RECEIVER_HANDLE message_receiver, const char* link_name, delivery_number message_number, AMQP_VALUE delivery_state) +{ + int result; + + if (message_receiver == NULL) + { + result = __FAILURE__; + } + else + { + MESSAGE_RECEIVER_INSTANCE* message_receiver_instance = (MESSAGE_RECEIVER_INSTANCE*)message_receiver; + if (message_receiver_instance->message_receiver_state != MESSAGE_RECEIVER_STATE_OPEN) + { + result = __FAILURE__; + } + else + { + const char* my_name; + if (link_get_name(message_receiver_instance->link, &my_name) != 0) + { + result = __FAILURE__; + } + else + { + if (strcmp(link_name, my_name) != 0) + { + result = __FAILURE__; + } + else + { + if (link_send_disposition(message_receiver_instance->link, message_number, delivery_state) != 0) + { + result = __FAILURE__; + } + else + { + result = 0; + } + } + } + } + } + + return result; +}