XROAD
mdata_channel.h
Go to the documentation of this file.
1 #pragma once
7 #include "mdata_engine.h"
8 #include <common/xroad_xml.h>
9 
10 #ifdef __cplusplus
11 extern "C"
12 {
13 #endif
14 
15 typedef struct
16 {
17  void* ctx;
21  void (*on_subscribe_result)(mdata_subscribe_result_t*, void*);
22 
26  void (*on_feed_state)(mdata_feed_state_type_t, void*, xroad_mdsource_t*);
27 
31  void (*on_instr_feed_state)(mdata_feed_state_type_t, void*, xroad_instr_t*);
32 
39  xroad_errno_t (*on_prepare_mdata)(mdata_proto_type_t, void*, void*);
40 
47  xroad_errno_t (*on_mdata)(mdata_proto_type_t, void*, void*, xroad_mdsource_t*);
54  void (*on_subscribe)(mdata_subscribe_t*, void*, void*);
55 
59  void (*on_connected)(void*);
60 
64  void (*on_disconnected)(void*);
66 
67 typedef struct mdata_channel_s mdata_channel_t;
74 mdata_channel_t* mdata_channel_server_create(mdata_channel_callback_t cb, int snd_buf_size, int snd_buf_size_max,
75  int recv_buf_size, int recv_buf_size_max, int heartbeat_int, xroad_str_t uri, int cpu, int weight,
76  bool use_thread, bool write_crc, bool low_latency);
77 
84 mdata_channel_t* mdata_channel_client_create(mdata_channel_callback_t cb, int snd_buf_size, int snd_buf_size_max,
85  int recv_buf_size, int recv_buf_size_max, int heartbeat_int, xroad_str_t uri, int wait_timeout_us, bool check_crc,
86  bool use_fake_fd);
87 
93 xroad_errno_t mdata_channel_start(mdata_channel_t* mdata);
94 
99 void mdata_channel_stop(mdata_channel_t* mdata);
100 
105 void mdata_channel_destroy(mdata_channel_t* mdata);
106 
114 uint64_t mdata_channel_put(mdata_channel_t* mdata, mdata_proto_type_t type, void* val);
115 
120 xroad_errno_t mdata_channel_flush(mdata_channel_t* mdata);
121 
128 xroad_errno_t mdata_channel_send(mdata_channel_t* mdata, mdata_proto_type_t type, void* val);
129 
137 xroad_errno_t mdata_channel_subscribe(mdata_channel_t* mdata, xroad_instr_t* instr, mdata_subscription_mask_t mask, mdata_callback_t cb);
138 
139 /* *
140  * deactivates channel in case of issues wih mdata feed
141  * @param[in] c - pointer to the mdata_channel_t instance
142  * */
143 void mdata_channel_deactivate(mdata_channel_t* c);
144 
145 /* *
146  * activates channel
147  * @param[in] c - pointer to the mdata_channel_t instance
148  * */
149 void mdata_channel_activate(mdata_channel_t* c);
150 
155 xroad_mdsource_t* mdata_channel_get_source(mdata_channel_t* c);
156 
161 void mdata_channel_set_source(mdata_channel_t* c, xroad_mdsource_t* source);
162 
167 mdata_feed_state_type_t mdata_channel_get_state(mdata_channel_t* c);
168 
173 int32_t mdata_channel_decr_ref(mdata_channel_t* c);
174 
179 int32_t mdata_channel_inc_ref(mdata_channel_t* c);
180 
181 
182 #ifdef __cplusplus
183 }
184 #endif
xroad_errno_t mdata_channel_flush(mdata_channel_t *mdata)
void mdata_channel_stop(mdata_channel_t *mdata)
int32_t mdata_channel_decr_ref(mdata_channel_t *c)
void mdata_channel_set_source(mdata_channel_t *c, xroad_mdsource_t *source)
mdata_channel_t * mdata_channel_client_create(mdata_channel_callback_t cb, int snd_buf_size, int snd_buf_size_max, int recv_buf_size, int recv_buf_size_max, int heartbeat_int, xroad_str_t uri, int wait_timeout_us, bool check_crc, bool use_fake_fd)
xroad_errno_t mdata_channel_start(mdata_channel_t *mdata)
mdata_feed_state_type_t mdata_channel_get_state(mdata_channel_t *c)
uint64_t mdata_channel_put(mdata_channel_t *mdata, mdata_proto_type_t type, void *val)
xroad_mdsource_t * mdata_channel_get_source(mdata_channel_t *c)
mdata_channel_t * mdata_channel_server_create(mdata_channel_callback_t cb, int snd_buf_size, int snd_buf_size_max, int recv_buf_size, int recv_buf_size_max, int heartbeat_int, xroad_str_t uri, int cpu, int weight, bool use_thread, bool write_crc, bool low_latency)
xroad_errno_t mdata_channel_send(mdata_channel_t *mdata, mdata_proto_type_t type, void *val)
int32_t mdata_channel_inc_ref(mdata_channel_t *c)
xroad_errno_t mdata_channel_subscribe(mdata_channel_t *mdata, xroad_instr_t *instr, mdata_subscription_mask_t mask, mdata_callback_t cb)
void mdata_channel_destroy(mdata_channel_t *mdata)
Definition: mdata_engine.h:46
Definition: mdata_channel.h:16
Definition: mdata_proto.h:97
Definition: mdata_proto.h:90
Definition: xroad_string.h:29