A small memory footprint AMQP implimentation

Dependents:   iothub_client_sample_amqp remote_monitoring simplesample_amqp

Revision:
7:9e9ab3b0efef
Parent:
6:641a9672db08
Child:
9:c22db038556c
--- a/message_sender.c	Fri Jul 29 15:58:39 2016 -0700
+++ b/message_sender.c	Fri Aug 12 10:04:13 2016 -0700
@@ -93,7 +93,7 @@
     }
 }
 
-static void on_delivery_settled(void* context, delivery_number delivery_no)
+static void on_delivery_settled(void* context, delivery_number delivery_no, AMQP_VALUE delivery_state)
 {
     MESSAGE_WITH_CALLBACK* message_with_callback = (MESSAGE_WITH_CALLBACK*)context;
     MESSAGE_SENDER_INSTANCE* message_sender_instance = (MESSAGE_SENDER_INSTANCE*)message_with_callback->message_sender;
@@ -101,7 +101,27 @@
 
     if (message_with_callback->on_message_send_complete != NULL)
     {
-        message_with_callback->on_message_send_complete(message_with_callback->context, MESSAGE_SEND_OK);
+        AMQP_VALUE descriptor = amqpvalue_get_inplace_descriptor(delivery_state);
+        if (descriptor == NULL)
+        {
+            LogError("Error getting descriptor for delivery state");
+        }
+        else
+        {
+            MESSAGE_SEND_RESULT message_send_result;
+
+            if ((delivery_state == NULL) ||
+                (is_accepted_type_by_descriptor(descriptor)))
+            {
+                message_send_result = MESSAGE_SEND_OK;
+            }
+            else
+            {
+                message_send_result = MESSAGE_SEND_ERROR;
+            }
+
+            message_with_callback->on_message_send_complete(message_with_callback->context, message_send_result);
+        }
     }
 
     remove_pending_message(message_sender_instance, message_with_callback);
@@ -115,6 +135,7 @@
     return 0;
 }
 
+#ifndef NO_LOGGING
 static void log_message_chunk(MESSAGE_SENDER_INSTANCE* message_sender_instance, const char* name, AMQP_VALUE value)
 {
     if (xlogging_get_log_function() != NULL && message_sender_instance->is_trace_on == 1)
@@ -128,6 +149,7 @@
         }
     }
 }
+#endif
 
 static SEND_ONE_MESSAGE_RESULT send_one_message(MESSAGE_SENDER_INSTANCE* message_sender_instance, MESSAGE_WITH_CALLBACK* message_with_callback, MESSAGE_HANDLE message)
 {