iceoryx_binding_c  2.0.2
wait_set.h
1 // Copyright (c) 2020 by Robert Bosch GmbH. All rights reserved.
2 // Copyright (c) 2020 - 2022 Apex.AI Inc. All rights reserved.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 // SPDX-License-Identifier: Apache-2.0
17 
18 #ifndef IOX_BINDING_C_WAIT_SET_H
19 #define IOX_BINDING_C_WAIT_SET_H
20 
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"
29 
30 #include <time.h>
31 
33 typedef CLASS cpp2c_WaitSet* iox_ws_t;
34 
38 iox_ws_t iox_ws_init(iox_ws_storage_t* self);
39 
42 void iox_ws_deinit(iox_ws_t const self);
43 
53 uint64_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);
58 
67 uint64_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);
71 
73 uint64_t iox_ws_size(iox_ws_t const self);
74 
76 uint64_t iox_ws_capacity(iox_ws_t const self);
77 
82 void iox_ws_mark_for_destruction(iox_ws_t const self);
83 
92 ENUM iox_WaitSetResult iox_ws_attach_subscriber_state(iox_ws_t const self,
93  iox_sub_t const subscriber,
94  const ENUM iox_SubscriberState subscriberState,
95  const uint64_t id,
96  void (*callback)(iox_sub_t));
97 
108 ENUM 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,
111  const uint64_t id,
112  void (*callback)(iox_sub_t, void*),
113  void* const contextData);
114 
123 ENUM 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));
128 
139 ENUM 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);
145 
153 ENUM 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));
157 
167 ENUM 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);
172 
177 void iox_ws_detach_subscriber_event(iox_ws_t const self,
178  iox_sub_t const subscriber,
179  const ENUM iox_SubscriberEvent subscriberEvent);
180 
185 void iox_ws_detach_subscriber_state(iox_ws_t const self,
186  iox_sub_t const subscriber,
187  const ENUM iox_SubscriberState subscriberState);
188 
192 void iox_ws_detach_user_trigger_event(iox_ws_t const self, iox_user_trigger_t const userTrigger);
193 
202 ENUM 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));
207 
217 ENUM 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);
223 
232 ENUM 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));
237 
247 ENUM 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);
253 
258 void iox_ws_detach_client_event(iox_ws_t const self, iox_client_t const client, const ENUM iox_ClientEvent clientEvent);
259 
264 void iox_ws_detach_client_state(iox_ws_t const self, iox_client_t const client, const ENUM iox_ClientState clientState);
265 
274 ENUM 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));
279 
289 ENUM 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);
295 
304 ENUM 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));
309 
319 ENUM 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);
325 
330 void iox_ws_detach_server_event(iox_ws_t const self, iox_server_t const server, const ENUM iox_ServerEvent serverEvent);
331 
336 void iox_ws_detach_server_state(iox_ws_t const self, iox_server_t const server, const ENUM iox_ServerState serverState);
337 
346 ENUM 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));
351 
361 ENUM iox_WaitSetResult
362 iox_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);
368 
373 void iox_ws_detach_service_discovery_event(iox_ws_t const self,
374  iox_service_discovery_t const serviceDiscovery,
375  const ENUM iox_ServiceDiscoveryEvent serviceDiscoveryEvent);
376 
377 #endif
Definition: types.h:35