blob: 783bd214242a4ba0390e619da44386c6736a6ace [file] [log] [blame]
Patrick Venturedba73d72018-04-12 14:14:42 -07001#pragma once
2
3#include <systemd/sd-bus.h>
4
William A. Kennington IIIb5a84462019-03-06 16:46:57 -08005#include <chrono>
6
Patrick Venturedba73d72018-04-12 14:14:42 -07007// ABC for sdbus implementation.
8namespace sdbusplus
9{
10
William A. Kennington IIIb5a84462019-03-06 16:46:57 -080011// Defined by systemd taking uint64_t usec params
12using SdBusDuration =
13 std::chrono::duration<uint64_t, std::chrono::microseconds::period>;
14
Patrick Venturedba73d72018-04-12 14:14:42 -070015// A wrapper for interfacing or testing sd-bus. This will hold methods for
16// buses, messages, etc.
17class SdBusInterface
18{
19 public:
20 virtual ~SdBusInterface() = default;
21
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070022 virtual int sd_bus_add_object_manager(sd_bus* bus, sd_bus_slot** slot,
23 const char* path) = 0;
Patrick Venture248c9902018-04-10 17:53:43 -070024
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070025 virtual int sd_bus_add_object_vtable(sd_bus* bus, sd_bus_slot** slot,
26 const char* path,
27 const char* interface,
28 const sd_bus_vtable* vtable,
29 void* userdata) = 0;
Patrick Venture540946e2018-04-16 13:17:51 -070030
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070031 virtual int sd_bus_attach_event(sd_bus* bus, sd_event* e, int priority) = 0;
Patrick Venturedba73d72018-04-12 14:14:42 -070032
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070033 virtual int sd_bus_call(sd_bus* bus, sd_bus_message* m, uint64_t usec,
34 sd_bus_error* ret_error,
35 sd_bus_message** reply) = 0;
Patrick Ventureff095682018-04-13 20:54:32 -070036
William A. Kennington III472b7022021-04-15 13:13:14 -070037 virtual int sd_bus_call_async(sd_bus* bus, sd_bus_slot** slot,
38 sd_bus_message* m,
39 sd_bus_message_handler_t callback,
40 void* userdata, uint64_t usec) = 0;
41
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070042 virtual int sd_bus_detach_event(sd_bus* bus) = 0;
Patrick Ventureff095682018-04-13 20:54:32 -070043
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070044 virtual int sd_bus_emit_interfaces_added_strv(sd_bus* bus, const char* path,
45 char** interfaces) = 0;
46 virtual int sd_bus_emit_interfaces_removed_strv(sd_bus* bus,
47 const char* path,
48 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(sd_bus* bus,
52 const char* path,
53 const char* interface,
Patrick Williamse6594362020-10-10 09:41:24 -050054 const char** names) = 0;
Patrick Ventureff095682018-04-13 20:54:32 -070055
William A. Kennington III65654542018-10-11 15:17:31 -070056 virtual int sd_bus_error_set(sd_bus_error* e, const char* name,
57 const char* message) = 0;
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070058 virtual int sd_bus_error_set_const(sd_bus_error* e, const char* name,
59 const char* message) = 0;
60 virtual int sd_bus_error_get_errno(const sd_bus_error* e) = 0;
61 virtual int sd_bus_error_set_errno(sd_bus_error* e, int error) = 0;
62 virtual int sd_bus_error_is_set(const sd_bus_error* e) = 0;
63 virtual void sd_bus_error_free(sd_bus_error* e) = 0;
Patrick Venture263712f2018-04-16 14:19:08 -070064
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070065 virtual sd_event* sd_bus_get_event(sd_bus* bus) = 0;
66 virtual int sd_bus_get_fd(sd_bus* bus) = 0;
67 virtual int sd_bus_get_unique_name(sd_bus* bus, const char** unique) = 0;
Patrick Ventureff095682018-04-13 20:54:32 -070068
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070069 virtual int sd_bus_list_names(sd_bus* bus, char*** acquired,
70 char*** activatable) = 0;
Patrick Ventureff095682018-04-13 20:54:32 -070071
72 // https://github.com/systemd/systemd/blob/master/src/systemd/sd-bus.h
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070073 virtual int sd_bus_message_append_basic(sd_bus_message* message, char type,
74 const void* value) = 0;
Patrick Venturedba73d72018-04-12 14:14:42 -070075
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070076 virtual int sd_bus_message_at_end(sd_bus_message* m, int complete) = 0;
Patrick Venturedba73d72018-04-12 14:14:42 -070077
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070078 virtual int sd_bus_message_close_container(sd_bus_message* m) = 0;
Patrick Venturedba73d72018-04-12 14:14:42 -070079
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070080 virtual int sd_bus_message_enter_container(sd_bus_message* m, char type,
81 const char* contents) = 0;
Patrick Venturedba73d72018-04-12 14:14:42 -070082
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070083 virtual int sd_bus_message_exit_container(sd_bus_message* m) = 0;
Patrick Venturedba73d72018-04-12 14:14:42 -070084
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070085 virtual sd_bus* sd_bus_message_get_bus(sd_bus_message* m) = 0;
William A. Kennington III8e8d1a62018-10-14 23:24:25 -070086 virtual int sd_bus_message_get_type(sd_bus_message* m, uint8_t* type) = 0;
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070087 virtual int sd_bus_message_get_cookie(sd_bus_message* m,
88 uint64_t* cookie) = 0;
William A. Kennington III209dfc62018-10-14 23:26:18 -070089 virtual int sd_bus_message_get_reply_cookie(sd_bus_message* m,
90 uint64_t* cookie) = 0;
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070091 virtual const char* sd_bus_message_get_destination(sd_bus_message* m) = 0;
92 virtual const char* sd_bus_message_get_interface(sd_bus_message* m) = 0;
93 virtual const char* sd_bus_message_get_member(sd_bus_message* m) = 0;
94 virtual const char* sd_bus_message_get_path(sd_bus_message* m) = 0;
95 virtual const char* sd_bus_message_get_sender(sd_bus_message* m) = 0;
96 virtual const char* sd_bus_message_get_signature(sd_bus_message* m,
Patrick Venturedba73d72018-04-12 14:14:42 -070097 int complete) = 0;
William A. Kennington IIIe0d69652018-08-31 13:09:47 -070098 virtual int sd_bus_message_get_errno(sd_bus_message* m) = 0;
Lei YUc08cf522019-06-10 14:55:17 +080099 virtual const sd_bus_error* sd_bus_message_get_error(sd_bus_message* m) = 0;
Patrick Venturedba73d72018-04-12 14:14:42 -0700100
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700101 virtual int sd_bus_message_is_method_call(sd_bus_message* m,
102 const char* interface,
103 const char* member) = 0;
104 virtual int sd_bus_message_is_method_error(sd_bus_message* m,
105 const char* name) = 0;
106 virtual int sd_bus_message_is_signal(sd_bus_message* m,
107 const char* interface,
108 const char* member) = 0;
Patrick Venturedba73d72018-04-12 14:14:42 -0700109
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700110 virtual int sd_bus_message_new_method_call(sd_bus* bus, sd_bus_message** m,
111 const char* destination,
112 const char* path,
113 const char* interface,
114 const char* member) = 0;
Patrick Ventureff095682018-04-13 20:54:32 -0700115
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700116 virtual int sd_bus_message_new_method_return(sd_bus_message* call,
117 sd_bus_message** m) = 0;
Patrick Venturedba73d72018-04-12 14:14:42 -0700118
William A. Kennington IIIf534ba02020-06-25 00:20:55 -0700119 virtual int sd_bus_message_new_method_error(sd_bus_message* call,
120 sd_bus_message** m,
121 const char* name,
122 const char* description) = 0;
123
Vernon Mauery2b74e522018-10-02 14:55:39 -0700124 virtual int sd_bus_message_new_method_errno(sd_bus_message* call,
125 sd_bus_message** m, int error,
126 const sd_bus_error* p) = 0;
127
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700128 virtual int sd_bus_message_new_signal(sd_bus* bus, sd_bus_message** m,
129 const char* path,
130 const char* interface,
131 const char* member) = 0;
Patrick Ventureff095682018-04-13 20:54:32 -0700132
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700133 virtual int sd_bus_message_open_container(sd_bus_message* m, char type,
134 const char* contents) = 0;
Patrick Ventureff095682018-04-13 20:54:32 -0700135
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700136 virtual int sd_bus_message_read_basic(sd_bus_message* m, char type,
137 void* p) = 0;
Patrick Venturedba73d72018-04-12 14:14:42 -0700138
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700139 virtual sd_bus_message* sd_bus_message_ref(sd_bus_message* m) = 0;
Patrick Ventureff095682018-04-13 20:54:32 -0700140
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700141 virtual int sd_bus_message_skip(sd_bus_message* m, const char* types) = 0;
Patrick Venturedba73d72018-04-12 14:14:42 -0700142
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700143 virtual int sd_bus_message_verify_type(sd_bus_message* m, char type,
144 const char* contents) = 0;
Patrick Venturedba73d72018-04-12 14:14:42 -0700145
William A. Kennington III472b7022021-04-15 13:13:14 -0700146 virtual int sd_bus_slot_set_destroy_callback(sd_bus_slot* slot,
147 sd_bus_destroy_t callback) = 0;
148
149 virtual void* sd_bus_slot_set_userdata(sd_bus_slot* slot,
150 void* userdata) = 0;
151
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700152 virtual int sd_bus_process(sd_bus* bus, sd_bus_message** r) = 0;
Patrick Ventureff095682018-04-13 20:54:32 -0700153
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700154 virtual sd_bus* sd_bus_ref(sd_bus* bus) = 0;
Patrick Ventureff095682018-04-13 20:54:32 -0700155
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700156 virtual int sd_bus_request_name(sd_bus* bus, const char* name,
Patrick Ventureff095682018-04-13 20:54:32 -0700157 uint64_t flags) = 0;
158
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700159 virtual int sd_bus_send(sd_bus* bus, sd_bus_message* m,
160 uint64_t* cookie) = 0;
Patrick Venturedba73d72018-04-12 14:14:42 -0700161
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700162 virtual sd_bus* sd_bus_unref(sd_bus* bus) = 0;
Brad Bishopdfbff6f2018-12-05 19:46:20 -0500163 virtual sd_bus* sd_bus_flush_close_unref(sd_bus* bus) = 0;
Patrick Ventureff095682018-04-13 20:54:32 -0700164
William A. Kennington III42f6ad52018-12-19 17:32:30 -0800165 virtual int sd_bus_flush(sd_bus* bus) = 0;
166 virtual void sd_bus_close(sd_bus* bus) = 0;
167
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700168 virtual int sd_bus_wait(sd_bus* bus, uint64_t timeout_usec) = 0;
Patrick Venturedba73d72018-04-12 14:14:42 -0700169};
170
171class SdBusImpl : public SdBusInterface
172{
173 public:
174 SdBusImpl() = default;
175 ~SdBusImpl() = default;
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700176 SdBusImpl(const SdBusImpl&) = default;
177 SdBusImpl& operator=(const SdBusImpl&) = default;
178 SdBusImpl(SdBusImpl&&) = default;
179 SdBusImpl& operator=(SdBusImpl&&) = default;
Patrick Venturedba73d72018-04-12 14:14:42 -0700180
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700181 int sd_bus_add_object_manager(sd_bus* bus, sd_bus_slot** slot,
182 const char* path) override
Patrick Venture248c9902018-04-10 17:53:43 -0700183 {
184 return ::sd_bus_add_object_manager(bus, slot, path);
185 }
186
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700187 int sd_bus_add_object_vtable(sd_bus* bus, sd_bus_slot** slot,
188 const char* path, const char* interface,
189 const sd_bus_vtable* vtable,
190 void* userdata) override
Patrick Venture540946e2018-04-16 13:17:51 -0700191 {
192 return ::sd_bus_add_object_vtable(bus, slot, path, interface, vtable,
193 userdata);
194 }
195
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700196 int sd_bus_attach_event(sd_bus* bus, sd_event* e, int priority) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700197 {
Patrick Ventureff095682018-04-13 20:54:32 -0700198 return ::sd_bus_attach_event(bus, e, priority);
199 }
200
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700201 int sd_bus_call(sd_bus* bus, sd_bus_message* m, uint64_t usec,
202 sd_bus_error* ret_error, sd_bus_message** reply) override
Patrick Ventureff095682018-04-13 20:54:32 -0700203 {
204 return ::sd_bus_call(bus, m, usec, ret_error, reply);
205 }
206
William A. Kennington III472b7022021-04-15 13:13:14 -0700207 int sd_bus_call_async(sd_bus* bus, sd_bus_slot** slot, sd_bus_message* m,
208 sd_bus_message_handler_t callback, void* userdata,
209 uint64_t usec) override
210 {
211 return ::sd_bus_call_async(bus, slot, m, callback, userdata, usec);
212 }
213
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700214 int sd_bus_detach_event(sd_bus* bus) override
Patrick Ventureff095682018-04-13 20:54:32 -0700215 {
216 return ::sd_bus_detach_event(bus);
217 }
218
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700219 int sd_bus_emit_interfaces_added_strv(sd_bus* bus, const char* path,
220 char** interfaces) override
Patrick Ventureff095682018-04-13 20:54:32 -0700221 {
222 return ::sd_bus_emit_interfaces_added_strv(bus, path, interfaces);
223 }
224
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700225 int sd_bus_emit_interfaces_removed_strv(sd_bus* bus, const char* path,
226 char** interfaces) override
Patrick Ventureff095682018-04-13 20:54:32 -0700227 {
228 return ::sd_bus_emit_interfaces_removed_strv(bus, path, interfaces);
229 }
230
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700231 int sd_bus_emit_object_added(sd_bus* bus, const char* path) override
Patrick Ventureff095682018-04-13 20:54:32 -0700232 {
233 return ::sd_bus_emit_object_added(bus, path);
234 }
235
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700236 int sd_bus_emit_object_removed(sd_bus* bus, const char* path) override
Patrick Ventureff095682018-04-13 20:54:32 -0700237 {
238 return ::sd_bus_emit_object_removed(bus, path);
239 }
240
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700241 int sd_bus_emit_properties_changed_strv(sd_bus* bus, const char* path,
242 const char* interface,
Patrick Williamse6594362020-10-10 09:41:24 -0500243 const char** names) override
Patrick Venture540946e2018-04-16 13:17:51 -0700244 {
245 return ::sd_bus_emit_properties_changed_strv(bus, path, interface,
Patrick Williamse6594362020-10-10 09:41:24 -0500246 const_cast<char**>(names));
247 // The const_cast above may seem unsafe, but it safe. sd_bus's manpage
248 // shows a 'const char*' but the header does not. I examined the code
249 // and no modification of the strings is done. I tried to change sdbus
250 // directly but due to quirks of C you cannot implicitly convert a
251 // 'char **' to a 'const char**', so changing the implementation causes
252 // lots of compile failures due to an incompatible API change.
253 //
254 // Performing a const_cast allows us to avoid a memory allocation of
255 // the contained strings in 'interface::property_changed'.
Patrick Venture540946e2018-04-16 13:17:51 -0700256 }
257
William A. Kennington III65654542018-10-11 15:17:31 -0700258 int sd_bus_error_set(sd_bus_error* e, const char* name,
259 const char* message) override
260 {
261 return ::sd_bus_error_set(e, name, message);
262 }
263
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700264 int sd_bus_error_set_const(sd_bus_error* e, const char* name,
265 const char* message) override
Patrick Venture263712f2018-04-16 14:19:08 -0700266 {
267 return ::sd_bus_error_set_const(e, name, message);
268 }
269
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700270 int sd_bus_error_get_errno(const sd_bus_error* e) override
William A. Kennington III6e433902018-06-22 18:40:45 -0700271 {
272 return ::sd_bus_error_get_errno(e);
273 }
274
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700275 int sd_bus_error_set_errno(sd_bus_error* e, int error) override
William A. Kennington III6e433902018-06-22 18:40:45 -0700276 {
277 return ::sd_bus_error_set_errno(e, error);
278 }
279
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700280 int sd_bus_error_is_set(const sd_bus_error* e) override
William A. Kennington III6e433902018-06-22 18:40:45 -0700281 {
282 return ::sd_bus_error_is_set(e);
283 }
284
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700285 void sd_bus_error_free(sd_bus_error* e) override
William A. Kennington III6e433902018-06-22 18:40:45 -0700286 {
287 return ::sd_bus_error_free(e);
288 }
289
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700290 sd_event* sd_bus_get_event(sd_bus* bus) override
Patrick Ventureff095682018-04-13 20:54:32 -0700291 {
292 return ::sd_bus_get_event(bus);
293 }
294
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700295 int sd_bus_get_fd(sd_bus* bus) override
William A. Kennington IIIcb582e02018-06-28 18:01:01 -0700296 {
297 return ::sd_bus_get_fd(bus);
298 }
299
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700300 int sd_bus_get_unique_name(sd_bus* bus, const char** unique) override
Patrick Ventureff095682018-04-13 20:54:32 -0700301 {
302 return ::sd_bus_get_unique_name(bus, unique);
303 }
304
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700305 int sd_bus_list_names(sd_bus* bus, char*** acquired,
306 char*** activatable) override
Patrick Ventureff095682018-04-13 20:54:32 -0700307 {
308 return ::sd_bus_list_names(bus, acquired, activatable);
Patrick Venturedba73d72018-04-12 14:14:42 -0700309 }
310
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700311 int sd_bus_message_append_basic(sd_bus_message* message, char type,
312 const void* value) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700313 {
314 return ::sd_bus_message_append_basic(message, type, value);
315 }
316
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700317 int sd_bus_message_at_end(sd_bus_message* m, int complete) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700318 {
319 return ::sd_bus_message_at_end(m, complete);
320 }
321
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700322 int sd_bus_message_close_container(sd_bus_message* m) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700323 {
324 return ::sd_bus_message_close_container(m);
325 }
326
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700327 int sd_bus_message_enter_container(sd_bus_message* m, char type,
328 const char* contents) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700329 {
330 return ::sd_bus_message_enter_container(m, type, contents);
331 }
332
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700333 int sd_bus_message_exit_container(sd_bus_message* m) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700334 {
335 return ::sd_bus_message_exit_container(m);
336 }
337
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700338 sd_bus* sd_bus_message_get_bus(sd_bus_message* m) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700339 {
340 return ::sd_bus_message_get_bus(m);
341 }
342
William A. Kennington III8e8d1a62018-10-14 23:24:25 -0700343 int sd_bus_message_get_type(sd_bus_message* m, uint8_t* type) override
344 {
345 return ::sd_bus_message_get_type(m, type);
346 }
347
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700348 int sd_bus_message_get_cookie(sd_bus_message* m, uint64_t* cookie) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700349 {
350 return ::sd_bus_message_get_cookie(m, cookie);
351 }
352
William A. Kennington III209dfc62018-10-14 23:26:18 -0700353 int sd_bus_message_get_reply_cookie(sd_bus_message* m,
354 uint64_t* cookie) override
355 {
356 return ::sd_bus_message_get_reply_cookie(m, cookie);
357 }
358
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700359 const char* sd_bus_message_get_destination(sd_bus_message* m) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700360 {
361 return ::sd_bus_message_get_destination(m);
362 }
363
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700364 const char* sd_bus_message_get_interface(sd_bus_message* m) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700365 {
366 return ::sd_bus_message_get_interface(m);
367 }
368
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700369 const char* sd_bus_message_get_member(sd_bus_message* m) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700370 {
371 return ::sd_bus_message_get_member(m);
372 }
373
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700374 const char* sd_bus_message_get_path(sd_bus_message* m) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700375 {
376 return ::sd_bus_message_get_path(m);
377 }
378
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700379 const char* sd_bus_message_get_sender(sd_bus_message* m) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700380 {
381 return ::sd_bus_message_get_sender(m);
382 }
383
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700384 const char* sd_bus_message_get_signature(sd_bus_message* m,
Patrick Venturedba73d72018-04-12 14:14:42 -0700385 int complete) override
386 {
387 return ::sd_bus_message_get_signature(m, complete);
388 }
389
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700390 int sd_bus_message_get_errno(sd_bus_message* m) override
William A. Kennington IIIcb582e02018-06-28 18:01:01 -0700391 {
392 return ::sd_bus_message_get_errno(m);
393 }
394
Lei YUc08cf522019-06-10 14:55:17 +0800395 const sd_bus_error* sd_bus_message_get_error(sd_bus_message* m) override
396 {
397 return ::sd_bus_message_get_error(m);
398 }
399
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700400 int sd_bus_message_is_method_call(sd_bus_message* m, const char* interface,
401 const char* member) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700402 {
403 return ::sd_bus_message_is_method_call(m, interface, member);
404 }
405
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700406 int sd_bus_message_is_method_error(sd_bus_message* m,
407 const char* name) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700408 {
409 return ::sd_bus_message_is_method_error(m, name);
410 }
411
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700412 int sd_bus_message_is_signal(sd_bus_message* m, const char* interface,
413 const char* member) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700414 {
415 return ::sd_bus_message_is_signal(m, interface, member);
416 }
417
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700418 int sd_bus_message_new_method_call(sd_bus* bus, sd_bus_message** m,
419 const char* destination,
420 const char* path, const char* interface,
421 const char* member) override
Patrick Ventureff095682018-04-13 20:54:32 -0700422 {
423 return ::sd_bus_message_new_method_call(bus, m, destination, path,
424 interface, member);
425 }
426
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700427 int sd_bus_message_new_method_return(sd_bus_message* call,
428 sd_bus_message** m) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700429 {
430 return ::sd_bus_message_new_method_return(call, m);
431 }
432
William A. Kennington IIIf534ba02020-06-25 00:20:55 -0700433 int sd_bus_message_new_method_error(sd_bus_message* call,
434 sd_bus_message** m, const char* name,
435 const char* description) override
436 {
437 return ::sd_bus_message_new_method_errorf(call, m, name, "%s",
438 description);
439 }
440
Vernon Mauery2b74e522018-10-02 14:55:39 -0700441 int sd_bus_message_new_method_errno(sd_bus_message* call,
442 sd_bus_message** m, int error,
443 const sd_bus_error* p) override
444 {
445 return ::sd_bus_message_new_method_errno(call, m, error, p);
446 }
447
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700448 int sd_bus_message_new_signal(sd_bus* bus, sd_bus_message** m,
449 const char* path, const char* interface,
450 const char* member) override
Patrick Ventureff095682018-04-13 20:54:32 -0700451 {
452 return ::sd_bus_message_new_signal(bus, m, path, interface, member);
453 }
454
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700455 int sd_bus_message_open_container(sd_bus_message* m, char type,
456 const char* contents) override
Patrick Ventureff095682018-04-13 20:54:32 -0700457 {
458 return ::sd_bus_message_open_container(m, type, contents);
459 }
460
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700461 int sd_bus_message_read_basic(sd_bus_message* m, char type,
462 void* p) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700463 {
464 return ::sd_bus_message_read_basic(m, type, p);
465 }
466
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700467 sd_bus_message* sd_bus_message_ref(sd_bus_message* m) override
Patrick Ventureff095682018-04-13 20:54:32 -0700468 {
469 return ::sd_bus_message_ref(m);
470 }
471
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700472 int sd_bus_message_skip(sd_bus_message* m, const char* types) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700473 {
474 return ::sd_bus_message_skip(m, types);
475 }
476
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700477 int sd_bus_message_verify_type(sd_bus_message* m, char type,
478 const char* contents) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700479 {
480 return ::sd_bus_message_verify_type(m, type, contents);
481 }
482
William A. Kennington III472b7022021-04-15 13:13:14 -0700483 int sd_bus_slot_set_destroy_callback(sd_bus_slot* slot,
484 sd_bus_destroy_t callback) override
485 {
486 return ::sd_bus_slot_set_destroy_callback(slot, callback);
487 }
488
489 void* sd_bus_slot_set_userdata(sd_bus_slot* slot, void* userdata) override
490 {
491 return ::sd_bus_slot_set_userdata(slot, userdata);
492 }
493
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700494 int sd_bus_process(sd_bus* bus, sd_bus_message** r) override
Patrick Ventureff095682018-04-13 20:54:32 -0700495 {
496 return ::sd_bus_process(bus, r);
497 }
498
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700499 sd_bus* sd_bus_ref(sd_bus* bus) override
Patrick Ventureff095682018-04-13 20:54:32 -0700500 {
501 return ::sd_bus_ref(bus);
502 }
503
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700504 int sd_bus_request_name(sd_bus* bus, const char* name,
Patrick Ventureff095682018-04-13 20:54:32 -0700505 uint64_t flags) override
506 {
507 return ::sd_bus_request_name(bus, name, flags);
508 }
509
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700510 int sd_bus_send(sd_bus* bus, sd_bus_message* m, uint64_t* cookie) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700511 {
512 return ::sd_bus_send(bus, m, cookie);
513 }
514
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700515 sd_bus* sd_bus_unref(sd_bus* bus) override
Patrick Venturedba73d72018-04-12 14:14:42 -0700516 {
Patrick Ventureff095682018-04-13 20:54:32 -0700517 return ::sd_bus_unref(bus);
518 }
519
Brad Bishopdfbff6f2018-12-05 19:46:20 -0500520 sd_bus* sd_bus_flush_close_unref(sd_bus* bus) override
521 {
522 return ::sd_bus_flush_close_unref(bus);
523 }
524
William A. Kennington III42f6ad52018-12-19 17:32:30 -0800525 int sd_bus_flush(sd_bus* bus) override
526 {
527 return ::sd_bus_flush(bus);
528 }
529
530 void sd_bus_close(sd_bus* bus) override
531 {
532 ::sd_bus_close(bus);
533 }
534
William A. Kennington IIIe0d69652018-08-31 13:09:47 -0700535 int sd_bus_wait(sd_bus* bus, uint64_t timeout_usec) override
Patrick Ventureff095682018-04-13 20:54:32 -0700536 {
537 return ::sd_bus_wait(bus, timeout_usec);
Patrick Venturedba73d72018-04-12 14:14:42 -0700538 }
539};
540
William A. Kennington III9ff25f72018-06-28 17:59:15 -0700541extern SdBusImpl sdbus_impl;
542
Patrick Venturedba73d72018-04-12 14:14:42 -0700543} // namespace sdbusplus