pub struct InterfaceRef<I> { /* private fields */ }
Expand description
Wrapper over an interface, along with its corresponding SignalContext
instance. A reference to the underlying interface may be obtained via
InterfaceRef::get
and InterfaceRef::get_mut
.
Implementations§
source§impl<I> InterfaceRef<I>where
I: 'static,
impl<I> InterfaceRef<I>where
I: 'static,
sourcepub async fn get(&self) -> InterfaceDeref<'_, I>
pub async fn get(&self) -> InterfaceDeref<'_, I>
Get a reference to the underlying interface.
WARNING: If methods (e.g property setters) in ObjectServer
require &mut self
ObjectServer
will not be able to access the interface in question until all references
of this method are dropped, it is highly recommended that the scope of the interface
returned is restricted.
sourcepub async fn get_mut(&self) -> InterfaceDerefMut<'_, I>
pub async fn get_mut(&self) -> InterfaceDerefMut<'_, I>
Get a reference to the underlying interface.
WARNINGS: Since the ObjectServer
will not be able to access the interface in question
until the return value of this method is dropped, it is highly recommended that the scope
of the interface returned is restricted.
§Errors
If the interface at this instance’s path is not valid, Error::InterfaceNotFound
error is
returned.
§Examples
struct MyIface(u32);
#[dbus_interface(name = "org.myiface.MyIface")]
impl MyIface {
#[dbus_interface(property)]
async fn count(&self) -> u32 {
self.0
}
}
// Setup connection and object_server etc here and then in another part of the code:
let object_server = connection.object_server();
let iface_ref = object_server.interface::<_, MyIface>(path).await?;
let mut iface = iface_ref.get_mut().await;
iface.0 = 42;
iface.count_changed(iface_ref.signal_context()).await?;
pub fn signal_context(&self) -> &SignalContext<'static>
Trait Implementations§
Auto Trait Implementations§
impl<I> Freeze for InterfaceRef<I>
impl<I> !RefUnwindSafe for InterfaceRef<I>
impl<I> Send for InterfaceRef<I>where
I: Send,
impl<I> Sync for InterfaceRef<I>where
I: Sync,
impl<I> Unpin for InterfaceRef<I>where
I: Unpin,
impl<I> !UnwindSafe for InterfaceRef<I>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)