hickory_proto::runtime

Trait RuntimeProvider

Source
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,
        bind_addr: Option<SocketAddr>,
        timeout: Option<Duration>,
    ) -> 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>>>>;

    // Provided method
    fn quic_binder(&self) -> Option<&dyn QuicSocketBinder> { ... }
}
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, bind_addr: Option<SocketAddr>, timeout: Option<Duration>, ) -> 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.

Provided Methods§

Source

fn quic_binder(&self) -> Option<&dyn QuicSocketBinder>

Yields an object that knows how to bind a QUIC socket.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl RuntimeProvider for TokioRuntimeProvider

Available on crate feature tokio-runtime only.