Struct Responder

Source
pub struct Responder { /* private fields */ }

Implementations§

Source§

impl Responder

Source

pub fn new() -> Result<Responder>

Spawn a Responder task on an new os thread.

Source

pub fn new_with_ip_list(allowed_ips: Vec<IpAddr>) -> Result<Responder>

Spawn a Responder task on an new os thread. DNS response records will have the reported IPs limited to those passed in here. This can be particularly useful on machines with lots of networks created by tools such as docker.

Source

pub fn spawn(handle: &Handle) -> Result<Responder>

Spawn a Responder with the provided tokio Handle.

§Example
use libmdns::Responder;

let rt = tokio::runtime::Builder::new_current_thread().build().unwrap();
let handle = rt.handle().clone();
let responder = Responder::spawn(&handle)?;
Source

pub fn spawn_with_ip_list( handle: &Handle, allowed_ips: Vec<IpAddr>, ) -> Result<Responder>

Spawn a Responder task with the provided tokio Handle. DNS response records will have the reported IPs limited to those passed in here. This can be particularly useful on machines with lots of networks created by tools such as docker.

§Example
use libmdns::Responder;

let rt = tokio::runtime::Builder::new_current_thread().build().unwrap();
let handle = rt.handle().clone();
let vec: Vec<std::net::IpAddr> = vec![
    "192.168.1.10".parse::<std::net::Ipv4Addr>().unwrap().into(),
    std::net::Ipv6Addr::new(0, 0, 0, 0xfe80, 0x1ff, 0xfe23, 0x4567, 0x890a).into(),
];
let responder = Responder::spawn_with_ip_list(&handle, vec)?;
Source

pub fn spawn_with_ip_list_and_hostname( handle: &Handle, allowed_ips: Vec<IpAddr>, hostname: String, ) -> Result<Responder>

Spawn a Responder task with the provided tokio Handle. DNS response records will have the reported IPs limited to those passed in here. This can be particularly useful on machines with lots of networks created by tools such as docker. And SRV field will have specified hostname instead of system hostname. This can be particularly useful if the platform has the fixed hostname and the application should make hostname unique for its purpose.

§Example
use libmdns::Responder;

let rt = tokio::runtime::Builder::new_current_thread().build().unwrap();
let handle = rt.handle().clone();
let responder = Responder::spawn_with_ip_list_and_hostname(&handle, Vec::new(), "myUniqueName".to_owned())?;
Source

pub fn with_default_handle() -> Result<(Responder, Box<dyn Future<Output = ()> + Send + Unpin>)>

Spawn a Responder on the default tokio handle.

Source

pub fn with_default_handle_and_ip_list( allowed_ips: Vec<IpAddr>, ) -> Result<(Responder, Box<dyn Future<Output = ()> + Send + Unpin>)>

Spawn a Responder on the default tokio handle. DNS response records will have the reported IPs limited to those passed in here. This can be particularly useful on machines with lots of networks created by tools such as docker.

Source

pub fn with_default_handle_and_ip_list_and_hostname( allowed_ips: Vec<IpAddr>, hostname: String, ) -> Result<(Responder, Box<dyn Future<Output = ()> + Send + Unpin>)>

Spawn a Responder on the default tokio handle. DNS response records will have the reported IPs limited to those passed in here. This can be particularly useful on machines with lots of networks created by tools such as docker. And SRV field will have specified hostname instead of system hostname. This can be particularly useful if the platform has the fixed hostname and the application should make hostname unique for its purpose.

Source§

impl Responder

Source

pub fn register( &self, svc_type: String, svc_name: String, port: u16, txt: &[&str], ) -> Service

Register a service to be advertised by the Responder. The service is unregistered on drop.

§example
use libmdns::Responder;

let responder = Responder::new()?;
// bind service
let _http_svc = responder.register(
         "_http._tcp".into(),
         "my http server".into(),
         80,
         &["path=/"]
     );

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> 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, 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V