Microsoft Azure IoT Gateway SDK  1.0.8
The Microsoft Azure IoT Gateway SDK contains the infrastructure and modules to create IoT gateway solutions.
broker.h
Go to the documentation of this file.
1 // Copyright (c) Microsoft. All rights reserved.
2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3 
14 #ifndef BROKER_H
15 #define BROKER_H
16 
18 typedef struct BROKER_HANDLE_DATA_TAG* BROKER_HANDLE;
19 
20 #include "azure_c_shared_utility/macro_utils.h"
21 #include "message.h"
22 #include "module.h"
23 #include "gateway_export.h"
24 
25 #ifdef __cplusplus
26 #include <cstddef>
27 extern "C"
28 {
29 #else
30 #include <stddef.h>
31 #endif
32 
35 typedef struct BROKER_LINK_DATA_TAG {
43 
44 #define BROKER_RESULT_VALUES \
45  BROKER_OK, \
46  BROKER_ERROR, \
47  BROKER_ADD_LINK_ERROR, \
48  BROKER_REMOVE_LINK_ERROR, \
49  BROKER_INVALIDARG
50 
54 DEFINE_ENUM(BROKER_RESULT, BROKER_RESULT_VALUES);
55 
60 GATEWAY_EXPORT BROKER_HANDLE Broker_Create(void);
61 
69 GATEWAY_EXPORT void Broker_IncRef(BROKER_HANDLE broker);
70 
79 GATEWAY_EXPORT void Broker_DecRef(BROKER_HANDLE broker);
80 
97 GATEWAY_EXPORT BROKER_RESULT Broker_Publish(BROKER_HANDLE broker, MODULE_HANDLE source, MESSAGE_HANDLE message);
98 
112 GATEWAY_EXPORT BROKER_RESULT Broker_AddModule(BROKER_HANDLE broker, const MODULE* module);
113 
121 GATEWAY_EXPORT BROKER_RESULT Broker_RemoveModule(BROKER_HANDLE broker, const MODULE* module);
122 
136 GATEWAY_EXPORT BROKER_RESULT Broker_AddLink(BROKER_HANDLE broker, const BROKER_LINK_DATA* link);
137 
145 GATEWAY_EXPORT BROKER_RESULT Broker_RemoveLink(BROKER_HANDLE broker, const BROKER_LINK_DATA* link);
146 
151 GATEWAY_EXPORT void Broker_Destroy(BROKER_HANDLE broker);
152 
153 #ifdef __cplusplus
154 }
155 #endif
156 
157 
158 #endif /*BROKER_H*/
enum BROKER_RESULT_TAG BROKER_RESULT
Enumeration describing the result of Broker_Publish, Broker_AddModule, Broker_AddLink, and Broker_RemoveModule.
GATEWAY_EXPORT BROKER_RESULT Broker_AddModule(BROKER_HANDLE broker, const MODULE *module)
Adds a module to the message broker.
struct BROKER_LINK_DATA_TAG BROKER_LINK_DATA
Link Data with MODULE_HANDLE for source and sink.
void * MODULE_HANDLE
Represents a module instance.
Definition: module.h:25
struct BROKER_HANDLE_DATA_TAG * BROKER_HANDLE
Struct representing a message broker.
Definition: broker.h:18
Defines structures and function prototypes for creating, inspecting and disposing of messages publish...
GATEWAY_EXPORT BROKER_RESULT Broker_AddLink(BROKER_HANDLE broker, const BROKER_LINK_DATA *link)
Adds a route to the message broker.
Structure used to represent/abstract the idea of a module. May contain Handle/FxnPtrs or an interface...
Definition: module.h:44
GATEWAY_EXPORT BROKER_RESULT Broker_RemoveLink(BROKER_HANDLE broker, const BROKER_LINK_DATA *link)
Removes a route from the message broker.
GATEWAY_EXPORT void Broker_IncRef(BROKER_HANDLE broker)
Increments the reference count of a message broker.
GATEWAY_EXPORT BROKER_RESULT Broker_RemoveModule(BROKER_HANDLE broker, const MODULE *module)
Removes a module from the message broker.
GATEWAY_EXPORT void Broker_DecRef(BROKER_HANDLE broker)
Decrements the reference count of a message broker.
MODULE_HANDLE module_sink_handle
MODULE_HANDLE representing the module receiving messages.
Definition: broker.h:41
GATEWAY_EXPORT BROKER_HANDLE Broker_Create(void)
Creates a new message broker.
MODULE_HANDLE module_source_handle
MODULE_HANDLE representing the module generating/publishing messages.
Definition: broker.h:38
GATEWAY_EXPORT void Broker_Destroy(BROKER_HANDLE broker)
Disposes of resources allocated by a message broker.
GATEWAY_EXPORT BROKER_RESULT Broker_Publish(BROKER_HANDLE broker, MODULE_HANDLE source, MESSAGE_HANDLE message)
Publishes a message to the message broker.
Link Data with MODULE_HANDLE for source and sink.
Definition: broker.h:35
Interface for modules which communicate with other modules via a message broker.
struct MESSAGE_HANDLE_DATA_TAG * MESSAGE_HANDLE
Struct representing a particular message.
Definition: message.h:48