pub trait DatagramBasedExtManual: Sized {
// Required methods
fn create_source<F, C>(
&self,
condition: IOCondition,
cancellable: Option<&C>,
name: Option<&str>,
priority: Priority,
func: F
) -> Source
where F: FnMut(&Self, IOCondition) -> Continue + 'static,
C: IsA<Cancellable>;
fn create_source_future<C: IsA<Cancellable>>(
&self,
condition: IOCondition,
cancellable: Option<&C>,
priority: Priority
) -> Pin<Box<dyn Future<Output = IOCondition> + 'static>>;
fn create_source_stream<C: IsA<Cancellable>>(
&self,
condition: IOCondition,
cancellable: Option<&C>,
priority: Priority
) -> Pin<Box<dyn Stream<Item = IOCondition> + 'static>>;
fn condition_wait(
&self,
condition: IOCondition,
timeout: Option<Duration>,
cancellable: Option<&impl IsA<Cancellable>>
) -> Result<(), Error>;
fn receive_messages<'v, V: IntoIterator<Item = &'v mut [&'v mut [u8]]>, C: IsA<Cancellable>>(
&self,
messages: &mut [InputMessage<'_>],
flags: i32,
timeout: Option<Duration>,
cancellable: Option<&C>
) -> Result<usize, Error>;
fn send_messages<C: IsA<Cancellable>>(
&self,
messages: &mut [OutputMessage<'_>],
flags: i32,
timeout: Option<Duration>,
cancellable: Option<&C>
) -> Result<usize, Error>;
}