pub trait ChannelCapability: Send + Sync {
type Channel: Send;
type StrongWriter: Send + Unpin;
type WeakWriter: Send + Unpin;
type StrongReader: Send + Unpin;
type WeakReader: Send + Unpin;
type Error: Into<GuestError>;
// Required methods
fn create(
&self,
size: GuestUint,
backpressure: ChannelBackpressure,
) -> Result<Self::Channel, Self::Error>;
fn delete(&self, channel: Self::Channel) -> Result<(), Self::Error>;
fn drain(&self, channel: &Self::Channel) -> Result<(), Self::Error>;
fn downgrade_writer(
&self,
writer: Self::StrongWriter,
) -> Result<Self::WeakWriter, Self::Error>;
fn downgrade_reader(
&self,
writer: Self::StrongReader,
) -> Result<Self::WeakReader, Self::Error>;
}Expand description
The capabilities that any subsystem implementation needs to provide
Required Associated Types§
type Channel: Send
type StrongWriter: Send + Unpin
type WeakWriter: Send + Unpin
type StrongReader: Send + Unpin
type WeakReader: Send + Unpin
type Error: Into<GuestError>
Required Methods§
Sourcefn create(
&self,
size: GuestUint,
backpressure: ChannelBackpressure,
) -> Result<Self::Channel, Self::Error>
fn create( &self, size: GuestUint, backpressure: ChannelBackpressure, ) -> Result<Self::Channel, Self::Error>
Create a new channel for transporting bytes.
Sourcefn drain(&self, channel: &Self::Channel) -> Result<(), Self::Error>
fn drain(&self, channel: &Self::Channel) -> Result<(), Self::Error>
Terminate this channel whilst allowing unfinished reads/writes to continue
Sourcefn downgrade_writer(
&self,
writer: Self::StrongWriter,
) -> Result<Self::WeakWriter, Self::Error>
fn downgrade_writer( &self, writer: Self::StrongWriter, ) -> Result<Self::WeakWriter, Self::Error>
Downgrade this strong writer to a weak variant
Sourcefn downgrade_reader(
&self,
writer: Self::StrongReader,
) -> Result<Self::WeakReader, Self::Error>
fn downgrade_reader( &self, writer: Self::StrongReader, ) -> Result<Self::WeakReader, Self::Error>
Downgrade this strong writer to a weak variant