#dbus #ipc #api-bindings #object

dbus-crossroads

Framework for writing D-Bus method handlers

9 unstable releases

0.5.2 Jan 6, 2023
0.5.1 Jul 10, 2022
0.5.0 Sep 19, 2021
0.4.0 Jun 14, 2021
0.1.0 Jun 19, 2020

#256 in Unix APIs

Download history 21189/week @ 2024-12-14 14094/week @ 2024-12-21 24032/week @ 2024-12-28 16790/week @ 2025-01-04 17008/week @ 2025-01-11 18577/week @ 2025-01-18 18898/week @ 2025-01-25 24368/week @ 2025-02-01 29468/week @ 2025-02-08 24165/week @ 2025-02-15 28216/week @ 2025-02-22 30403/week @ 2025-03-01 29327/week @ 2025-03-08 33296/week @ 2025-03-15 29437/week @ 2025-03-22 26973/week @ 2025-03-29

123,736 downloads per month
Used in 48 crates (25 directly)

Apache-2.0/MIT

575KB
11K SLoC

crates.io API documentation license

dbus-crossroads is a library that helps you implement interfaces on object paths, i e "server side" method handler code.

It is not as mature as dbus::tree yet, but the API should be fairly stable and easier to use than dbus::tree. Go ahead and use it, and report any issues you find!

To get started, you can jump into the commented examples, one for sync one for async (dbus-tokio), and one slightly more advanced, or familiarize yourself using the API reference.

Design decisions (compared to dbus::tree):

  • First class support for both sync and async methods
  • Detect method arguments automatically through generics
  • ...but less generics in structs you use, which means less cluttered API
  • The tree/crossroads instance is Send (but not Sync).
  • You can now modify the instance from within a method handler
  • It is objects (paths) that can contain custom data, and they can contain different data for different objects
  • Interface descriptions are kept in a registry, which means less reference counting

Dependencies

~4.5MB
~106K SLoC