[][src]Struct oxidiscovery::Discovery

pub struct Discovery {
    pub multicast_addr: SocketAddr,
    pub binding_addr: SocketAddr,
    pub transmission_delay: Duration,
    pub transmission_timeout: Duration,
    pub message: Vec<u8>,
}

Fields

multicast_addr: SocketAddrbinding_addr: SocketAddrtransmission_delay: Durationtransmission_timeout: Durationmessage: Vec<u8>

Implementations

impl Discovery[src]

pub fn discover<C: Fn(&mut Vec<Peer>) + Send + 'static>(
    &self,
    callback: C
) -> Result<DiscoveryManagment, Box<dyn Error>>
[src]

Example #1

  let peer_discovery: Discovery = Default::default();

  // peer_list was cloned and moved here
  let mut manager = peer_discovery
      .discover(move |peer_list| {
          println!("{:?}", peer_list);
      })?;

   // Will take 60 seconds for the timeout to hit.
   manager.wait();

Example #2

let lpeers: Arc<RwLock<Vec<Peer>>> = Arc::new(RwLock::new(Vec::new()));
let peers = lpeers.clone();

let peer_discovery: Discovery = Default::default();
// peer_list was cloned and moved here
let mut manager = peer_discovery
    .discover(move |peer_list| {
        let mut lock = peers.write().unwrap();
        lock.clear();
        lock.append(peer_list)
    })
    .or_else(|err| Err(EngineError::DiscoveryError(err)))?;

loop {
    let b = &mut manager;

    let lock = lpeers.read();
    let peers = lock.unwrap();
    if !peers.is_empty() || !b.is_alive() {
        println!("{:?}", peers);
        b.stop();
        break;
    }
    std::thread::sleep(std::time::Duration::from_millis(250))
}

Trait Implementations

impl Clone for Discovery[src]

impl Default for Discovery[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.