Struct trust_dns_proto::xfer::DnsExchange [−][src]
pub struct DnsExchange<R> where
R: Future<Output = Result<DnsResponse, ProtoError>> + 'static + Send + Unpin, { /* fields omitted */ }
Expand description
This is a generic Exchange implemented over multiplexed DNS connection providers.
The underlying DnsRequestSender
is expected to multiplex any I/O connections. DnsExchange assumes that the underlying stream is responsible for this.
Implementations
impl<R> DnsExchange<R> where
R: Future<Output = Result<DnsResponse, ProtoError>> + 'static + Send + Unpin,
impl<R> DnsExchange<R> where
R: Future<Output = Result<DnsResponse, ProtoError>> + 'static + Send + Unpin,
pub fn from_stream<S, TE>(stream: S) -> (Self, DnsExchangeBackground<S, R, TE>) where
S: DnsRequestSender<DnsResponseFuture = R> + 'static + Send + Unpin,
pub fn from_stream<S, TE>(stream: S) -> (Self, DnsExchangeBackground<S, R, TE>) where
S: DnsRequestSender<DnsResponseFuture = R> + 'static + Send + Unpin,
Initializes a TcpStream with an existing tcp::TcpStream.
This is intended for use with a TcpListener and Incoming.
Arguments
stream
- the established IO stream for communication
pub fn from_stream_with_receiver<S, TE>(
stream: S,
receiver: UnboundedReceiver<OneshotDnsRequest<R>>,
sender: DnsRequestStreamHandle<R>
) -> (Self, DnsExchangeBackground<S, R, TE>) where
S: DnsRequestSender<DnsResponseFuture = R> + 'static + Send + Unpin,
pub fn from_stream_with_receiver<S, TE>(
stream: S,
receiver: UnboundedReceiver<OneshotDnsRequest<R>>,
sender: DnsRequestStreamHandle<R>
) -> (Self, DnsExchangeBackground<S, R, TE>) where
S: DnsRequestSender<DnsResponseFuture = R> + 'static + Send + Unpin,
Wraps a stream where a sender and receiver have already been established
pub fn connect<F, S, TE>(connect_future: F) -> DnsExchangeConnect<F, S, R, TE>ⓘNotable traits for DnsExchangeConnect<F, S, R, TE>impl<F, S, R, TE> Future for DnsExchangeConnect<F, S, R, TE> where
F: Future<Output = Result<S, ProtoError>> + 'static + Send + Unpin,
S: DnsRequestSender<DnsResponseFuture = R> + 'static + Send + Unpin,
R: Future<Output = Result<DnsResponse, ProtoError>> + 'static + Send + Unpin,
TE: Time + Unpin, type Output = Result<(DnsExchange<R>, DnsExchangeBackground<S, R, TE>), ProtoError>;
where
F: Future<Output = Result<S, ProtoError>> + 'static + Send + Unpin,
S: DnsRequestSender<DnsResponseFuture = R> + 'static + Send + Unpin,
TE: Time + Unpin,
pub fn connect<F, S, TE>(connect_future: F) -> DnsExchangeConnect<F, S, R, TE>ⓘNotable traits for DnsExchangeConnect<F, S, R, TE>impl<F, S, R, TE> Future for DnsExchangeConnect<F, S, R, TE> where
F: Future<Output = Result<S, ProtoError>> + 'static + Send + Unpin,
S: DnsRequestSender<DnsResponseFuture = R> + 'static + Send + Unpin,
R: Future<Output = Result<DnsResponse, ProtoError>> + 'static + Send + Unpin,
TE: Time + Unpin, type Output = Result<(DnsExchange<R>, DnsExchangeBackground<S, R, TE>), ProtoError>;
where
F: Future<Output = Result<S, ProtoError>> + 'static + Send + Unpin,
S: DnsRequestSender<DnsResponseFuture = R> + 'static + Send + Unpin,
TE: Time + Unpin,
impl<F, S, R, TE> Future for DnsExchangeConnect<F, S, R, TE> where
F: Future<Output = Result<S, ProtoError>> + 'static + Send + Unpin,
S: DnsRequestSender<DnsResponseFuture = R> + 'static + Send + Unpin,
R: Future<Output = Result<DnsResponse, ProtoError>> + 'static + Send + Unpin,
TE: Time + Unpin, type Output = Result<(DnsExchange<R>, DnsExchangeBackground<S, R, TE>), ProtoError>;
Returns a future, which itself wraps a future which is awaiting connection.
The connect_future should be lazy.
Trait Implementations
impl<R> Clone for DnsExchange<R> where
R: Future<Output = Result<DnsResponse, ProtoError>> + 'static + Send + Unpin,
impl<R> Clone for DnsExchange<R> where
R: Future<Output = Result<DnsResponse, ProtoError>> + 'static + Send + Unpin,
impl<Resp> DnsHandle for DnsExchange<Resp> where
Resp: Future<Output = Result<DnsResponse, ProtoError>> + 'static + Send + Unpin,
impl<Resp> DnsHandle for DnsExchange<Resp> where
Resp: Future<Output = Result<DnsResponse, ProtoError>> + 'static + Send + Unpin,
type Response = DnsExchangeSend<Resp>
type Response = DnsExchangeSend<Resp>
The associated response from the response future, this should resolve to the Response message
Send a message via the channel in the client Read more
Only returns true if and only if this DNS handle is validating DNSSec. Read more
Auto Trait Implementations
impl<R> !RefUnwindSafe for DnsExchange<R>
impl<R> Send for DnsExchange<R>
impl<R> Sync for DnsExchange<R>
impl<R> Unpin for DnsExchange<R>
impl<R> !UnwindSafe for DnsExchange<R>
Blanket Implementations
Mutably borrows from an owned value. Read more