A small memory footprint AMQP implimentation

Dependents:   iothub_client_sample_amqp remote_monitoring simplesample_amqp

Committer:
AzureIoTClient
Date:
Sun Apr 24 16:40:31 2016 -0700
Revision:
1:eab586236bfe
Parent:
0:6ae2f7bca550
Child:
10:19ce00951771
1.0.5

Who changed what in which revision?

UserRevisionLine numberNew 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"
Azure.IoT Build 0:6ae2f7bca550 11
Azure.IoT Build 0:6ae2f7bca550 12 #ifdef __cplusplus
Azure.IoT Build 0:6ae2f7bca550 13 extern "C" {
Azure.IoT Build 0:6ae2f7bca550 14 #endif /* __cplusplus */
Azure.IoT Build 0:6ae2f7bca550 15
Azure.IoT Build 0:6ae2f7bca550 16 typedef struct SESSION_INSTANCE_TAG* SESSION_HANDLE;
Azure.IoT Build 0:6ae2f7bca550 17 typedef struct LINK_ENDPOINT_INSTANCE_TAG* LINK_ENDPOINT_HANDLE;
Azure.IoT Build 0:6ae2f7bca550 18
Azure.IoT Build 0:6ae2f7bca550 19 typedef enum SESION_STATE_TAG
Azure.IoT Build 0:6ae2f7bca550 20 {
Azure.IoT Build 0:6ae2f7bca550 21 SESSION_STATE_UNMAPPED,
Azure.IoT Build 0:6ae2f7bca550 22 SESSION_STATE_BEGIN_SENT,
Azure.IoT Build 0:6ae2f7bca550 23 SESSION_STATE_BEGIN_RCVD,
Azure.IoT Build 0:6ae2f7bca550 24 SESSION_STATE_MAPPED,
Azure.IoT Build 0:6ae2f7bca550 25 SESSION_STATE_END_SENT,
Azure.IoT Build 0:6ae2f7bca550 26 SESSION_STATE_END_RCVD,
AzureIoTClient 1:eab586236bfe 27 SESSION_STATE_DISCARDING,
AzureIoTClient 1:eab586236bfe 28 SESSION_STATE_ERROR
Azure.IoT Build 0:6ae2f7bca550 29 } SESSION_STATE;
Azure.IoT Build 0:6ae2f7bca550 30
Azure.IoT Build 0:6ae2f7bca550 31 typedef enum SESSION_SEND_TRANSFER_RESULT_TAG
Azure.IoT Build 0:6ae2f7bca550 32 {
Azure.IoT Build 0:6ae2f7bca550 33 SESSION_SEND_TRANSFER_OK,
Azure.IoT Build 0:6ae2f7bca550 34 SESSION_SEND_TRANSFER_ERROR,
Azure.IoT Build 0:6ae2f7bca550 35 SESSION_SEND_TRANSFER_BUSY
Azure.IoT Build 0:6ae2f7bca550 36 } SESSION_SEND_TRANSFER_RESULT;
Azure.IoT Build 0:6ae2f7bca550 37
Azure.IoT Build 0:6ae2f7bca550 38 typedef void(*LINK_ENDPOINT_FRAME_RECEIVED_CALLBACK)(void* context, AMQP_VALUE performative, uint32_t frame_payload_size, const unsigned char* payload_bytes);
Azure.IoT Build 0:6ae2f7bca550 39 typedef void(*ON_SESSION_STATE_CHANGED)(void* context, SESSION_STATE new_session_state, SESSION_STATE previous_session_state);
Azure.IoT Build 0:6ae2f7bca550 40 typedef void(*ON_SESSION_FLOW_ON)(void* context);
Azure.IoT Build 0:6ae2f7bca550 41 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 42
Azure.IoT Build 0:6ae2f7bca550 43 extern SESSION_HANDLE session_create(CONNECTION_HANDLE connection, ON_LINK_ATTACHED on_link_attached, void* callback_context);
Azure.IoT Build 0:6ae2f7bca550 44 extern SESSION_HANDLE session_create_from_endpoint(CONNECTION_HANDLE connection, ENDPOINT_HANDLE connection_endpoint, ON_LINK_ATTACHED on_link_attached, void* callback_context);
Azure.IoT Build 0:6ae2f7bca550 45 extern int session_set_incoming_window(SESSION_HANDLE session, uint32_t incoming_window);
Azure.IoT Build 0:6ae2f7bca550 46 extern int session_get_incoming_window(SESSION_HANDLE session, uint32_t* incoming_window);
Azure.IoT Build 0:6ae2f7bca550 47 extern int session_set_outgoing_window(SESSION_HANDLE session, uint32_t outgoing_window);
Azure.IoT Build 0:6ae2f7bca550 48 extern int session_get_outgoing_window(SESSION_HANDLE session, uint32_t* outgoing_window);
Azure.IoT Build 0:6ae2f7bca550 49 extern int session_set_handle_max(SESSION_HANDLE session, handle handle_max);
Azure.IoT Build 0:6ae2f7bca550 50 extern int session_get_handle_max(SESSION_HANDLE session, handle* handle_max);
Azure.IoT Build 0:6ae2f7bca550 51 extern void session_destroy(SESSION_HANDLE session);
Azure.IoT Build 0:6ae2f7bca550 52 extern int session_begin(SESSION_HANDLE session);
Azure.IoT Build 0:6ae2f7bca550 53 extern int session_end(SESSION_HANDLE session, const char* condition_value, const char* description);
Azure.IoT Build 0:6ae2f7bca550 54 extern LINK_ENDPOINT_HANDLE session_create_link_endpoint(SESSION_HANDLE session, const char* name);
Azure.IoT Build 0:6ae2f7bca550 55 extern void session_destroy_link_endpoint(LINK_ENDPOINT_HANDLE link_endpoint);
Azure.IoT Build 0:6ae2f7bca550 56 extern 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);
Azure.IoT Build 0:6ae2f7bca550 57 extern int session_send_flow(LINK_ENDPOINT_HANDLE link_endpoint, FLOW_HANDLE flow);
Azure.IoT Build 0:6ae2f7bca550 58 extern int session_send_attach(LINK_ENDPOINT_HANDLE link_endpoint, ATTACH_HANDLE attach);
Azure.IoT Build 0:6ae2f7bca550 59 extern int session_send_disposition(LINK_ENDPOINT_HANDLE link_endpoint, DISPOSITION_HANDLE disposition);
Azure.IoT Build 0:6ae2f7bca550 60 extern int session_send_detach(LINK_ENDPOINT_HANDLE link_endpoint, DETACH_HANDLE detach);
Azure.IoT Build 0:6ae2f7bca550 61 extern 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 62
Azure.IoT Build 0:6ae2f7bca550 63 #ifdef __cplusplus
Azure.IoT Build 0:6ae2f7bca550 64 }
Azure.IoT Build 0:6ae2f7bca550 65 #endif /* __cplusplus */
Azure.IoT Build 0:6ae2f7bca550 66
Azure.IoT Build 0:6ae2f7bca550 67 #endif /* SESSION_H */