dope_core/driver/
bootstrap.rs1use std::io;
2use std::net::SocketAddr;
3
4use crate::backend::Backend;
5use crate::backend::ops::bootstrap::BootstrapBackend;
6use crate::io::fd::Fd;
7use crate::io::socket::ListenerConfig;
8
9use super::DriverContext;
10
11pub trait Bootstrap<'d> {
12 fn bind_listener_slot(
13 &mut self,
14 addr: SocketAddr,
15 backlog: i32,
16 config: &ListenerConfig,
17 ) -> io::Result<(Fd<'d>, SocketAddr)>;
18 fn bind_datagram_slot(&mut self, addr: SocketAddr) -> io::Result<(Fd<'d>, SocketAddr)>;
19}
20
21impl<'d> Bootstrap<'d> for DriverContext<'_, 'd> {
22 fn bind_listener_slot(
23 &mut self,
24 addr: SocketAddr,
25 backlog: i32,
26 config: &ListenerConfig,
27 ) -> io::Result<(Fd<'d>, SocketAddr)> {
28 <Backend as BootstrapBackend>::bind_listener_slot(self, addr, backlog, config)
29 }
30
31 fn bind_datagram_slot(&mut self, addr: SocketAddr) -> io::Result<(Fd<'d>, SocketAddr)> {
32 <Backend as BootstrapBackend>::bind_datagram_slot(self, addr)
33 }
34}