A small memory footprint AMQP implimentation
Dependents: iothub_client_sample_amqp remote_monitoring simplesample_amqp
azure_uamqp_c/session.h@1:eab586236bfe, 2016-04-24 (annotated)
- 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?
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" |
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 */ |