dope-core 0.10.0

The manifold runtime
Documentation
use std::io;
use std::net::SocketAddr;

use crate::backend::Backend;
use crate::backend::ops::bootstrap::BootstrapBackend;
use crate::io::fd::Fd;
use crate::io::socket::ListenerConfig;

use super::DriverContext;

pub trait Bootstrap<'d> {
    fn bind_listener_slot(
        &mut self,
        addr: SocketAddr,
        backlog: i32,
        config: &ListenerConfig,
    ) -> io::Result<(Fd<'d>, SocketAddr)>;
    fn bind_datagram_slot(&mut self, addr: SocketAddr) -> io::Result<(Fd<'d>, SocketAddr)>;
}

impl<'d> Bootstrap<'d> for DriverContext<'_, 'd> {
    fn bind_listener_slot(
        &mut self,
        addr: SocketAddr,
        backlog: i32,
        config: &ListenerConfig,
    ) -> io::Result<(Fd<'d>, SocketAddr)> {
        <Backend as BootstrapBackend>::bind_listener_slot(self, addr, backlog, config)
    }

    fn bind_datagram_slot(&mut self, addr: SocketAddr) -> io::Result<(Fd<'d>, SocketAddr)> {
        <Backend as BootstrapBackend>::bind_datagram_slot(self, addr)
    }
}