rns-net 0.5.8

Network interfaces and node driver for the Reticulum Network Stack
Documentation
use std::time::Duration;

use rns_net::event;
use rns_net::interface::local::start_client;
use rns_net::{Event, InterfaceId, LocalClientConfig};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let _ = env_logger::try_init();

    let instance_name = std::env::var("RNS_INSTANCE_NAME").unwrap_or_else(|_| "default".into());
    let port = std::env::var("RNS_SHARED_INSTANCE_PORT")
        .ok()
        .and_then(|value| value.parse().ok())
        .unwrap_or(37428);

    let (tx, rx) = event::channel();
    let config = LocalClientConfig {
        name: "issue-2-repro".into(),
        instance_name,
        port,
        interface_id: InterfaceId(9002),
        reconnect_wait: Duration::from_secs(1),
    };

    let _writer = start_client(config, tx)?;

    match rx.recv_timeout(Duration::from_secs(2))? {
        Event::InterfaceUp(id, _, _) => {
            println!("connected with interface id {}", id.0);
            Ok(())
        }
        other => Err(format!("unexpected event after connect: {:?}", other).into()),
    }
}