pub trait RuntimeProvider: Clone + Send + Sync + Unpin + 'static {
    type Handle: Clone + Send + Spawn + Sync + Unpin;
    type Timer: Time + Send + Unpin;
    type Udp: DnsUdpSocket + 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§

source

type Handle: Clone + Send + Spawn + Sync + Unpin

Handle to the executor;

source

type Timer: Time + Send + Unpin

Timer

source

type Udp: DnsUdpSocket + Send

UdpSocket

source

type Tcp: DnsTcpStream

TcpStream

Required Methods§

source

fn create_handle(&self) -> Self::Handle

Create a runtime handle

source

fn connect_tcp( &self, server_addr: SocketAddr, ) -> Pin<Box<dyn Send + Future<Output = Result<Self::Tcp>>>>

Create a TCP connection with custom configuration.

source

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.

Implementors§