dope-net 0.9.1

The manifold runtime
Documentation
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>) {}
}