zbus::object_server

Trait Interface

Source
pub trait Interface:
    Any
    + Send
    + Sync {
    // Required methods
    fn name() -> InterfaceName<'static>
       where Self: Sized;
    fn get<'life0, 'life1, 'async_trait>(
        &'life0 self,
        property_name: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = Option<Result<OwnedValue>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn get_all<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<HashMap<String, OwnedValue>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn set_mut<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'async_trait>(
        &'life0 mut self,
        property_name: &'life1 str,
        value: &'life2 Value<'life3>,
        ctxt: &'life4 SignalContext<'life5>,
    ) -> Pin<Box<dyn Future<Output = Option<Result<()>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             'life3: 'async_trait,
             'life4: 'async_trait,
             'life5: 'async_trait;
    fn call<'call>(
        &'call self,
        server: &'call ObjectServer,
        connection: &'call Connection,
        msg: &'call Message,
        name: MemberName<'call>,
    ) -> DispatchResult<'call>;
    fn call_mut<'call>(
        &'call mut self,
        server: &'call ObjectServer,
        connection: &'call Connection,
        msg: &'call Message,
        name: MemberName<'call>,
    ) -> DispatchResult<'call>;
    fn introspect_to_writer(&self, writer: &mut dyn Write, level: usize);

    // Provided methods
    fn spawn_tasks_for_methods(&self) -> bool { ... }
    fn set<'call>(
        &'call self,
        property_name: &'call str,
        value: &'call Value<'_>,
        ctxt: &'call SignalContext<'_>,
    ) -> DispatchResult<'call> { ... }
}
Expand description

The trait is used to dispatch messages to an interface instance.

This trait should be treated as unstable API and compatibility may break in minor version bumps. Because of this and other reasons, it is not recommended to manually implement this trait. The crate::dbus_interface macro implements it for you.

If you have an advanced use case where dbus_interface is inadequate, consider using crate::MessageStream or crate::blocking::MessageIterator instead.

Required Methods§

Source

fn name() -> InterfaceName<'static>
where Self: Sized,

Return the name of the interface. Ex: “org.foo.MyInterface”

Source

fn get<'life0, 'life1, 'async_trait>( &'life0 self, property_name: &'life1 str, ) -> Pin<Box<dyn Future<Output = Option<Result<OwnedValue>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Get a property value. Returns None if the property doesn’t exist.

Source

fn get_all<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<HashMap<String, OwnedValue>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Return all the properties.

Source

fn set_mut<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'async_trait>( &'life0 mut self, property_name: &'life1 str, value: &'life2 Value<'life3>, ctxt: &'life4 SignalContext<'life5>, ) -> Pin<Box<dyn Future<Output = Option<Result<()>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, 'life5: 'async_trait,

Set a property value.

Returns None if the property doesn’t exist.

This will only be invoked if set returned RequiresMut.

Source

fn call<'call>( &'call self, server: &'call ObjectServer, connection: &'call Connection, msg: &'call Message, name: MemberName<'call>, ) -> DispatchResult<'call>

Call a method.

Return DispatchResult::NotFound if the method doesn’t exist, or DispatchResult::RequiresMut if call_mut should be used instead.

It is valid, though inefficient, for this to always return RequiresMut.

Source

fn call_mut<'call>( &'call mut self, server: &'call ObjectServer, connection: &'call Connection, msg: &'call Message, name: MemberName<'call>, ) -> DispatchResult<'call>

Call a &mut self method.

This will only be invoked if call returned RequiresMut.

Source

fn introspect_to_writer(&self, writer: &mut dyn Write, level: usize)

Write introspection XML to the writer, with the given indentation level.

Provided Methods§

Source

fn spawn_tasks_for_methods(&self) -> bool

Whether each method call will be handled from a different spawned task.

Note: When methods are called from separate tasks, they may not be run in the order in which they were called.

Source

fn set<'call>( &'call self, property_name: &'call str, value: &'call Value<'_>, ctxt: &'call SignalContext<'_>, ) -> DispatchResult<'call>

Set a property value.

Return DispatchResult::NotFound if the property doesn’t exist, or DispatchResult::RequiresMut if set_mut should be used instead. The default implementation just returns RequiresMut.

Implementors§