connectivity.c
Go to the documentation of this file.
1 
9 #include "connectivity.h"
10 #include "mcl_core/mcl_memory.h"
12 
14 {
15  mcl_error_t code;
16 
17  MCL_DEBUG_ENTRY("mcl_connectivity_configuration_t *configuration = <%p>, mcl_connectivity_t **connectivity = <%p>", configuration, connectivity);
18 
19  // Null check of configuration.
20  MCL_ASSERT_NOT_NULL(configuration, code);
21 
22  // Null check of connectivity.
23  MCL_ASSERT_NOT_NULL(connectivity, code);
24 
25  // Validate connectivity configuration.
26  code = connectivity_configuration_validate(configuration);
27 
28  if (MCL_OK == code)
29  {
30  // Allocate memory for connectivity handle.
31  MCL_NEW(*connectivity);
32 
33  if (MCL_NULL != *connectivity)
34  {
35  // Set configuration.
36  (*connectivity)->configuration = configuration;
37 
38  // Initialize connectivity processor.
39  (*connectivity)->processor.agent_id = mcl_core_get_client_id(configuration->core);
40  (*connectivity)->processor.hostname = mcl_core_get_host_name(configuration->core);
41  (*connectivity)->processor.access_token = MCL_NULL;
42  (*connectivity)->processor.http_client = mcl_core_get_http_client(configuration->core);
43  (*connectivity)->processor.max_http_payload_size = configuration->max_http_payload_size;
44  (*connectivity)->processor.exchange_url = configuration->exchange_url;
45  (*connectivity)->processor.mapping_url = configuration->mapping_url;
46  }
47  else
48  {
49  code = MCL_OUT_OF_MEMORY;
50  }
51  }
52 
53  if (MCL_OK != code)
54  {
55  mcl_connectivity_destroy(connectivity);
56  }
57 
59  MCL_DEBUG_LEAVE("retVal = <%d>", code);
60  return code;
61 }
62 
64 {
65  mcl_error_t code;
66 
67  MCL_DEBUG_ENTRY("mcl_connectivity_t *connectivity = <%p>, void *item = <%p>", connectivity, item);
68 
69  // Null check.
70  MCL_ASSERT_NOT_NULL(connectivity, code);
71  MCL_ASSERT_NOT_NULL(item, code);
72 
73  // Free previous access token.
74  MCL_FREE(connectivity->processor.access_token);
75 
76  // Get access token.
77  code = mcl_core_get_last_access_token(connectivity->configuration->core, &connectivity->processor.access_token);
78 
79  if (MCL_OK == code)
80  {
81  // Exchange item.
82  code = connectivity_processor_exchange(&(connectivity->processor), item);
83  }
84 
86  MCL_DEBUG_LEAVE("retVal = <%d>", code);
87  return code;
88 }
89 
91 {
92  mcl_error_t code;
93 
94  MCL_DEBUG_ENTRY("mcl_connectivity_t *connectivity = <%p>, mcl_mapping_t *mapping = <%p>", connectivity, mapping);
95 
96  // Null check.
97  MCL_ASSERT_NOT_NULL(connectivity, code);
98  MCL_ASSERT_NOT_NULL(mapping, code);
99 
100  // Free previous access token.
101  MCL_FREE(connectivity->processor.access_token);
102 
103  // Get access token.
104  code = mcl_core_get_last_access_token(connectivity->configuration->core, &connectivity->processor.access_token);
105 
106  if (MCL_OK == code)
107  {
108  // Create data point mapping.
109  code = connectivity_processor_create_mapping(&(connectivity->processor), mapping);
110  }
111 
113  MCL_DEBUG_LEAVE("retVal = <%d>", code);
114  return code;
115 }
116 
118 {
119  mcl_error_t code;
120 
121  MCL_DEBUG_ENTRY("mcl_connectivity_t *connectivity = <%p>, mcl_data_source_configuration_t **configuration = <%p>", connectivity, configuration);
122 
123  // Null check.
124  MCL_ASSERT_NOT_NULL(configuration, code);
125  *configuration = MCL_NULL;
126  MCL_ASSERT_NOT_NULL(connectivity, code);
127 
128  // Free previous access token.
129  MCL_FREE(connectivity->processor.access_token);
130 
131  // Get access token.
132  code = mcl_core_get_last_access_token(connectivity->configuration->core, &connectivity->processor.access_token);
133 
134  if (MCL_OK == code)
135  {
136  // Get data source configuration.
137  code = connectivity_processor_get_data_source_configuration(&(connectivity->processor), configuration);
138  }
139 
141  MCL_DEBUG_LEAVE("retVal = <%d>", code);
142  return code;
143 }
144 
146 {
147  MCL_DEBUG_ENTRY("mcl_connectivity_t **connectivity = <%p>", connectivity);
148 
149  // Destroys the connectivity data structure.
150  if ((MCL_NULL != connectivity) && (MCL_NULL != *connectivity))
151  {
152  MCL_FREE((*connectivity)->processor.access_token);
153  MCL_FREE(*connectivity);
154  }
155 
156  MCL_DEBUG_LEAVE("retVal = void");
157 }
#define MCL_FUNCTION_LEAVE_LABEL
mcl_error_t mcl_connectivity_create_mapping(mcl_connectivity_t *connectivity, mcl_mapping_t *mapping)
Definition: connectivity.c:90
MCL_OK
struct mcl_data_source_configuration_t mcl_data_source_configuration_t
mcl_error_t mcl_connectivity_exchange(mcl_connectivity_t *connectivity, void *item)
Definition: connectivity.c:63
struct mcl_mapping_t mcl_mapping_t
Definition: mcl_mapping.h:32
mcl_int32_t mcl_error_t
#define MCL_DEBUG_ENTRY(...)
struct mcl_connectivity_t mcl_connectivity_t
struct mcl_connectivity_configuration_t mcl_connectivity_configuration_t
MCL_CORE_EXPORT const char * mcl_core_get_host_name(mcl_core_t *core)
mcl_error_t connectivity_processor_exchange(connectivity_processor_t *connectivity_processor, mcl_item_t *item)
mcl_error_t mcl_connectivity_initialize(mcl_connectivity_configuration_t *configuration, mcl_connectivity_t **connectivity)
Definition: connectivity.c:13
#define MCL_NEW(p)
mcl_error_t connectivity_configuration_validate(connectivity_configuration_t *configuration)
#define MCL_NULL
void mcl_connectivity_destroy(mcl_connectivity_t **connectivity)
Definition: connectivity.c:145
MCL_CORE_EXPORT mcl_error_t mcl_core_get_last_access_token(mcl_core_t *core, char **token)
#define MCL_FREE(p)
#define MCL_ASSERT_NOT_NULL(argument, return_variable)
Connectivity module header file.
mcl_error_t mcl_connectivity_get_data_source_configuration(mcl_connectivity_t *connectivity, mcl_data_source_configuration_t **configuration)
Definition: connectivity.c:117
mcl_error_t connectivity_processor_get_data_source_configuration(connectivity_processor_t *connectivity_processor, data_source_configuration_t **configuration)
MCL_CORE_EXPORT const char * mcl_core_get_client_id(mcl_core_t *core)
MCL_OUT_OF_MEMORY
MCL_CORE_EXPORT mcl_http_client_t * mcl_core_get_http_client(mcl_core_t *core)
#define MCL_DEBUG_LEAVE(...)
mcl_error_t connectivity_processor_create_mapping(connectivity_processor_t *connectivity_processor, mapping_t *mapping)