pub mod link;
pub mod multishot;
mod option;
pub mod tcp;
pub mod unix;
pub mod wire;
pub use o3::buffer::{Bytes, Leased, RetainBytes};
use std::io;
use std::net::SocketAddr;
use dope_core::backend::Sqe;
use dope_core::driver::DriverContext;
use dope_core::driver::submission::Submission;
use dope_core::io::fd::Fd;
use dope_core::io::socket::addr::Addr;
use std::time::Duration;
pub trait Transport: 'static + Sized {
type Addr;
type StreamConfig: Default + Copy + 'static;
type ListenerConfig: Default + Clone + 'static;
const KERNEL_DISCARD: bool = false;
fn to_sock_addr(addr: &Self::Addr) -> io::Result<Addr>;
fn socket_params(addr: &Self::Addr) -> (i32, i32, i32);
fn bind_listener_slot<'d>(
driver: &mut DriverContext<'_, 'd>,
addr: &Self::Addr,
backlog: i32,
config: &Self::ListenerConfig,
) -> io::Result<(Fd<'d>, SocketAddr)>;
fn submit_shutdown(driver: &mut DriverContext<'_, '_>, fd: &Fd<'_>, how: i32) -> bool {
driver.push(Sqe::shutdown(fd, how)).is_ok()
}
fn submit_quickack(_driver: &mut DriverContext<'_, '_>, _fd: &Fd<'_>) -> bool {
false
}
fn submit_stream_config(
_driver: &mut DriverContext<'_, '_>,
_config: Self::StreamConfig,
_fd: &Fd<'_>,
) {
}
fn per_ip_limit(_config: &Self::ListenerConfig) -> Option<u32> {
None
}
fn apply_profile_defaults(_config: &mut Self::StreamConfig, _user_timeout: Option<Duration>) {}
}