Skip to main content

DnsSeeds

Struct DnsSeeds 

Source
pub struct DnsSeeds { /* private fields */ }
Expand description

Seed discovery via DNS, the SeedDiscovery for clusters whose nodes are named by DNS records instead of configured addresses.

Implementations§

Source§

impl DnsSeeds

Source

pub fn new(query: Query) -> Result<Self, DnsSeedsError>

Discovery via the given Query, which a config file can provide. Resolves with the system resolver configuration; see with_resolver.

§Errors

Fails if the system resolver configuration cannot be read.

Source

pub fn srv(name: impl Into<String>) -> Result<Self, DnsSeedsError>

Discovery via the SRV records at the given name, e.g. _tellus._udp.svc.cluster.example: every record contributes its port paired with each address its target resolves to, so nodes can advertise differing ports. Resolves with the system resolver configuration; see with_resolver.

§Errors

Fails if the system resolver configuration cannot be read.

Source

pub fn ip( name: impl Into<String>, port: NonZeroU16, ) -> Result<Self, DnsSeedsError>

Discovery via the A/AAAA records at the given name, every address paired with the given port: for clusters whose nodes all advertise one well known port. Resolves with the system resolver configuration; see with_resolver.

§Errors

Fails if the system resolver configuration cannot be read.

Source

pub fn with_resolver(self, resolver: TokioResolver) -> Self

Replace the resolver DnsSeeds::new builds, e.g. by one pointed at specific name servers. That resolver keeps no response cache. A resolver which does returns the same addresses until its cached answer expires, so bootstrap sees nodes come and go only that late.

Trait Implementations§

Source§

impl Debug for DnsSeeds

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl SeedDiscovery for DnsSeeds

Source§

type Error = DnsSeedsError

The type of the discovery’s failures.
Source§

async fn resolve(&mut self) -> Result<Vec<SocketAddr>, DnsSeedsError>

Resolve the current seed addresses, this node’s own included when it is discoverable; order and duplicates are irrelevant. Called repeatedly by bootstrap, so a failure is retried, not fatal. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more