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,
impl<T> Server<T>where
T: PlayerInterface + 'static,
Sourcepub async fn new(bus_name_suffix: &str, imp: T) -> Result<Self>
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”.
Sourcepub fn connection(&self) -> &Connection
Available on crate feature unstable
only.
pub fn connection(&self) -> &Connection
unstable
only.Returns a reference to the inner [Connection
].
If you needed to call this, consider filing an issue.
Sourcepub async fn release_bus_name(&self) -> Result<bool>
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.
Sourcepub async fn properties_changed(
&self,
properties: impl IntoIterator<Item = Property>,
) -> Result<()>
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,
impl<T> Server<T>where
T: TrackListInterface + 'static,
Sourcepub async fn new_with_track_list(bus_name_suffix: &str, imp: T) -> Result<Self>
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
.
Sourcepub async fn track_list_emit(&self, signal: TrackListSignal) -> Result<()>
pub async fn track_list_emit(&self, signal: TrackListSignal) -> Result<()>
Emits the given signal on the TrackList
interface.
Sourcepub async fn track_list_properties_changed(
&self,
properties: impl IntoIterator<Item = TrackListProperty>,
) -> Result<()>
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,
impl<T> Server<T>where
T: PlaylistsInterface + 'static,
Sourcepub async fn new_with_playlists(bus_name_suffix: &str, imp: T) -> Result<Self>
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
.
Sourcepub async fn playlists_emit(&self, signal: PlaylistsSignal) -> Result<()>
pub async fn playlists_emit(&self, signal: PlaylistsSignal) -> Result<()>
Emits the given signal on the Playlists
interface.
Sourcepub async fn playlists_properties_changed(
&self,
properties: impl IntoIterator<Item = PlaylistsProperty>,
) -> Result<()>
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>where
T: TrackListInterface + PlaylistsInterface + 'static,
impl<T> Server<T>where
T: TrackListInterface + PlaylistsInterface + 'static,
Sourcepub async fn new_with_all(bus_name_suffix: &str, imp: T) -> Result<Self>
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
.