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