1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
//! PipeWire proxy objects
//!
//! All types derived from [Proxy] describe an [object](PipewireObject) on the remote service, with
//! its own associated key-value [Properties].
//!
//! These types cannot be created directly, instances must instead be obtained using the
//! [registry](crate::registry) subsystem to asynchronously listen for new objects as they become
//! bound and visible on the [remote connection](crate::core).
//!
//! # See also
//!
//! C API docs for:
//! - [Properties](https://pipewire.pages.freedesktop.org/wireplumber/c_api/properties_api.html)
//! - [Proxy](https://pipewire.pages.freedesktop.org/wireplumber/c_api/proxy_api.html)
//! - [PipewireObject](https://pipewire.pages.freedesktop.org/wireplumber/c_api/pipewire_object_api.html)
//! - [GlobalProxy](https://pipewire.pages.freedesktop.org/wireplumber/c_api/global_proxy_api.html)
//! - [Node](https://pipewire.pages.freedesktop.org/wireplumber/c_api/node_api.html)
//! - [Port](https://pipewire.pages.freedesktop.org/wireplumber/c_api/port_api.html)
//! - [Link](https://pipewire.pages.freedesktop.org/wireplumber/c_api/link_api.html)
//! - [Device](https://pipewire.pages.freedesktop.org/wireplumber/c_api/device_api.html)
//! - [Client](https://pipewire.pages.freedesktop.org/wireplumber/c_api/client_api.html)
//! - [Metadata](https://pipewire.pages.freedesktop.org/wireplumber/c_api/metadata_api.html)
//! - [Endpoint](https://pipewire.pages.freedesktop.org/wireplumber/c_api/endpoint_api.html)
#[cfg(feature = "v0_4_11")]
pub use crate::auto::LinkState;
#[cfg(feature = "v0_4_2")]
#[cfg_attr(docsrs, doc(cfg(feature = "v0_4_2")))]
pub use crate::auto::PropertiesItem;
#[cfg(feature = "libspa")]
use libspa::utils::Direction as SpaDirection;
pub use {
self::{
keys::*,
link::LinkTarget,
proxy::{PipewireObjectExt2, ProxyExt2},
},
crate::auto::{
traits::{EndpointExt, GlobalProxyExt, MetadataExt, PipewireObjectExt, ProxyExt},
Client, Device, Direction, Endpoint, GlobalProxy, Link, LinkFeatures, Metadata, MetadataFeatures, Node,
NodeFeatures, NodeState, PipewireObject, Port, Properties, Proxy, ProxyFeatures,
},
};
mod client;
mod keys;
mod link;
mod node;
mod port;
mod properties;
mod proxy;
#[cfg(feature = "libspa")]
#[cfg_attr(docsrs, doc(cfg(feature = "libspa")))]
impl From<Direction> for SpaDirection {
fn from(dir: Direction) -> Self {
match dir {
Direction::Input => Self::Input,
Direction::Output => Self::Output,
Direction::__Unknown(v) => Self::from_raw(v as libspa_sys::spa_direction),
}
}
}
#[cfg(feature = "libspa")]
#[cfg_attr(docsrs, doc(cfg(feature = "libspa")))]
impl From<SpaDirection> for Direction {
fn from(dir: SpaDirection) -> Self {
match dir {
SpaDirection::Input => Self::Input,
SpaDirection::Output => Self::Output,
dir => Self::__Unknown(dir.as_raw() as crate::ffi::WpDirection),
}
}
}