18#ifndef IOX_BINDING_C_WAIT_SET_H
19#define IOX_BINDING_C_WAIT_SET_H
21#include "iceoryx_binding_c/client.h"
22#include "iceoryx_binding_c/enums.h"
23#include "iceoryx_binding_c/internal/c2cpp_binding.h"
24#include "iceoryx_binding_c/notification_info.h"
25#include "iceoryx_binding_c/service_discovery.h"
26#include "iceoryx_binding_c/subscriber.h"
27#include "iceoryx_binding_c/types.h"
28#include "iceoryx_binding_c/user_trigger.h"
33typedef CLASS cpp2c_WaitSet* iox_ws_t;
42void iox_ws_deinit(iox_ws_t
const self);
53uint64_t iox_ws_timed_wait(iox_ws_t
const self,
54 struct timespec timeout,
55 iox_notification_info_t*
const notificationInfoArray,
56 const uint64_t notificationInfoArrayCapacity,
57 uint64_t* missedElements);
67uint64_t iox_ws_wait(iox_ws_t
const self,
68 iox_notification_info_t*
const notificationInfoArray,
69 const uint64_t notificationInfoArrayCapacity,
70 uint64_t* missedElements);
73uint64_t iox_ws_size(iox_ws_t
const self);
76uint64_t iox_ws_capacity(iox_ws_t
const self);
82void iox_ws_mark_for_destruction(iox_ws_t
const self);
92ENUM iox_WaitSetResult iox_ws_attach_subscriber_state(iox_ws_t
const self,
93 iox_sub_t
const subscriber,
94 const ENUM iox_SubscriberState subscriberState,
96 void (*callback)(iox_sub_t));
108ENUM iox_WaitSetResult iox_ws_attach_subscriber_state_with_context_data(iox_ws_t
const self,
109 iox_sub_t
const subscriber,
110 const ENUM iox_SubscriberState subscriberState,
112 void (*callback)(iox_sub_t,
void*),
113 void*
const contextData);
123ENUM iox_WaitSetResult iox_ws_attach_subscriber_event(iox_ws_t
const self,
124 iox_sub_t
const subscriber,
125 const ENUM iox_SubscriberEvent subscriberEvent,
126 const uint64_t eventId,
127 void (*callback)(iox_sub_t));
139ENUM iox_WaitSetResult iox_ws_attach_subscriber_event_with_context_data(iox_ws_t
const self,
140 iox_sub_t
const subscriber,
141 const ENUM iox_SubscriberEvent subscriberEvent,
142 const uint64_t eventId,
143 void (*callback)(iox_sub_t,
void*),
144 void*
const contextData);
153ENUM iox_WaitSetResult iox_ws_attach_user_trigger_event(iox_ws_t
const self,
154 iox_user_trigger_t
const userTrigger,
155 const uint64_t eventId,
156 void (*callback)(iox_user_trigger_t));
167ENUM iox_WaitSetResult iox_ws_attach_user_trigger_event_with_context_data(iox_ws_t
const self,
168 iox_user_trigger_t
const userTrigger,
169 const uint64_t eventId,
170 void (*callback)(iox_user_trigger_t,
void*),
171 void*
const contextData);
177void iox_ws_detach_subscriber_event(iox_ws_t
const self,
178 iox_sub_t
const subscriber,
179 const ENUM iox_SubscriberEvent subscriberEvent);
185void iox_ws_detach_subscriber_state(iox_ws_t
const self,
186 iox_sub_t
const subscriber,
187 const ENUM iox_SubscriberState subscriberState);
192void iox_ws_detach_user_trigger_event(iox_ws_t
const self, iox_user_trigger_t
const userTrigger);
202ENUM iox_WaitSetResult iox_ws_attach_client_event(
const iox_ws_t self,
203 const iox_client_t client,
204 const ENUM iox_ClientEvent clientEvent,
205 const uint64_t eventId,
206 void (*callback)(iox_client_t));
217ENUM iox_WaitSetResult iox_ws_attach_client_event_with_context_data(iox_ws_t
const self,
218 iox_client_t
const client,
219 const ENUM iox_ClientEvent clientEvent,
220 const uint64_t eventId,
221 void (*callback)(iox_client_t,
void*),
222 void*
const contextData);
232ENUM iox_WaitSetResult iox_ws_attach_client_state(
const iox_ws_t self,
233 const iox_client_t client,
234 const ENUM iox_ClientState clientState,
235 const uint64_t eventId,
236 void (*callback)(iox_client_t));
247ENUM iox_WaitSetResult iox_ws_attach_client_state_with_context_data(iox_ws_t
const self,
248 iox_client_t
const client,
249 const ENUM iox_ClientState clientState,
250 const uint64_t eventId,
251 void (*callback)(iox_client_t,
void*),
252 void*
const contextData);
258void iox_ws_detach_client_event(iox_ws_t
const self, iox_client_t
const client,
const ENUM iox_ClientEvent clientEvent);
264void iox_ws_detach_client_state(iox_ws_t
const self, iox_client_t
const client,
const ENUM iox_ClientState clientState);
274ENUM iox_WaitSetResult iox_ws_attach_server_event(
const iox_ws_t self,
275 const iox_server_t server,
276 const ENUM iox_ServerEvent serverEvent,
277 const uint64_t eventId,
278 void (*callback)(iox_server_t));
289ENUM iox_WaitSetResult iox_ws_attach_server_event_with_context_data(iox_ws_t
const self,
290 iox_server_t
const server,
291 const ENUM iox_ServerEvent serverEvent,
292 const uint64_t eventId,
293 void (*callback)(iox_server_t,
void*),
294 void*
const contextData);
304ENUM iox_WaitSetResult iox_ws_attach_server_state(
const iox_ws_t self,
305 const iox_server_t server,
306 const ENUM iox_ServerState serverState,
307 const uint64_t eventId,
308 void (*callback)(iox_server_t));
319ENUM iox_WaitSetResult iox_ws_attach_server_state_with_context_data(iox_ws_t
const self,
320 iox_server_t
const server,
321 const ENUM iox_ServerState serverState,
322 const uint64_t eventId,
323 void (*callback)(iox_server_t,
void*),
324 void*
const contextData);
330void iox_ws_detach_server_event(iox_ws_t
const self, iox_server_t
const server,
const ENUM iox_ServerEvent serverEvent);
336void iox_ws_detach_server_state(iox_ws_t
const self, iox_server_t
const server,
const ENUM iox_ServerState serverState);
346ENUM iox_WaitSetResult iox_ws_attach_service_discovery_event(
const iox_ws_t self,
347 const iox_service_discovery_t serviceDiscovery,
348 const ENUM iox_ServiceDiscoveryEvent serviceDiscoveryEvent,
349 const uint64_t eventId,
350 void (*callback)(iox_service_discovery_t));
361ENUM iox_WaitSetResult
362iox_ws_attach_service_discovery_event_with_context_data(iox_ws_t
const self,
363 iox_service_discovery_t
const serviceDiscovery,
364 const ENUM iox_ServiceDiscoveryEvent serviceDiscoveryEvent,
365 const uint64_t eventId,
366 void (*callback)(iox_service_discovery_t,
void*),
367 void*
const contextData);
373void iox_ws_detach_service_discovery_event(iox_ws_t
const self,
374 iox_service_discovery_t
const serviceDiscovery,
375 const ENUM iox_ServiceDiscoveryEvent serviceDiscoveryEvent);