pub struct Responder { /* private fields */ }Implementations§
Source§impl Responder
impl Responder
Sourcepub fn new() -> Responder
pub fn new() -> Responder
Spawn a Responder task on an new os thread.
§Panics
If the tokio runtime cannot be created this will panic.
Sourcepub fn new_with_ip_list(allowed_ips: Vec<IpAddr>) -> Result<Responder>
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.
§Errors
If the hostname cannot be converted to a valid unicode string, this will return an error.
§Panics
If the tokio runtime cannot be created this will panic.
Sourcepub fn spawn(handle: &Handle) -> Result<Responder>
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)?;§Errors
If the hostname cannot be converted to a valid unicode string, this will return an error.
Sourcepub fn spawn_with_ip_list(
handle: &Handle,
allowed_ips: Vec<IpAddr>,
) -> Result<Responder>
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)?;§Errors
If the hostname cannot be converted to a valid unicode string, this will return an error.
Sourcepub fn spawn_with_ip_list_and_hostname(
handle: &Handle,
allowed_ips: Vec<IpAddr>,
hostname: String,
) -> Result<Responder>
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())?;§Errors
If the hostname cannot be converted to a valid unicode string, this will return an error.
Sourcepub fn with_default_handle() -> Result<(Responder, Box<dyn Future<Output = ()> + Send + Unpin>)>
pub fn with_default_handle() -> Result<(Responder, Box<dyn Future<Output = ()> + Send + Unpin>)>
Spawn a Responder on the default tokio handle.
§Errors
If the hostname cannot be converted to a valid unicode string, this will return an error.
Sourcepub fn with_default_handle_and_ip_list(
allowed_ips: Vec<IpAddr>,
) -> Result<(Responder, Box<dyn Future<Output = ()> + Send + Unpin>)>
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.
§Errors
If the hostname cannot be converted to a valid unicode string, this will return an error.
Sourcepub fn with_default_handle_and_ip_list_and_hostname(
allowed_ips: Vec<IpAddr>,
hostname: String,
) -> Result<(Responder, Box<dyn Future<Output = ()> + Send + Unpin>)>
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.
§Errors
If the hostname cannot be converted to a valid unicode string, this will return an error.
Source§impl Responder
impl Responder
Sourcepub fn register(
&self,
svc_type: &str,
svc_name: &str,
port: u16,
txt: &[&str],
) -> Service
pub fn register( &self, svc_type: &str, svc_name: &str, port: u16, txt: &[&str], ) -> Service
Register a service to be advertised by the Responder with the DEFAULT_TTL. 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=/"]
);§Panics
If the TXT records are longer than 255 bytes, this will panic.
Sourcepub fn register_with_ttl(
&self,
svc_type: &str,
svc_name: &str,
port: u16,
txt: &[&str],
ttl: u32,
) -> Service
pub fn register_with_ttl( &self, svc_type: &str, svc_name: &str, port: u16, txt: &[&str], ttl: u32, ) -> Service
Register a service to be advertised by the Responder. With a custom TTL in seconds. The service is unregistered on drop.
You may prefer to use this over Responder::register if you know your service will be short-lived and want clients to respond
to it dissapearing more quickly (lower TTL), or if you find your service is very infrequently down and want to reduce
network traffic (higher TTL).
This becomes more important whilst waiting for https://github.com/librespot-org/libmdns/issues/27 to be resolved.
§example
use libmdns::Responder;
let responder = Responder::new();
// bind service
let _http_svc = responder.register_with_ttl(
"_http._tcp".into(),
"my really unreliable and short-lived http server".into(),
80,
&["path=/"],
10 // mDNS clients are requested to re-check every 10 seconds for this HTTP server
);§Panics
If the TXT records are longer than 255 bytes, this will panic.