A small memory footprint AMQP implimentation

Dependents:   iothub_client_sample_amqp remote_monitoring simplesample_amqp

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;
+}