Struct Server

Source
pub struct Server<T> { /* private fields */ }
Expand description

Thin wrapper around [zbus::Connection] that calls to T’s implementation of RootInterface, PlayerInterface, TrackListInterface, and PlaylistsInterface to implement org.mpris.MediaPlayer2 and its sub-interfaces.

When implementing using Server, it is important to note that properties changed signals are not emitted automatically; they must be emitted manually using Server::properties_changed, Server::track_list_properties_changed, or Server::playlists_properties_changed, when they changed internally.

Implementations§

Source§

impl<T> Server<T>
where T: PlayerInterface + 'static,

Source

pub async fn new(bus_name_suffix: &str, imp: T) -> Result<Self>

Creates a new Server with the given bus name suffix and implementation, imp, which must implement RootInterface and PlayerInterface.

The resulting bus name will be org.mpris.MediaPlayer2.<bus_name_suffix>, where <bus_name_suffix>must be a unique identifier, such as one based on a UNIX process id. For example, this could be:

  • org.mpris.MediaPlayer2.vlc.instance7389

Note: According to the D-Bus specification, the unique identifier “must only contain the ASCII characters [A-Z][a-z][0-9]_-” and “must not begin with a digit”.

Source

pub fn imp(&self) -> &T

Returns a reference to the underlying implementation.

Source

pub fn connection(&self) -> &Connection

Available on crate feature unstable only.

Returns a reference to the inner [Connection].

If you needed to call this, consider filing an issue.

Source

pub fn bus_name(&self) -> &WellKnownName<'_>

Returns the bus name of the server.

Source

pub async fn release_bus_name(&self) -> Result<bool>

Releases the bus name of the server.

The bus name is automatically released when the server is dropped. But if you want to release it manually, you can call this method.

Unless an error is encountered, returns Ok(true) if name was previously registered with the bus and it has now been successfully deregistered, Ok(false) if name was not previously registered or already deregistered.

Source

pub async fn emit(&self, signal: Signal) -> Result<()>

Emits the given signal.

Source

pub async fn properties_changed( &self, properties: impl IntoIterator<Item = Property>, ) -> Result<()>

Emits the PropertiesChanged signal for the given properties.

This categorizes the property in the changed or invalidated properties as defined by the spec.

Server::track_list_properties_changed or Server::playlists_properties_changed are used to emit PropertiesChanged for the TrackList or Playlists interfaces respectively.

Source§

impl<T> Server<T>
where T: TrackListInterface + 'static,

Source

pub async fn new_with_track_list(bus_name_suffix: &str, imp: T) -> Result<Self>

Creates a new Server with the given bus name suffix and implementation, which must implement TrackListInterface in addition to RootInterface and PlayerInterface.

See also Server::new.

Source

pub async fn track_list_emit(&self, signal: TrackListSignal) -> Result<()>

Emits the given signal on the TrackList interface.

Source

pub async fn track_list_properties_changed( &self, properties: impl IntoIterator<Item = TrackListProperty>, ) -> Result<()>

Emits the PropertiesChanged signal for the given properties.

This categorizes the property in the changed or invalidated properties as defined by the spec.

Source§

impl<T> Server<T>
where T: PlaylistsInterface + 'static,

Source

pub async fn new_with_playlists(bus_name_suffix: &str, imp: T) -> Result<Self>

Creates a new Server with the given bus name suffix and implementation, which must implement PlaylistsInterface in addition to RootInterface and PlayerInterface.

See also Server::new.

Source

pub async fn playlists_emit(&self, signal: PlaylistsSignal) -> Result<()>

Emits the given signal on the Playlists interface.

Source

pub async fn playlists_properties_changed( &self, properties: impl IntoIterator<Item = PlaylistsProperty>, ) -> Result<()>

Emits the PropertiesChanged signal for the given properties.

This categorizes the property in the changed or invalidated properties as defined by the spec.

Source§

impl<T> Server<T>

Source

pub async fn new_with_all(bus_name_suffix: &str, imp: T) -> Result<Self>

Creates a new Server with the given bus name suffix and implementation, which must implement TrackListInterface and PlaylistsInterface in addition to RootInterface and PlayerInterface.

See also Server::new.

Trait Implementations§

Source§

impl<T> Debug for Server<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Server<T>

§

impl<T> !RefUnwindSafe for Server<T>

§

impl<T> Send for Server<T>
where T: Sync + Send,

§

impl<T> Sync for Server<T>
where T: Sync + Send,

§

impl<T> Unpin for Server<T>

§

impl<T> !UnwindSafe for Server<T>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more