Home

Awesome

async-rustbus CI Testing

This crate implements an async API for interacting with DBus. Beyond being just async, it is also thread-safe, allowing for a single connection to be used by multiple threads. It is built on top of KillingSpark's existing rustbus crate and reuses its implementation of the DBus wire format and message protocol. A non-blocking reimplementation of rustbus's Conn is used to build an async version of RpcConn. This crate's async version of RpcConn creates an async API for connecting to system, session, and remote (TCP) DBus daemons, sending messages, receving method calls and signals.

Design differences between this crate and rustbus and why

While the async crate reuses the message format of the parent crate, there were some design decisions that differ from the orignal when handling connections:

For security reasons, the D-Bus protocol should be strictly parsed and validated, with the exception of defined extension points. Any invalid protocol or spec violations should result in immediately dropping the connection without notice to the other end.

Status

This crate has yet to be published and still needs documentation, however most of the functionality is implemented. The signal implementation has not been validated, but everything else is in working order.