Struct ServiceInfo

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

Complete info about a Service Instance.

We can construct some PTR, one SRV and one TXT record from this info, as well as A (IPv4 Address) and AAAA (IPv6 Address) records.

Implementations§

Source§

impl ServiceInfo

Source

pub fn new<Ip: AsIpAddrs, P: IntoTxtProperties>( ty_domain: &str, my_name: &str, host_name: &str, ip: Ip, port: u16, properties: P, ) -> Result<Self>

Creates a new service info.

ty_domain is the service type and the domain label, for example “_my-service._udp.local.”.

my_name is the instance name, without the service type suffix.

host_name is the “host” in the context of DNS. It is used as the “name” in the address records (i.e. TYPE_A and TYPE_AAAA records). It means that for the same hostname in the same local network, the service resolves in the same addresses. Be sure to check it if you see unexpected addresses resolved.

properties can be None or key/value string pairs, in a type that implements IntoTxtProperties trait. It supports:

  • HashMap<String, String>
  • Option<HashMap<String, String>>
  • slice of tuple: &[(K, V)] where K and V are std::string::ToString.

Note: The maximum length of a single property string is 255, Property that exceed the length are truncated.

len(key + value) < u8::MAX

ip can be one or more IP addresses, in a type that implements AsIpAddrs trait. It supports:

  • Single IPv4: "192.168.0.1"
  • Single IPv6: "2001:0db8::7334"
  • Multiple IPv4 separated by comma: "192.168.0.1,192.168.0.2"
  • Multiple IPv6 separated by comma: "2001:0db8::7334,2001:0db8::7335"
  • A slice of IPv4: &["192.168.0.1", "192.168.0.2"]
  • A slice of IPv6: &["2001:0db8::7334", "2001:0db8::7335"]
  • A mix of IPv4 and IPv6: "192.168.0.1,2001:0db8::7334"
  • All the above formats with IpAddr or String instead of &str.

The host TTL and other TTL are set to default values.

Source

pub const fn enable_addr_auto(self) -> Self

Indicates that the library should automatically update the addresses of this service, when IP address(es) are added or removed on the host.

Source

pub const fn is_addr_auto(&self) -> bool

Returns if the service’s addresses will be updated automatically when the host IP addrs change.

Source

pub fn set_requires_probe(&mut self, enable: bool)

Set whether this service info requires name probing for potential name conflicts.

By default, it is true (i.e. requires probing) for every service info. You set it to false only when you are sure there are no conflicts, or for testing purposes.

Source

pub const fn requires_probe(&self) -> bool

Returns whether this service info requires name probing for potential name conflicts.

By default, it returns true for every service info.

Source

pub fn get_type(&self) -> &str

Returns the service type including the domain label.

For example: “_my-service._udp.local.”.

Source

pub const fn get_subtype(&self) -> &Option<String>

Returns the service subtype including the domain label, if subtype has been defined.

For example: “_printer._sub._http._tcp.local.”.

Source

pub fn get_fullname(&self) -> &str

Returns a reference of the service fullname.

This is useful, for example, in unregister.

Source

pub const fn get_properties(&self) -> &TxtProperties

Returns the properties from TXT records.

Source

pub fn get_property(&self, key: &str) -> Option<&TxtProperty>

Returns a property for a given key, where key is case insensitive.

Returns None if key does not exist.

Source

pub fn get_property_val(&self, key: &str) -> Option<Option<&[u8]>>

Returns a property value for a given key, where key is case insensitive.

Returns None if key does not exist.

Source

pub fn get_property_val_str(&self, key: &str) -> Option<&str>

Returns a property value string for a given key, where key is case insensitive.

Returns None if key does not exist.

Source

pub fn get_hostname(&self) -> &str

Returns the service’s hostname.

Source

pub const fn get_port(&self) -> u16

Returns the service’s port.

Source

pub const fn get_addresses(&self) -> &HashSet<IpAddr>

Returns the service’s addresses

Source

pub fn get_addresses_v4(&self) -> HashSet<&Ipv4Addr>

Returns the service’s IPv4 addresses only.

Source

pub const fn get_host_ttl(&self) -> u32

Returns the service’s TTL used for SRV and Address records.

Source

pub const fn get_other_ttl(&self) -> u32

Returns the service’s TTL used for PTR and TXT records.

Source

pub const fn get_priority(&self) -> u16

Returns the service’s priority used in SRV records.

Source

pub const fn get_weight(&self) -> u16

Returns the service’s weight used in SRV records.

Source

pub fn as_resolved_service(self) -> ResolvedService

Consumes self and returns a resolved service, i.e. a lite version of ServiceInfo.

Trait Implementations§

Source§

impl Clone for ServiceInfo

Source§

fn clone(&self) -> ServiceInfo

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for ServiceInfo

Source§

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

Formats the value using the given formatter. 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, 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> 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.