A small memory footprint AMQP implimentation

Dependents:   iothub_client_sample_amqp remote_monitoring simplesample_amqp

Revision:
19:000ab4e6a2c1
Parent:
18:a922a4a30a82
Child:
21:f9c433d8e6ca
--- a/session.c	Fri Feb 10 17:00:55 2017 -0800
+++ b/session.c	Fri Feb 24 14:00:58 2017 -0800
@@ -6,6 +6,7 @@
 #include "azure_uamqp_c/session.h"
 #include "azure_uamqp_c/connection.h"
 #include "azure_uamqp_c/amqpalloc.h"
+#include "azure_c_shared_utility/optimize_size.h"
 #include "azure_c_shared_utility/xlogging.h"
 
 typedef struct LINK_ENDPOINT_INSTANCE_TAG
@@ -73,27 +74,27 @@
 	end_performative = end_create();
 	if (end_performative == NULL)
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
 		if ((error_handle != NULL) &&
 			(end_set_error(end_performative, error_handle) != 0))
 		{
-			result = __LINE__;
+			result = __FAILURE__;
 		}
 		else
 		{
 			AMQP_VALUE end_performative_value = amqpvalue_create_end(end_performative);
 			if (end_performative_value == NULL)
 			{
-				result = __LINE__;
+				result = __FAILURE__;
 			}
 			else
 			{
 				if (connection_encode_frame(session_instance->endpoint, end_performative_value, NULL, 0, NULL, NULL) != 0)
 				{
-					result = __LINE__;
+					result = __FAILURE__;
 				}
 				else
 				{
@@ -144,33 +145,33 @@
 
 	if (begin == NULL)
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
 		uint16_t remote_channel;
 		if (begin_set_handle_max(begin, session_instance->handle_max) != 0)
 		{
-			result = __LINE__;
+			result = __FAILURE__;
 		}
 		else if ((session_instance->session_state == SESSION_STATE_BEGIN_RCVD) &&
 			((connection_endpoint_get_incoming_channel(session_instance->endpoint, &remote_channel) != 0) ||
 			(begin_set_remote_channel(begin, remote_channel) != 0)))
 		{
-			result = __LINE__;
+			result = __FAILURE__;
 		}
 		else
 		{
 			AMQP_VALUE begin_performative_value = amqpvalue_create_begin(begin);
 			if (begin_performative_value == NULL)
 			{
-				result = __LINE__;
+				result = __FAILURE__;
 			}
 			else
 			{
 				if (connection_encode_frame(session_instance->endpoint, begin_performative_value, NULL, 0, NULL, NULL) != 0)
 				{
-					result = __LINE__;
+					result = __FAILURE__;
 				}
 				else
 				{
@@ -192,7 +193,7 @@
 	int result;
 	if (session == NULL)
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
@@ -200,26 +201,26 @@
 
 		if (flow == NULL)
 		{
-			result = __LINE__;
+			result = __FAILURE__;
 		}
 		else
 		{
 			if (flow_set_next_incoming_id(flow, session->next_incoming_id) != 0)
 			{
-				result = __LINE__;
+				result = __FAILURE__;
 			}
 			else
 			{
 				AMQP_VALUE flow_performative_value = amqpvalue_create_flow(flow);
 				if (flow_performative_value == NULL)
 				{
-					result = __LINE__;
+					result = __FAILURE__;
 				}
 				else
 				{
 					if (connection_encode_frame(session->endpoint, flow_performative_value, NULL, 0, NULL, NULL) != 0)
 					{
-						result = __LINE__;
+						result = __FAILURE__;
 					}
 					else
 					{
@@ -728,7 +729,7 @@
 
 	if (session == NULL)
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
@@ -736,7 +737,7 @@
 
 		if (connection_start_endpoint(session_instance->endpoint, on_frame_received, on_connection_state_changed, session_instance) != 0)
 		{
-			result = __LINE__;
+			result = __FAILURE__;
 		}
 		else
 		{
@@ -745,7 +746,7 @@
 				if (connection_open(session_instance->connection) != 0)
 				{
 					session_instance->is_underlying_connection_open = UNDERLYING_CONNECTION_NOT_OPEN;
-					result = __LINE__;
+					result = __FAILURE__;
 				}
 				else
 				{
@@ -769,7 +770,7 @@
 
 	if (session == NULL)
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
@@ -786,13 +787,13 @@
 				error_handle = error_create(condition_value);
 				if (error_handle == NULL)
 				{
-					result = __LINE__;
+					result = __FAILURE__;
 				}
 				else
 				{
 					if (error_set_description(error_handle, description) != 0)
 					{
-						result = __LINE__;
+						result = __FAILURE__;
 					}
 				}
 			}
@@ -801,7 +802,7 @@
 			{
 				if (send_end_frame(session_instance, error_handle) != 0)
 				{
-					result = __LINE__;
+					result = __FAILURE__;
 				}
 				else
 				{
@@ -830,7 +831,7 @@
 
 	if (session == NULL)
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
@@ -852,7 +853,7 @@
 	if ((session == NULL) ||
 		(incoming_window == NULL))
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
@@ -872,7 +873,7 @@
 
 	if (session == NULL)
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
@@ -893,7 +894,7 @@
 	if ((session == NULL) ||
 		(outgoing_window == NULL))
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
@@ -913,7 +914,7 @@
 
 	if (session == NULL)
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
@@ -934,7 +935,7 @@
 	if ((session == NULL) ||
 		(handle_max == NULL))
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
@@ -1087,7 +1088,7 @@
 	if ((link_endpoint == NULL) ||
 		(frame_received_callback == NULL))
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
@@ -1114,7 +1115,7 @@
 	if ((link_endpoint == NULL) ||
 		(performative == NULL))
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
@@ -1123,7 +1124,7 @@
 
 		if (connection_encode_frame(session_instance->endpoint, performative, payloads, payload_count, NULL, NULL) != 0)
 		{
-			result = __LINE__;
+			result = __FAILURE__;
 		}
 		else
 		{
@@ -1141,7 +1142,7 @@
 	if ((link_endpoint == NULL) ||
 		(flow == NULL))
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
@@ -1154,7 +1155,7 @@
 		{
 			if (flow_set_next_incoming_id(flow, session_instance->next_incoming_id) != 0)
 			{
-				result = __LINE__;
+				result = __FAILURE__;
 			}
 		}
 
@@ -1166,20 +1167,20 @@
 				(flow_set_outgoing_window(flow, session_instance->outgoing_window) != 0) ||
 				(flow_set_handle(flow, link_endpoint_instance->output_handle) != 0))
 			{
-				result = __LINE__;
+				result = __FAILURE__;
 			}
 			else
 			{
 				AMQP_VALUE flow_performative_value = amqpvalue_create_flow(flow);
 				if (flow_performative_value == NULL)
 				{
-					result = __LINE__;
+					result = __FAILURE__;
 				}
 				else
 				{
 					if (encode_frame(link_endpoint, flow_performative_value, NULL, 0) != 0)
 					{
-						result = __LINE__;
+						result = __FAILURE__;
 					}
 					else
 					{
@@ -1202,7 +1203,7 @@
 	if ((link_endpoint == NULL) ||
 		(attach == NULL))
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
@@ -1210,20 +1211,20 @@
 
 		if (attach_set_handle(attach, link_endpoint_instance->output_handle) != 0)
 		{
-			result = __LINE__;
+			result = __FAILURE__;
 		}
 		else
 		{
 			AMQP_VALUE attach_performative_value = amqpvalue_create_attach(attach);
 			if (attach_performative_value == NULL)
 			{
-				result = __LINE__;
+				result = __FAILURE__;
 			}
 			else
 			{
 				if (encode_frame(link_endpoint, attach_performative_value, NULL, 0) != 0)
 				{
-					result = __LINE__;
+					result = __FAILURE__;
 				}
 				else
 				{
@@ -1245,20 +1246,20 @@
 	if ((link_endpoint == NULL) ||
 		(disposition == NULL))
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
 		AMQP_VALUE disposition_performative_value = amqpvalue_create_disposition(disposition);
 		if (disposition_performative_value == NULL)
 		{
-			result = __LINE__;
+			result = __FAILURE__;
 		}
 		else
 		{
 			if (encode_frame(link_endpoint, disposition_performative_value, NULL, 0) != 0)
 			{
-				result = __LINE__;
+				result = __FAILURE__;
 			}
 			else
 			{
@@ -1279,7 +1280,7 @@
 	if ((link_endpoint == NULL) ||
 		(detach == NULL))
 	{
-		result = __LINE__;
+		result = __FAILURE__;
 	}
 	else
 	{
@@ -1287,20 +1288,20 @@
 
 		if (detach_set_handle(detach, link_endpoint_instance->output_handle) != 0)
 		{
-			result = __LINE__;
+			result = __FAILURE__;
 		}
 		else
 		{
 			AMQP_VALUE detach_performative_value = amqpvalue_create_detach(detach);
 			if (detach_performative_value == NULL)
 			{
-				result = __LINE__;
+				result = __FAILURE__;
 			}
 			else
 			{
 				if (encode_frame(link_endpoint, detach_performative_value, NULL, 0) != 0)
 				{
-					result = __LINE__;
+					result = __FAILURE__;
 				}
 				else
 				{