A small memory footprint AMQP implimentation
Dependents: iothub_client_sample_amqp remote_monitoring simplesample_amqp
azure_uamqp_c/session.h@40:f0ceafa8d570, 2018-03-05 (annotated)
- Committer:
- AzureIoTClient
- Date:
- Mon Mar 05 17:41:28 2018 -0800
- Revision:
- 40:f0ceafa8d570
- Parent:
- 34:6be9c2058664
1.2.0
Who changed what in which revision?
User | Revision | Line number | New 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 | #ifndef SESSION_H |
Azure.IoT Build | 0:6ae2f7bca550 | 5 | #define SESSION_H |
Azure.IoT Build | 0:6ae2f7bca550 | 6 | |
Azure.IoT Build | 0:6ae2f7bca550 | 7 | #include <stdint.h> |
Azure.IoT Build | 0:6ae2f7bca550 | 8 | #include "azure_uamqp_c/amqpvalue.h" |
Azure.IoT Build | 0:6ae2f7bca550 | 9 | #include "azure_uamqp_c/amqp_frame_codec.h" |
Azure.IoT Build | 0:6ae2f7bca550 | 10 | #include "azure_uamqp_c/connection.h" |
AzureIoTClient | 40:f0ceafa8d570 | 11 | |
AzureIoTClient | 40:f0ceafa8d570 | 12 | #include "azure_uamqp_c/amqp_definitions_role.h" |
AzureIoTClient | 40:f0ceafa8d570 | 13 | #include "azure_uamqp_c/amqp_definitions_handle.h" |
AzureIoTClient | 40:f0ceafa8d570 | 14 | #include "azure_uamqp_c/amqp_definitions_fields.h" |
AzureIoTClient | 40:f0ceafa8d570 | 15 | #include "azure_uamqp_c/amqp_definitions_sender_settle_mode.h" |
AzureIoTClient | 40:f0ceafa8d570 | 16 | #include "azure_uamqp_c/amqp_definitions_receiver_settle_mode.h" |
AzureIoTClient | 40:f0ceafa8d570 | 17 | #include "azure_uamqp_c/amqp_definitions_sequence_no.h" |
AzureIoTClient | 40:f0ceafa8d570 | 18 | #include "azure_uamqp_c/amqp_definitions_delivery_number.h" |
AzureIoTClient | 40:f0ceafa8d570 | 19 | #include "azure_uamqp_c/amqp_definitions_disposition.h" |
AzureIoTClient | 40:f0ceafa8d570 | 20 | #include "azure_uamqp_c/amqp_definitions_transfer_number.h" |
AzureIoTClient | 40:f0ceafa8d570 | 21 | #include "azure_uamqp_c/amqp_definitions_flow.h" |
AzureIoTClient | 40:f0ceafa8d570 | 22 | #include "azure_uamqp_c/amqp_definitions_attach.h" |
AzureIoTClient | 40:f0ceafa8d570 | 23 | #include "azure_uamqp_c/amqp_definitions_error.h" |
AzureIoTClient | 40:f0ceafa8d570 | 24 | #include "azure_uamqp_c/amqp_definitions_detach.h" |
AzureIoTClient | 40:f0ceafa8d570 | 25 | #include "azure_uamqp_c/amqp_definitions_delivery_tag.h" |
AzureIoTClient | 40:f0ceafa8d570 | 26 | #include "azure_uamqp_c/amqp_definitions_message_format.h" |
AzureIoTClient | 40:f0ceafa8d570 | 27 | #include "azure_uamqp_c/amqp_definitions_transfer.h" |
AzureIoTClient | 40:f0ceafa8d570 | 28 | |
AzureIoTClient | 40:f0ceafa8d570 | 29 | |
AzureIoTClient | 34:6be9c2058664 | 30 | #include "azure_c_shared_utility/umock_c_prod.h" |
AzureIoTClient | 34:6be9c2058664 | 31 | #include "azure_c_shared_utility/macro_utils.h" |
Azure.IoT Build | 0:6ae2f7bca550 | 32 | |
AzureIoTClient | 40:f0ceafa8d570 | 33 | |
Azure.IoT Build | 0:6ae2f7bca550 | 34 | #ifdef __cplusplus |
Azure.IoT Build | 0:6ae2f7bca550 | 35 | extern "C" { |
Azure.IoT Build | 0:6ae2f7bca550 | 36 | #endif /* __cplusplus */ |
Azure.IoT Build | 0:6ae2f7bca550 | 37 | |
AzureIoTClient | 34:6be9c2058664 | 38 | typedef struct SESSION_INSTANCE_TAG* SESSION_HANDLE; |
AzureIoTClient | 34:6be9c2058664 | 39 | typedef struct LINK_ENDPOINT_INSTANCE_TAG* LINK_ENDPOINT_HANDLE; |
Azure.IoT Build | 0:6ae2f7bca550 | 40 | |
AzureIoTClient | 34:6be9c2058664 | 41 | #define SESSION_STATE_VALUES \ |
AzureIoTClient | 34:6be9c2058664 | 42 | SESSION_STATE_UNMAPPED, \ |
AzureIoTClient | 34:6be9c2058664 | 43 | SESSION_STATE_BEGIN_SENT, \ |
AzureIoTClient | 34:6be9c2058664 | 44 | SESSION_STATE_BEGIN_RCVD, \ |
AzureIoTClient | 34:6be9c2058664 | 45 | SESSION_STATE_MAPPED, \ |
AzureIoTClient | 34:6be9c2058664 | 46 | SESSION_STATE_END_SENT, \ |
AzureIoTClient | 34:6be9c2058664 | 47 | SESSION_STATE_END_RCVD, \ |
AzureIoTClient | 34:6be9c2058664 | 48 | SESSION_STATE_DISCARDING, \ |
AzureIoTClient | 34:6be9c2058664 | 49 | SESSION_STATE_ERROR |
Azure.IoT Build | 0:6ae2f7bca550 | 50 | |
AzureIoTClient | 34:6be9c2058664 | 51 | DEFINE_ENUM(SESSION_STATE, SESSION_STATE_VALUES) |
AzureIoTClient | 34:6be9c2058664 | 52 | |
AzureIoTClient | 34:6be9c2058664 | 53 | #define SESSION_SEND_TRANSFER_RESULT_VALUES \ |
AzureIoTClient | 34:6be9c2058664 | 54 | SESSION_SEND_TRANSFER_OK, \ |
AzureIoTClient | 34:6be9c2058664 | 55 | SESSION_SEND_TRANSFER_ERROR, \ |
AzureIoTClient | 34:6be9c2058664 | 56 | SESSION_SEND_TRANSFER_BUSY |
AzureIoTClient | 34:6be9c2058664 | 57 | |
AzureIoTClient | 34:6be9c2058664 | 58 | DEFINE_ENUM(SESSION_SEND_TRANSFER_RESULT, SESSION_SEND_TRANSFER_RESULT_VALUES) |
Azure.IoT Build | 0:6ae2f7bca550 | 59 | |
AzureIoTClient | 28:add19eb7defa | 60 | typedef void(*LINK_ENDPOINT_FRAME_RECEIVED_CALLBACK)(void* context, AMQP_VALUE performative, uint32_t frame_payload_size, const unsigned char* payload_bytes); |
AzureIoTClient | 28:add19eb7defa | 61 | typedef void(*ON_SESSION_STATE_CHANGED)(void* context, SESSION_STATE new_session_state, SESSION_STATE previous_session_state); |
AzureIoTClient | 28:add19eb7defa | 62 | typedef void(*ON_SESSION_FLOW_ON)(void* context); |
AzureIoTClient | 28:add19eb7defa | 63 | typedef bool(*ON_LINK_ATTACHED)(void* context, LINK_ENDPOINT_HANDLE new_link_endpoint, const char* name, role role, AMQP_VALUE source, AMQP_VALUE target); |
Azure.IoT Build | 0:6ae2f7bca550 | 64 | |
AzureIoTClient | 28:add19eb7defa | 65 | MOCKABLE_FUNCTION(, SESSION_HANDLE, session_create, CONNECTION_HANDLE, connection, ON_LINK_ATTACHED, on_link_attached, void*, callback_context); |
AzureIoTClient | 28:add19eb7defa | 66 | MOCKABLE_FUNCTION(, SESSION_HANDLE, session_create_from_endpoint, CONNECTION_HANDLE, connection, ENDPOINT_HANDLE, connection_endpoint, ON_LINK_ATTACHED, on_link_attached, void*, callback_context); |
AzureIoTClient | 28:add19eb7defa | 67 | MOCKABLE_FUNCTION(, int, session_set_incoming_window, SESSION_HANDLE, session, uint32_t, incoming_window); |
AzureIoTClient | 28:add19eb7defa | 68 | MOCKABLE_FUNCTION(, int, session_get_incoming_window, SESSION_HANDLE, session, uint32_t*, incoming_window); |
AzureIoTClient | 28:add19eb7defa | 69 | MOCKABLE_FUNCTION(, int, session_set_outgoing_window, SESSION_HANDLE, session, uint32_t, outgoing_window); |
AzureIoTClient | 28:add19eb7defa | 70 | MOCKABLE_FUNCTION(, int, session_get_outgoing_window, SESSION_HANDLE, session, uint32_t*, outgoing_window); |
AzureIoTClient | 28:add19eb7defa | 71 | MOCKABLE_FUNCTION(, int, session_set_handle_max, SESSION_HANDLE, session, handle, handle_max); |
AzureIoTClient | 28:add19eb7defa | 72 | MOCKABLE_FUNCTION(, int, session_get_handle_max, SESSION_HANDLE, session, handle*, handle_max); |
AzureIoTClient | 28:add19eb7defa | 73 | MOCKABLE_FUNCTION(, void, session_destroy, SESSION_HANDLE, session); |
AzureIoTClient | 28:add19eb7defa | 74 | MOCKABLE_FUNCTION(, int, session_begin, SESSION_HANDLE, session); |
AzureIoTClient | 28:add19eb7defa | 75 | MOCKABLE_FUNCTION(, int, session_end, SESSION_HANDLE, session, const char*, condition_value, const char*, description); |
AzureIoTClient | 28:add19eb7defa | 76 | MOCKABLE_FUNCTION(, LINK_ENDPOINT_HANDLE, session_create_link_endpoint, SESSION_HANDLE, session, const char*, name); |
AzureIoTClient | 28:add19eb7defa | 77 | MOCKABLE_FUNCTION(, void, session_destroy_link_endpoint, LINK_ENDPOINT_HANDLE, link_endpoint); |
AzureIoTClient | 28:add19eb7defa | 78 | MOCKABLE_FUNCTION(, int, session_start_link_endpoint, LINK_ENDPOINT_HANDLE, link_endpoint, ON_ENDPOINT_FRAME_RECEIVED, frame_received_callback, ON_SESSION_STATE_CHANGED, on_session_state_changed, ON_SESSION_FLOW_ON, on_session_flow_on, void*, context); |
AzureIoTClient | 28:add19eb7defa | 79 | MOCKABLE_FUNCTION(, int, session_send_flow, LINK_ENDPOINT_HANDLE, link_endpoint, FLOW_HANDLE, flow); |
AzureIoTClient | 28:add19eb7defa | 80 | MOCKABLE_FUNCTION(, int, session_send_attach, LINK_ENDPOINT_HANDLE, link_endpoint, ATTACH_HANDLE, attach); |
AzureIoTClient | 28:add19eb7defa | 81 | MOCKABLE_FUNCTION(, int, session_send_disposition, LINK_ENDPOINT_HANDLE, link_endpoint, DISPOSITION_HANDLE, disposition); |
AzureIoTClient | 28:add19eb7defa | 82 | MOCKABLE_FUNCTION(, int, session_send_detach, LINK_ENDPOINT_HANDLE, link_endpoint, DETACH_HANDLE, detach); |
AzureIoTClient | 28:add19eb7defa | 83 | MOCKABLE_FUNCTION(, SESSION_SEND_TRANSFER_RESULT, session_send_transfer, LINK_ENDPOINT_HANDLE, link_endpoint, TRANSFER_HANDLE, transfer, PAYLOAD*, payloads, size_t, payload_count, delivery_number*, delivery_id, ON_SEND_COMPLETE, on_send_complete, void*, callback_context); |
Azure.IoT Build | 0:6ae2f7bca550 | 84 | |
Azure.IoT Build | 0:6ae2f7bca550 | 85 | #ifdef __cplusplus |
Azure.IoT Build | 0:6ae2f7bca550 | 86 | } |
Azure.IoT Build | 0:6ae2f7bca550 | 87 | #endif /* __cplusplus */ |
Azure.IoT Build | 0:6ae2f7bca550 | 88 | |
Azure.IoT Build | 0:6ae2f7bca550 | 89 | #endif /* SESSION_H */ |