Skip to main content

Endpoint

Struct Endpoint 

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

Handle to a running mDNS endpoint.

Cloneable; every clone shares the same underlying driver task. The driver task is spawned at Self::server time and exits when the last clone is dropped (the command channel closes).

Implementations§

Source§

impl Endpoint

Source

pub async fn browse(&self, param: QueryParam) -> Result<Lookup, StartQueryError>

Browse for instances of a DNS-SD service type, resolving each into a ServiceEntry. See Lookup and QueryParam.

Source

pub async fn lookup( &self, service: Name, timeout: Duration, ) -> Result<Lookup, StartQueryError>

Convenience for Self::browse with default parameters and the given browse timeout.

Source

pub async fn resolve_host( &self, host: Name, timeout: Duration, ) -> Result<Vec<IpAddr>, StartQueryError>

Resolve a host name to its addresses via mDNS A / AAAA queries (RFC 6762), without the DNS-SD browse/resolve chain.

Issues both queries and collects every advertised address for the timeout window (the answer window for multicast responses), returning them IPv4 first then IPv6, deduplicated and capped per family. The result is empty if nothing answers. Unlike Self::resolve_instance this does not require — or interpret — DNS-SD records; it is the multicast analogue of resolving a hostname.

Source

pub async fn resolve_instance( &self, instance: Name, timeout: Duration, ) -> Result<Option<ServiceEntry>, StartQueryError>

Resolve a known DNS-SD service instance directly into a ServiceEntry, skipping the PTR browse step (e.g. Name::try_from_str("Office._ipp._tcp.local.")).

Issues SRV + TXT for the instance and A / AAAA for the SRV target host, and returns the first complete resolution — host + port, TXT, and at least one address — or None if it does not complete within timeout. Use Self::browse instead when the instance names are not known in advance.

Source§

impl Endpoint

Source

pub async fn server<N: Net>(opts: ServerOptions) -> Result<Self, ServerError>

Bind the multicast sockets configured in opts and spawn the driver task on the runtime exposed by N.

Source

pub fn stats(&self) -> StatsSnapshot

Available on crate feature stats only.

Return a point-in-time snapshot of the I/O + protocol counters for this endpoint.

The snapshot includes both counters incremented by the mdns-proto layer (parse errors, cache operations, service/query lifecycle) and counters added by the driver layer (raw wire rx/tx byte counts, socket-level send errors). All counters share the same stats::Stats instance so the snapshot is a single consistent view.

Source

pub async fn register_service( &self, spec: ServiceSpec, ) -> Result<Service, RegisterError>

Register a new service with the responder. The returned Service streams ServiceUpdate events; dropping it unregisters the service.

Source

pub async fn start_query( &self, spec: QuerySpec, ) -> Result<Query, StartQueryError>

Start a new query. The returned Query streams QueryEvent values; dropping it cancels the query.

Trait Implementations§

Source§

impl Clone for Endpoint

Source§

fn clone(&self) -> Endpoint

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. 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<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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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