pub trait DeviceControllerProxyInterface: Send + Sync {
type BindDriverResponseFut: Future<Output = Result<(i32, Option<Channel>), Error>> + Send;
type InitResponseFut: Future<Output = Result<i32, Error>> + Send;
type UnbindResponseFut: Future<Output = Result<DeviceControllerUnbindResult, Error>> + Send;
type CompleteRemovalResponseFut: Future<Output = Result<DeviceControllerCompleteRemovalResult, Error>> + Send;
type SuspendResponseFut: Future<Output = Result<i32, Error>> + Send;
type ResumeResponseFut: Future<Output = Result<i32, Error>> + Send;
// Required methods
fn connect_multiplexed(
&self,
server: Channel,
include_node: bool,
include_controller: bool
) -> Result<(), Error>;
fn connect_to_controller(
&self,
controller: ServerEnd<ControllerMarker>
) -> Result<(), Error>;
fn connect_to_device_protocol(&self, server: Channel) -> Result<(), Error>;
fn bind_driver(
&self,
driver_path: &str,
driver: Vmo,
default_dispatcher_scheduler_role: &str
) -> Self::BindDriverResponseFut;
fn connect_proxy_(&self, shadow: Channel) -> Result<(), Error>;
fn init(&self) -> Self::InitResponseFut;
fn unbind(&self) -> Self::UnbindResponseFut;
fn complete_removal(&self) -> Self::CompleteRemovalResponseFut;
fn suspend(&self, flags: u32) -> Self::SuspendResponseFut;
fn resume(&self, target_system_state: u32) -> Self::ResumeResponseFut;
fn signal_made_visible(&self) -> Result<(), Error>;
}