xref: /openbmc/sdbusplus/include/sdbusplus/sdbus.hpp (revision 242677a2b3dafdb3b79464eb64e0ae8bc7c5a7d5)
1 #pragma once
2 
3 #include <systemd/sd-bus.h>
4 
5 #include <chrono>
6 
7 // ABC for sdbus implementation.
8 namespace sdbusplus
9 {
10 
11 // Defined by systemd taking uint64_t usec params
12 using SdBusDuration =
13     std::chrono::duration<uint64_t, std::chrono::microseconds::period>;
14 
15 // A wrapper for interfacing or testing sd-bus.  This will hold methods for
16 // buses, messages, etc.
17 class SdBusInterface
18 {
19   public:
20     virtual ~SdBusInterface() = default;
21 
22     virtual int sd_bus_add_object_manager(sd_bus* bus, sd_bus_slot** slot,
23                                           const char* path) = 0;
24 
25     virtual int sd_bus_add_object_vtable(
26         sd_bus* bus, sd_bus_slot** slot, const char* path,
27         const char* interface, const sd_bus_vtable* vtable, void* userdata) = 0;
28 
29     virtual int sd_bus_add_match(
30         sd_bus* bus, sd_bus_slot** slot, const char* path,
31         sd_bus_message_handler_t callback, void* userdata) = 0;
32 
33     virtual int sd_bus_attach_event(sd_bus* bus, sd_event* e, int priority) = 0;
34 
35     virtual int sd_bus_call(sd_bus* bus, sd_bus_message* m, uint64_t usec,
36                             sd_bus_error* ret_error,
37                             sd_bus_message** reply) = 0;
38 
39     virtual int sd_bus_call_async(
40         sd_bus* bus, sd_bus_slot** slot, sd_bus_message* m,
41         sd_bus_message_handler_t callback, void* userdata, uint64_t usec) = 0;
42 
43     virtual int sd_bus_detach_event(sd_bus* bus) = 0;
44 
45     virtual int sd_bus_emit_interfaces_added_strv(sd_bus* bus, const char* path,
46                                                   char** interfaces) = 0;
47     virtual int sd_bus_emit_interfaces_removed_strv(
48         sd_bus* bus, const char* path, char** interfaces) = 0;
49     virtual int sd_bus_emit_object_added(sd_bus* bus, const char* path) = 0;
50     virtual int sd_bus_emit_object_removed(sd_bus* bus, const char* path) = 0;
51     virtual int sd_bus_emit_properties_changed_strv(
52         sd_bus* bus, const char* path, const char* interface,
53         const char** names) = 0;
54 
55     virtual int sd_bus_error_set(sd_bus_error* e, const char* name,
56                                  const char* message) = 0;
57     virtual int sd_bus_error_set_const(sd_bus_error* e, const char* name,
58                                        const char* message) = 0;
59     virtual int sd_bus_error_get_errno(const sd_bus_error* e) = 0;
60     virtual int sd_bus_error_set_errno(sd_bus_error* e, int error) = 0;
61     virtual int sd_bus_error_is_set(const sd_bus_error* e) = 0;
62     virtual void sd_bus_error_free(sd_bus_error* e) = 0;
63 
64     virtual sd_event* sd_bus_get_event(sd_bus* bus) = 0;
65     virtual int sd_bus_get_fd(sd_bus* bus) = 0;
66     virtual int sd_bus_get_events(sd_bus* bus) = 0;
67     virtual int sd_bus_get_timeout(sd_bus* bus, uint64_t* timeout_usec) = 0;
68     virtual int sd_bus_get_unique_name(sd_bus* bus, const char** unique) = 0;
69 
70     virtual int sd_bus_list_names(sd_bus* bus, char*** acquired,
71                                   char*** activatable) = 0;
72 
73     // https://github.com/systemd/systemd/blob/master/src/systemd/sd-bus.h
74     virtual int sd_bus_message_append_basic(sd_bus_message* message, char type,
75                                             const void* value) = 0;
76 
77     virtual int sd_bus_message_append_string_iovec(
78         sd_bus_message* message, const struct iovec* iov, int iovcnt) = 0;
79 
80     virtual int sd_bus_message_at_end(sd_bus_message* m, int complete) = 0;
81 
82     virtual int sd_bus_message_close_container(sd_bus_message* m) = 0;
83 
84     virtual int sd_bus_message_enter_container(sd_bus_message* m, char type,
85                                                const char* contents) = 0;
86 
87     virtual int sd_bus_message_exit_container(sd_bus_message* m) = 0;
88 
89     virtual sd_bus* sd_bus_message_get_bus(sd_bus_message* m) = 0;
90     virtual int sd_bus_message_get_type(sd_bus_message* m, uint8_t* type) = 0;
91     virtual int sd_bus_message_get_cookie(sd_bus_message* m,
92                                           uint64_t* cookie) = 0;
93     virtual int sd_bus_message_get_reply_cookie(sd_bus_message* m,
94                                                 uint64_t* cookie) = 0;
95     virtual const char* sd_bus_message_get_destination(sd_bus_message* m) = 0;
96     virtual const char* sd_bus_message_get_interface(sd_bus_message* m) = 0;
97     virtual const char* sd_bus_message_get_member(sd_bus_message* m) = 0;
98     virtual const char* sd_bus_message_get_path(sd_bus_message* m) = 0;
99     virtual const char* sd_bus_message_get_sender(sd_bus_message* m) = 0;
100     virtual const char* sd_bus_message_get_signature(sd_bus_message* m,
101                                                      int complete) = 0;
102     virtual int sd_bus_message_get_errno(sd_bus_message* m) = 0;
103     virtual const sd_bus_error* sd_bus_message_get_error(sd_bus_message* m) = 0;
104 
105     virtual int sd_bus_message_is_method_call(
106         sd_bus_message* m, const char* interface, const char* member) = 0;
107     virtual int sd_bus_message_is_method_error(sd_bus_message* m,
108                                                const char* name) = 0;
109     virtual int sd_bus_message_is_signal(
110         sd_bus_message* m, const char* interface, const char* member) = 0;
111 
112     virtual int sd_bus_message_new_method_call(
113         sd_bus* bus, sd_bus_message** m, const char* destination,
114         const char* path, const char* interface, const char* member) = 0;
115 
116     virtual int sd_bus_message_new_method_return(sd_bus_message* call,
117                                                  sd_bus_message** m) = 0;
118 
119     virtual int sd_bus_message_new_method_error(
120         sd_bus_message* call, sd_bus_message** m, sd_bus_error* e) = 0;
121 
122     virtual int sd_bus_message_new_method_errno(sd_bus_message* call,
123                                                 sd_bus_message** m, int error,
124                                                 const sd_bus_error* p) = 0;
125 
126     virtual int sd_bus_message_new_signal(
127         sd_bus* bus, sd_bus_message** m, const char* path,
128         const char* interface, const char* member) = 0;
129 
130     virtual int sd_bus_message_open_container(sd_bus_message* m, char type,
131                                               const char* contents) = 0;
132 
133     virtual int sd_bus_message_read_basic(sd_bus_message* m, char type,
134                                           void* p) = 0;
135 
136     virtual sd_bus_message* sd_bus_message_ref(sd_bus_message* m) = 0;
137 
138     virtual int sd_bus_message_skip(sd_bus_message* m, const char* types) = 0;
139 
140     virtual int sd_bus_message_verify_type(sd_bus_message* m, char type,
141                                            const char* contents) = 0;
142 
143     virtual int sd_bus_slot_set_destroy_callback(sd_bus_slot* slot,
144                                                  sd_bus_destroy_t callback) = 0;
145 
146     virtual void* sd_bus_slot_set_userdata(sd_bus_slot* slot,
147                                            void* userdata) = 0;
148 
149     virtual int sd_bus_process(sd_bus* bus, sd_bus_message** r) = 0;
150 
151     virtual sd_bus* sd_bus_ref(sd_bus* bus) = 0;
152 
153     virtual int sd_bus_request_name(sd_bus* bus, const char* name,
154                                     uint64_t flags) = 0;
155 
156     virtual int sd_bus_send(sd_bus* bus, sd_bus_message* m,
157                             uint64_t* cookie) = 0;
158 
159     virtual sd_bus* sd_bus_unref(sd_bus* bus) = 0;
160     virtual sd_bus_slot* sd_bus_slot_unref(sd_bus_slot* slot) = 0;
161     virtual sd_bus* sd_bus_flush_close_unref(sd_bus* bus) = 0;
162 
163     virtual int sd_bus_flush(sd_bus* bus) = 0;
164     virtual void sd_bus_close(sd_bus* bus) = 0;
165     virtual int sd_bus_is_open(sd_bus* bus) = 0;
166 
167     virtual int sd_bus_wait(sd_bus* bus, uint64_t timeout_usec) = 0;
168 
169     virtual int sd_bus_message_append_array(sd_bus_message* m, char type,
170                                             const void* ptr, size_t size) = 0;
171     virtual int sd_bus_message_read_array(sd_bus_message* m, char type,
172                                           const void** ptr, size_t* size) = 0;
173 };
174 
175 class SdBusImpl : public SdBusInterface
176 {
177   public:
178     SdBusImpl() = default;
179     ~SdBusImpl() override = default;
180     SdBusImpl(const SdBusImpl&) = default;
181     SdBusImpl& operator=(const SdBusImpl&) = default;
182     SdBusImpl(SdBusImpl&&) = default;
183     SdBusImpl& operator=(SdBusImpl&&) = default;
184 
sd_bus_add_object_manager(sd_bus * bus,sd_bus_slot ** slot,const char * path)185     int sd_bus_add_object_manager(sd_bus* bus, sd_bus_slot** slot,
186                                   const char* path) override
187     {
188         return ::sd_bus_add_object_manager(bus, slot, path);
189     }
190 
sd_bus_add_object_vtable(sd_bus * bus,sd_bus_slot ** slot,const char * path,const char * interface,const sd_bus_vtable * vtable,void * userdata)191     int sd_bus_add_object_vtable(sd_bus* bus, sd_bus_slot** slot,
192                                  const char* path, const char* interface,
193                                  const sd_bus_vtable* vtable,
194                                  void* userdata) override
195     {
196         return ::sd_bus_add_object_vtable(bus, slot, path, interface, vtable,
197                                           userdata);
198     }
199 
sd_bus_add_match(sd_bus * bus,sd_bus_slot ** slot,const char * path,sd_bus_message_handler_t callback,void * userdata)200     int sd_bus_add_match(sd_bus* bus, sd_bus_slot** slot, const char* path,
201                          sd_bus_message_handler_t callback,
202                          void* userdata) override
203     {
204         return ::sd_bus_add_match(bus, slot, path, callback, userdata);
205     }
206 
sd_bus_attach_event(sd_bus * bus,sd_event * e,int priority)207     int sd_bus_attach_event(sd_bus* bus, sd_event* e, int priority) override
208     {
209         return ::sd_bus_attach_event(bus, e, priority);
210     }
211 
sd_bus_call(sd_bus * bus,sd_bus_message * m,uint64_t usec,sd_bus_error * ret_error,sd_bus_message ** reply)212     int sd_bus_call(sd_bus* bus, sd_bus_message* m, uint64_t usec,
213                     sd_bus_error* ret_error, sd_bus_message** reply) override
214     {
215         return ::sd_bus_call(bus, m, usec, ret_error, reply);
216     }
217 
sd_bus_call_async(sd_bus * bus,sd_bus_slot ** slot,sd_bus_message * m,sd_bus_message_handler_t callback,void * userdata,uint64_t usec)218     int sd_bus_call_async(sd_bus* bus, sd_bus_slot** slot, sd_bus_message* m,
219                           sd_bus_message_handler_t callback, void* userdata,
220                           uint64_t usec) override
221     {
222         return ::sd_bus_call_async(bus, slot, m, callback, userdata, usec);
223     }
224 
sd_bus_detach_event(sd_bus * bus)225     int sd_bus_detach_event(sd_bus* bus) override
226     {
227         return ::sd_bus_detach_event(bus);
228     }
229 
sd_bus_emit_interfaces_added_strv(sd_bus * bus,const char * path,char ** interfaces)230     int sd_bus_emit_interfaces_added_strv(sd_bus* bus, const char* path,
231                                           char** interfaces) override
232     {
233         return ::sd_bus_emit_interfaces_added_strv(bus, path, interfaces);
234     }
235 
sd_bus_emit_interfaces_removed_strv(sd_bus * bus,const char * path,char ** interfaces)236     int sd_bus_emit_interfaces_removed_strv(sd_bus* bus, const char* path,
237                                             char** interfaces) override
238     {
239         return ::sd_bus_emit_interfaces_removed_strv(bus, path, interfaces);
240     }
241 
sd_bus_emit_object_added(sd_bus * bus,const char * path)242     int sd_bus_emit_object_added(sd_bus* bus, const char* path) override
243     {
244         return ::sd_bus_emit_object_added(bus, path);
245     }
246 
sd_bus_emit_object_removed(sd_bus * bus,const char * path)247     int sd_bus_emit_object_removed(sd_bus* bus, const char* path) override
248     {
249         return ::sd_bus_emit_object_removed(bus, path);
250     }
251 
sd_bus_emit_properties_changed_strv(sd_bus * bus,const char * path,const char * interface,const char ** names)252     int sd_bus_emit_properties_changed_strv(sd_bus* bus, const char* path,
253                                             const char* interface,
254                                             const char** names) override
255     {
256         return ::sd_bus_emit_properties_changed_strv(bus, path, interface,
257                                                      const_cast<char**>(names));
258         // The const_cast above may seem unsafe, but it safe.  sd_bus's manpage
259         // shows a 'const char*' but the header does not.  I examined the code
260         // and no modification of the strings is done.  I tried to change sdbus
261         // directly but due to quirks of C you cannot implicitly convert a
262         // 'char **' to a 'const char**', so changing the implementation causes
263         // lots of compile failures due to an incompatible API change.
264         //
265         // Performing a const_cast allows us to avoid a memory allocation of
266         // the contained strings in 'interface::property_changed'.
267     }
268 
sd_bus_error_set(sd_bus_error * e,const char * name,const char * message)269     int sd_bus_error_set(sd_bus_error* e, const char* name,
270                          const char* message) override
271     {
272         return ::sd_bus_error_set(e, name, message);
273     }
274 
sd_bus_error_set_const(sd_bus_error * e,const char * name,const char * message)275     int sd_bus_error_set_const(sd_bus_error* e, const char* name,
276                                const char* message) override
277     {
278         return ::sd_bus_error_set_const(e, name, message);
279     }
280 
sd_bus_error_get_errno(const sd_bus_error * e)281     int sd_bus_error_get_errno(const sd_bus_error* e) override
282     {
283         return ::sd_bus_error_get_errno(e);
284     }
285 
sd_bus_error_set_errno(sd_bus_error * e,int error)286     int sd_bus_error_set_errno(sd_bus_error* e, int error) override
287     {
288         return ::sd_bus_error_set_errno(e, error);
289     }
290 
sd_bus_error_is_set(const sd_bus_error * e)291     int sd_bus_error_is_set(const sd_bus_error* e) override
292     {
293         return ::sd_bus_error_is_set(e);
294     }
295 
sd_bus_error_free(sd_bus_error * e)296     void sd_bus_error_free(sd_bus_error* e) override
297     {
298         return ::sd_bus_error_free(e);
299     }
300 
sd_bus_get_event(sd_bus * bus)301     sd_event* sd_bus_get_event(sd_bus* bus) override
302     {
303         return ::sd_bus_get_event(bus);
304     }
305 
sd_bus_get_fd(sd_bus * bus)306     int sd_bus_get_fd(sd_bus* bus) override
307     {
308         return ::sd_bus_get_fd(bus);
309     }
310 
sd_bus_get_events(sd_bus * bus)311     int sd_bus_get_events(sd_bus* bus) override
312     {
313         return ::sd_bus_get_events(bus);
314     }
315 
sd_bus_get_timeout(sd_bus * bus,uint64_t * timeout_usec)316     int sd_bus_get_timeout(sd_bus* bus, uint64_t* timeout_usec) override
317     {
318         return ::sd_bus_get_timeout(bus, timeout_usec);
319     }
320 
sd_bus_get_unique_name(sd_bus * bus,const char ** unique)321     int sd_bus_get_unique_name(sd_bus* bus, const char** unique) override
322     {
323         return ::sd_bus_get_unique_name(bus, unique);
324     }
325 
sd_bus_list_names(sd_bus * bus,char *** acquired,char *** activatable)326     int sd_bus_list_names(sd_bus* bus, char*** acquired,
327                           char*** activatable) override
328     {
329         return ::sd_bus_list_names(bus, acquired, activatable);
330     }
331 
sd_bus_message_append_basic(sd_bus_message * message,char type,const void * value)332     int sd_bus_message_append_basic(sd_bus_message* message, char type,
333                                     const void* value) override
334     {
335         return ::sd_bus_message_append_basic(message, type, value);
336     }
337 
sd_bus_message_append_string_iovec(sd_bus_message * message,const struct iovec * iov,int iovcnt)338     int sd_bus_message_append_string_iovec(
339         sd_bus_message* message, const struct iovec* iov, int iovcnt) override
340     {
341         return ::sd_bus_message_append_string_iovec(message, iov, iovcnt);
342     }
343 
sd_bus_message_at_end(sd_bus_message * m,int complete)344     int sd_bus_message_at_end(sd_bus_message* m, int complete) override
345     {
346         return ::sd_bus_message_at_end(m, complete);
347     }
348 
sd_bus_message_close_container(sd_bus_message * m)349     int sd_bus_message_close_container(sd_bus_message* m) override
350     {
351         return ::sd_bus_message_close_container(m);
352     }
353 
sd_bus_message_enter_container(sd_bus_message * m,char type,const char * contents)354     int sd_bus_message_enter_container(sd_bus_message* m, char type,
355                                        const char* contents) override
356     {
357         return ::sd_bus_message_enter_container(m, type, contents);
358     }
359 
sd_bus_message_exit_container(sd_bus_message * m)360     int sd_bus_message_exit_container(sd_bus_message* m) override
361     {
362         return ::sd_bus_message_exit_container(m);
363     }
364 
sd_bus_message_get_bus(sd_bus_message * m)365     sd_bus* sd_bus_message_get_bus(sd_bus_message* m) override
366     {
367         return ::sd_bus_message_get_bus(m);
368     }
369 
sd_bus_message_get_type(sd_bus_message * m,uint8_t * type)370     int sd_bus_message_get_type(sd_bus_message* m, uint8_t* type) override
371     {
372         return ::sd_bus_message_get_type(m, type);
373     }
374 
sd_bus_message_get_cookie(sd_bus_message * m,uint64_t * cookie)375     int sd_bus_message_get_cookie(sd_bus_message* m, uint64_t* cookie) override
376     {
377         return ::sd_bus_message_get_cookie(m, cookie);
378     }
379 
sd_bus_message_get_reply_cookie(sd_bus_message * m,uint64_t * cookie)380     int sd_bus_message_get_reply_cookie(sd_bus_message* m,
381                                         uint64_t* cookie) override
382     {
383         return ::sd_bus_message_get_reply_cookie(m, cookie);
384     }
385 
sd_bus_message_get_destination(sd_bus_message * m)386     const char* sd_bus_message_get_destination(sd_bus_message* m) override
387     {
388         return ::sd_bus_message_get_destination(m);
389     }
390 
sd_bus_message_get_interface(sd_bus_message * m)391     const char* sd_bus_message_get_interface(sd_bus_message* m) override
392     {
393         return ::sd_bus_message_get_interface(m);
394     }
395 
sd_bus_message_get_member(sd_bus_message * m)396     const char* sd_bus_message_get_member(sd_bus_message* m) override
397     {
398         return ::sd_bus_message_get_member(m);
399     }
400 
sd_bus_message_get_path(sd_bus_message * m)401     const char* sd_bus_message_get_path(sd_bus_message* m) override
402     {
403         return ::sd_bus_message_get_path(m);
404     }
405 
sd_bus_message_get_sender(sd_bus_message * m)406     const char* sd_bus_message_get_sender(sd_bus_message* m) override
407     {
408         return ::sd_bus_message_get_sender(m);
409     }
410 
sd_bus_message_get_signature(sd_bus_message * m,int complete)411     const char* sd_bus_message_get_signature(sd_bus_message* m,
412                                              int complete) override
413     {
414         return ::sd_bus_message_get_signature(m, complete);
415     }
416 
sd_bus_message_get_errno(sd_bus_message * m)417     int sd_bus_message_get_errno(sd_bus_message* m) override
418     {
419         return ::sd_bus_message_get_errno(m);
420     }
421 
sd_bus_message_get_error(sd_bus_message * m)422     const sd_bus_error* sd_bus_message_get_error(sd_bus_message* m) override
423     {
424         return ::sd_bus_message_get_error(m);
425     }
426 
sd_bus_message_is_method_call(sd_bus_message * m,const char * interface,const char * member)427     int sd_bus_message_is_method_call(sd_bus_message* m, const char* interface,
428                                       const char* member) override
429     {
430         return ::sd_bus_message_is_method_call(m, interface, member);
431     }
432 
sd_bus_message_is_method_error(sd_bus_message * m,const char * name)433     int sd_bus_message_is_method_error(sd_bus_message* m,
434                                        const char* name) override
435     {
436         return ::sd_bus_message_is_method_error(m, name);
437     }
438 
sd_bus_message_is_signal(sd_bus_message * m,const char * interface,const char * member)439     int sd_bus_message_is_signal(sd_bus_message* m, const char* interface,
440                                  const char* member) override
441     {
442         return ::sd_bus_message_is_signal(m, interface, member);
443     }
444 
sd_bus_message_new_method_call(sd_bus * bus,sd_bus_message ** m,const char * destination,const char * path,const char * interface,const char * member)445     int sd_bus_message_new_method_call(
446         sd_bus* bus, sd_bus_message** m, const char* destination,
447         const char* path, const char* interface, const char* member) override
448     {
449         return ::sd_bus_message_new_method_call(bus, m, destination, path,
450                                                 interface, member);
451     }
452 
sd_bus_message_new_method_return(sd_bus_message * call,sd_bus_message ** m)453     int sd_bus_message_new_method_return(sd_bus_message* call,
454                                          sd_bus_message** m) override
455     {
456         return ::sd_bus_message_new_method_return(call, m);
457     }
458 
sd_bus_message_new_method_error(sd_bus_message * call,sd_bus_message ** m,sd_bus_error * e)459     int sd_bus_message_new_method_error(
460         sd_bus_message* call, sd_bus_message** m, sd_bus_error* e) override
461     {
462         return ::sd_bus_message_new_method_error(call, m, e);
463     }
464 
sd_bus_message_new_method_errno(sd_bus_message * call,sd_bus_message ** m,int error,const sd_bus_error * p)465     int sd_bus_message_new_method_errno(sd_bus_message* call,
466                                         sd_bus_message** m, int error,
467                                         const sd_bus_error* p) override
468     {
469         return ::sd_bus_message_new_method_errno(call, m, error, p);
470     }
471 
sd_bus_message_new_signal(sd_bus * bus,sd_bus_message ** m,const char * path,const char * interface,const char * member)472     int sd_bus_message_new_signal(sd_bus* bus, sd_bus_message** m,
473                                   const char* path, const char* interface,
474                                   const char* member) override
475     {
476         return ::sd_bus_message_new_signal(bus, m, path, interface, member);
477     }
478 
sd_bus_message_open_container(sd_bus_message * m,char type,const char * contents)479     int sd_bus_message_open_container(sd_bus_message* m, char type,
480                                       const char* contents) override
481     {
482         return ::sd_bus_message_open_container(m, type, contents);
483     }
484 
sd_bus_message_read_basic(sd_bus_message * m,char type,void * p)485     int sd_bus_message_read_basic(sd_bus_message* m, char type,
486                                   void* p) override
487     {
488         return ::sd_bus_message_read_basic(m, type, p);
489     }
490 
sd_bus_message_ref(sd_bus_message * m)491     sd_bus_message* sd_bus_message_ref(sd_bus_message* m) override
492     {
493         return ::sd_bus_message_ref(m);
494     }
495 
sd_bus_message_skip(sd_bus_message * m,const char * types)496     int sd_bus_message_skip(sd_bus_message* m, const char* types) override
497     {
498         return ::sd_bus_message_skip(m, types);
499     }
500 
sd_bus_message_verify_type(sd_bus_message * m,char type,const char * contents)501     int sd_bus_message_verify_type(sd_bus_message* m, char type,
502                                    const char* contents) override
503     {
504         return ::sd_bus_message_verify_type(m, type, contents);
505     }
506 
sd_bus_slot_set_destroy_callback(sd_bus_slot * slot,sd_bus_destroy_t callback)507     int sd_bus_slot_set_destroy_callback(sd_bus_slot* slot,
508                                          sd_bus_destroy_t callback) override
509     {
510         return ::sd_bus_slot_set_destroy_callback(slot, callback);
511     }
512 
sd_bus_slot_set_userdata(sd_bus_slot * slot,void * userdata)513     void* sd_bus_slot_set_userdata(sd_bus_slot* slot, void* userdata) override
514     {
515         return ::sd_bus_slot_set_userdata(slot, userdata);
516     }
517 
sd_bus_process(sd_bus * bus,sd_bus_message ** r)518     int sd_bus_process(sd_bus* bus, sd_bus_message** r) override
519     {
520         return ::sd_bus_process(bus, r);
521     }
522 
sd_bus_ref(sd_bus * bus)523     sd_bus* sd_bus_ref(sd_bus* bus) override
524     {
525         return ::sd_bus_ref(bus);
526     }
527 
sd_bus_request_name(sd_bus * bus,const char * name,uint64_t flags)528     int sd_bus_request_name(sd_bus* bus, const char* name,
529                             uint64_t flags) override
530     {
531         return ::sd_bus_request_name(bus, name, flags);
532     }
533 
sd_bus_send(sd_bus * bus,sd_bus_message * m,uint64_t * cookie)534     int sd_bus_send(sd_bus* bus, sd_bus_message* m, uint64_t* cookie) override
535     {
536         return ::sd_bus_send(bus, m, cookie);
537     }
538 
sd_bus_unref(sd_bus * bus)539     sd_bus* sd_bus_unref(sd_bus* bus) override
540     {
541         return ::sd_bus_unref(bus);
542     }
543 
sd_bus_slot_unref(sd_bus_slot * slot)544     sd_bus_slot* sd_bus_slot_unref(sd_bus_slot* slot) override
545     {
546         return ::sd_bus_slot_unref(slot);
547     }
548 
sd_bus_flush_close_unref(sd_bus * bus)549     sd_bus* sd_bus_flush_close_unref(sd_bus* bus) override
550     {
551         return ::sd_bus_flush_close_unref(bus);
552     }
553 
sd_bus_flush(sd_bus * bus)554     int sd_bus_flush(sd_bus* bus) override
555     {
556         return ::sd_bus_flush(bus);
557     }
558 
sd_bus_close(sd_bus * bus)559     void sd_bus_close(sd_bus* bus) override
560     {
561         ::sd_bus_close(bus);
562     }
563 
sd_bus_is_open(sd_bus * bus)564     int sd_bus_is_open(sd_bus* bus) override
565     {
566         return ::sd_bus_is_open(bus);
567     }
568 
sd_bus_wait(sd_bus * bus,uint64_t timeout_usec)569     int sd_bus_wait(sd_bus* bus, uint64_t timeout_usec) override
570     {
571         return ::sd_bus_wait(bus, timeout_usec);
572     }
573 
sd_bus_message_append_array(sd_bus_message * m,char type,const void * ptr,size_t size)574     int sd_bus_message_append_array(sd_bus_message* m, char type,
575                                     const void* ptr, size_t size) override
576     {
577         return ::sd_bus_message_append_array(m, type, ptr, size);
578     }
579 
sd_bus_message_read_array(sd_bus_message * m,char type,const void ** ptr,size_t * size)580     int sd_bus_message_read_array(sd_bus_message* m, char type,
581                                   const void** ptr, size_t* size) override
582     {
583         return ::sd_bus_message_read_array(m, type, ptr, size);
584     }
585 };
586 
587 extern SdBusImpl sdbus_impl;
588 
589 } // namespace sdbusplus
590