pub trait DnsRequestSender: Stream<Item = Result<(), ProtoError>> + Send + Unpin + 'static {
    // Required methods
    fn send_message(&mut self, message: DnsRequest) -> DnsResponseStream;
    fn shutdown(&mut self);
    fn is_shutdown(&self) -> bool;
}
Expand description

Types that implement this are capable of sending a serialized DNS message on a stream

The underlying Stream implementation should yield Some(()) whenever it is ready to send a message, NotReady, if it is not ready to send a message, and Err or None in the case that the stream is done, and should be shutdown.

Required Methods§

source

fn send_message(&mut self, message: DnsRequest) -> DnsResponseStream

Send a message, and return a stream of response

Return

A stream which will resolve to SerialMessage responses

source

fn shutdown(&mut self)

Allows the upstream user to inform the underling stream that it should shutdown.

After this is called, the next time poll is called on the stream it would be correct to return Poll::Ready(Ok(())). This is not required though, if there are say outstanding requests that are not yet complete, then it would be correct to first wait for those results.

source

fn is_shutdown(&self) -> bool

Returns true if the stream has been shutdown with shutdown

Implementors§

source§

impl DnsRequestSender for HttpsClientStream

Available on crate feature dns-over-https only.
source§

impl DnsRequestSender for QuicClientStream

Available on crate features dns-over-quic and tokio-runtime only.
source§

impl<S, MF> DnsRequestSender for DnsMultiplexer<S, MF>where S: DnsClientStream + Unpin + 'static, MF: MessageFinalizer + Send + Sync + 'static,

source§

impl<S: DnsUdpSocket + Send + 'static, MF: MessageFinalizer> DnsRequestSender for UdpClientStream<S, MF>