use crate::{
config::BackendConfig,
error::CrossioError,
event::Events,
interest::Interest,
token::Token,
};
use std::time::Duration;
pub trait Backend: Send + Sync {
type RawSource: Copy + Send + Sync + 'static;
fn new(config: BackendConfig) -> Result<Self, CrossioError>
where
Self: Sized;
fn register(
&self,
source: Self::RawSource,
token: Token,
interest: Interest,
) -> Result<(), CrossioError>;
fn reregister(
&self,
source: Self::RawSource,
token: Token,
interest: Interest,
) -> Result<(), CrossioError>;
fn deregister(&self, source: Self::RawSource) -> Result<(), CrossioError>;
fn poll(
&self,
events: &mut Events,
timeout: Option<Duration>,
) -> Result<usize, CrossioError>;
}