pub trait RuntimeProvider: Clone + Send + Sync + Unpin + 'static {
type Handle: Clone + Send + Spawn + Sync + Unpin;
type Timer: Time + Send + Unpin;
type Udp: DnsUdpSocket + QuicLocalAddr + Send;
type Tcp: DnsTcpStream;
// Required methods
fn create_handle(&self) -> Self::Handle;
fn connect_tcp(
&self,
server_addr: SocketAddr
) -> Pin<Box<dyn Send + Future<Output = Result<Self::Tcp>>>>;
fn bind_udp(
&self,
local_addr: SocketAddr,
server_addr: SocketAddr
) -> Pin<Box<dyn Send + Future<Output = Result<Self::Udp>>>>;
}
Expand description
RuntimeProvider defines which async runtime that handles IO and timers.
Required Associated Types§
sourcetype Udp: DnsUdpSocket + QuicLocalAddr + Send
type Udp: DnsUdpSocket + QuicLocalAddr + Send
UdpSocket, where QuicLocalAddr
is for quinn
crate.
sourcetype Tcp: DnsTcpStream
type Tcp: DnsTcpStream
TcpStream
Required Methods§
sourcefn create_handle(&self) -> Self::Handle
fn create_handle(&self) -> Self::Handle
Create a runtime handle
sourcefn connect_tcp(
&self,
server_addr: SocketAddr
) -> Pin<Box<dyn Send + Future<Output = Result<Self::Tcp>>>>
fn connect_tcp( &self, server_addr: SocketAddr ) -> Pin<Box<dyn Send + Future<Output = Result<Self::Tcp>>>>
Create a TCP connection with custom configuration.
sourcefn bind_udp(
&self,
local_addr: SocketAddr,
server_addr: SocketAddr
) -> Pin<Box<dyn Send + Future<Output = Result<Self::Udp>>>>
fn bind_udp( &self, local_addr: SocketAddr, server_addr: SocketAddr ) -> Pin<Box<dyn Send + Future<Output = Result<Self::Udp>>>>
Create a UDP socket bound to local_addr
. The returned value should not be connected to server_addr
.
Notice: the future should be ready once returned at best effort. Otherwise UDP DNS may need much more retries.
Object Safety§
This trait is not object safe.