BeaconListener

Struct BeaconListener 

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

BeaconListener listens for new Beacons on the specified port

§Example of using BeaconListener with timeout

use simpdiscoverylib::BeaconListener;
use std::time::Duration;
use portpicker::pick_unused_port;

let listening_port = pick_unused_port().expect("Could not get a free port to listen on");
let listener = BeaconListener::new("_my_service._tcp.local".as_bytes(), listening_port)
    .expect("Could not create listener");

// Avoid blocking tests by setting a short timeout, expect an error, as there is no sender setup
assert!(listener.wait(Some(Duration::from_millis(1))).is_err());

Implementations§

Source§

impl BeaconListener

Source

pub fn new(service_name: &[u8], listening_port: u16) -> Result<Self>

Create a new BeaconListener on port with an option filter to be applied to incoming beacons. This binds to address “0.0.0.0:listening_port”

Source

pub fn wait(&self, timeout: Option<Duration>) -> Result<Beacon>

Wait for a Beacon on the port specified in BeaconListener::new() If timeout is None, then it will block forever waiting for a beacon matching the optional filter (if supplied) in BeaconListener::new(). If no filter was supplied it will block waiting for any beacon to be received.

If timeout is Some(Duration) then it will block for that duration on the reception of each beacon. If the beacon does not match a supplied filter then it will loop (blocking for duration each time until a matching beacon is found.

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.