pub trait ObserverProxyInterface: Send + Sync {
type GetElementsResponseFut: Future<Output = Result<ReaderGetElementsResult, Error>> + Send;
type WatchElementStateResponseFut: Future<Output = Result<ElementState, Error>> + Send;
type GetTopologiesResponseFut: Future<Output = Result<ReaderGetTopologiesResult, Error>> + Send;
type WatchTopologyResponseFut: Future<Output = Result<u64, Error>> + Send;
type WatchGainStateResponseFut: Future<Output = Result<ObserverWatchGainStateResult, Error>> + Send;
type WatchPlugStateResponseFut: Future<Output = Result<ObserverWatchPlugStateResult, Error>> + Send;
type GetReferenceClockResponseFut: Future<Output = Result<ObserverGetReferenceClockResult, Error>> + Send;
// Required methods
fn get_elements(&self) -> Self::GetElementsResponseFut;
fn watch_element_state(
&self,
processing_element_id: u64,
) -> Self::WatchElementStateResponseFut;
fn get_topologies(&self) -> Self::GetTopologiesResponseFut;
fn watch_topology(&self) -> Self::WatchTopologyResponseFut;
fn watch_gain_state(&self) -> Self::WatchGainStateResponseFut;
fn watch_plug_state(&self) -> Self::WatchPlugStateResponseFut;
fn get_reference_clock(&self) -> Self::GetReferenceClockResponseFut;
}