Mark Radbourne / Mbed 2 deprecated iothub_client_sample_amqp

Dependencies:   EthernetInterface NTPClient iothub_amqp_transport iothub_client mbed-rtos mbed

Fork of iothub_client_sample_amqp by Azure IoT

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers session.h Source File

session.h

00001 // Copyright (c) Microsoft. All rights reserved.
00002 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
00003 
00004 #ifndef SESSION_H
00005 #define SESSION_H
00006 
00007 #include <stdint.h>
00008 #include "azure_uamqp_c/amqpvalue.h"
00009 #include "azure_uamqp_c/amqp_frame_codec.h"
00010 #include "azure_uamqp_c/connection.h"
00011 
00012 #ifdef __cplusplus
00013 extern "C" {
00014 #endif /* __cplusplus */
00015 
00016 #include "azure_c_shared_utility/umock_c_prod.h"
00017 
00018     typedef struct SESSION_INSTANCE_TAG* SESSION_HANDLE;
00019     typedef struct LINK_ENDPOINT_INSTANCE_TAG* LINK_ENDPOINT_HANDLE;
00020 
00021     typedef enum SESION_STATE_TAG
00022     {
00023         SESSION_STATE_UNMAPPED,
00024         SESSION_STATE_BEGIN_SENT,
00025         SESSION_STATE_BEGIN_RCVD,
00026         SESSION_STATE_MAPPED,
00027         SESSION_STATE_END_SENT,
00028         SESSION_STATE_END_RCVD,
00029         SESSION_STATE_DISCARDING,
00030         SESSION_STATE_ERROR
00031     } SESSION_STATE;
00032 
00033     typedef enum SESSION_SEND_TRANSFER_RESULT_TAG
00034     {
00035         SESSION_SEND_TRANSFER_OK,
00036         SESSION_SEND_TRANSFER_ERROR,
00037         SESSION_SEND_TRANSFER_BUSY
00038     } SESSION_SEND_TRANSFER_RESULT;
00039 
00040     typedef void(*LINK_ENDPOINT_FRAME_RECEIVED_CALLBACK)(void* context, AMQP_VALUE performative, uint32_t frame_payload_size, const unsigned char* payload_bytes);
00041     typedef void(*ON_SESSION_STATE_CHANGED)(void* context, SESSION_STATE new_session_state, SESSION_STATE previous_session_state);
00042     typedef void(*ON_SESSION_FLOW_ON)(void* context);
00043     typedef bool(*ON_LINK_ATTACHED)(void* context, LINK_ENDPOINT_HANDLE new_link_endpoint, const char* name, role role, AMQP_VALUE source, AMQP_VALUE target);
00044 
00045     MOCKABLE_FUNCTION(, SESSION_HANDLE, session_create, CONNECTION_HANDLE, connection, ON_LINK_ATTACHED, on_link_attached, void*, callback_context);
00046     MOCKABLE_FUNCTION(, SESSION_HANDLE, session_create_from_endpoint, CONNECTION_HANDLE, connection, ENDPOINT_HANDLE, connection_endpoint, ON_LINK_ATTACHED, on_link_attached, void*, callback_context);
00047     MOCKABLE_FUNCTION(, int, session_set_incoming_window, SESSION_HANDLE, session, uint32_t, incoming_window);
00048     MOCKABLE_FUNCTION(, int, session_get_incoming_window, SESSION_HANDLE, session, uint32_t*, incoming_window);
00049     MOCKABLE_FUNCTION(, int, session_set_outgoing_window, SESSION_HANDLE, session, uint32_t, outgoing_window);
00050     MOCKABLE_FUNCTION(, int, session_get_outgoing_window, SESSION_HANDLE, session, uint32_t*, outgoing_window);
00051     MOCKABLE_FUNCTION(, int, session_set_handle_max, SESSION_HANDLE, session, handle, handle_max);
00052     MOCKABLE_FUNCTION(, int, session_get_handle_max, SESSION_HANDLE, session, handle*, handle_max);
00053     MOCKABLE_FUNCTION(, void, session_destroy, SESSION_HANDLE, session);
00054     MOCKABLE_FUNCTION(, int, session_begin, SESSION_HANDLE, session);
00055     MOCKABLE_FUNCTION(, int, session_end, SESSION_HANDLE, session, const char*, condition_value, const char*, description);
00056     MOCKABLE_FUNCTION(, LINK_ENDPOINT_HANDLE, session_create_link_endpoint, SESSION_HANDLE, session, const char*, name);
00057     MOCKABLE_FUNCTION(, void, session_destroy_link_endpoint, LINK_ENDPOINT_HANDLE, link_endpoint);
00058     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);
00059     MOCKABLE_FUNCTION(, int, session_send_flow, LINK_ENDPOINT_HANDLE, link_endpoint, FLOW_HANDLE, flow);
00060     MOCKABLE_FUNCTION(, int, session_send_attach, LINK_ENDPOINT_HANDLE, link_endpoint, ATTACH_HANDLE, attach);
00061     MOCKABLE_FUNCTION(, int, session_send_disposition, LINK_ENDPOINT_HANDLE, link_endpoint, DISPOSITION_HANDLE, disposition);
00062     MOCKABLE_FUNCTION(, int, session_send_detach, LINK_ENDPOINT_HANDLE, link_endpoint, DETACH_HANDLE, detach);
00063     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);
00064 
00065 #ifdef __cplusplus
00066 }
00067 #endif /* __cplusplus */
00068 
00069 #endif /* SESSION_H */