iceoryx_binding_c 2.0.3
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
33typedef CLASS cpp2c_WaitSet* iox_ws_t;
34
38iox_ws_t iox_ws_init(iox_ws_storage_t* self);
39
42void iox_ws_deinit(iox_ws_t const self);
43
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);
58
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);
71
73uint64_t iox_ws_size(iox_ws_t const self);
74
76uint64_t iox_ws_capacity(iox_ws_t const self);
77
82void iox_ws_mark_for_destruction(iox_ws_t const self);
83
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,
95 const uint64_t id,
96 void (*callback)(iox_sub_t));
97
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,
111 const uint64_t id,
112 void (*callback)(iox_sub_t, void*),
113 void* const contextData);
114
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));
128
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);
145
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));
157
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);
172
177void iox_ws_detach_subscriber_event(iox_ws_t const self,
178 iox_sub_t const subscriber,
179 const ENUM iox_SubscriberEvent subscriberEvent);
180
185void iox_ws_detach_subscriber_state(iox_ws_t const self,
186 iox_sub_t const subscriber,
187 const ENUM iox_SubscriberState subscriberState);
188
192void iox_ws_detach_user_trigger_event(iox_ws_t const self, iox_user_trigger_t const userTrigger);
193
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));
207
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);
223
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));
237
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);
253
258void iox_ws_detach_client_event(iox_ws_t const self, iox_client_t const client, const ENUM iox_ClientEvent clientEvent);
259
264void iox_ws_detach_client_state(iox_ws_t const self, iox_client_t const client, const ENUM iox_ClientState clientState);
265
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));
279
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);
295
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));
309
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);
325
330void iox_ws_detach_server_event(iox_ws_t const self, iox_server_t const server, const ENUM iox_ServerEvent serverEvent);
331
336void iox_ws_detach_server_state(iox_ws_t const self, iox_server_t const server, const ENUM iox_ServerState serverState);
337
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));
351
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);
368
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);
376
377#endif
Definition: types.h:35