blob: be0895a750beff237b205daa2b29a0f32aba87e2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
use hyper_util::client::legacy::connect::dns::GaiResolver as HyperGaiResolver;
use tower_service::Service;
use crate::dns::{Addrs, Name, Resolve, Resolving};
use crate::error::BoxError;
#[derive(Debug)]
pub struct GaiResolver(HyperGaiResolver);
impl GaiResolver {
pub fn new() -> Self {
Self(HyperGaiResolver::new())
}
}
impl Default for GaiResolver {
fn default() -> Self {
GaiResolver::new()
}
}
impl Resolve for GaiResolver {
fn resolve(&self, name: Name) -> Resolving {
let mut this = self.0.clone();
Box::pin(async move {
this.call(name.0)
.await
.map(|addrs| Box::new(addrs) as Addrs)
.map_err(|err| Box::new(err) as BoxError)
})
}
}
|