irtt-server 0.5.3

IRTT-compatible Rust server library
Documentation
//! Basic single-listener server example.
//!
//! Binds one [`Server`] on an ephemeral loopback port, serves it for a short
//! fixed window, and shuts down. A real deployment would normally bind a
//! fixed port and run until an external shutdown signal.
//!
//! Run with:
//!
//! ```text
//! cargo run -p irtt-server --example basic_server
//! ```

use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use std::time::Duration;

use irtt_server::{Server, ServerConfig};

#[tokio::main(flavor = "current_thread")]
async fn main() {
    let bind_addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 0);
    let config = ServerConfig::default();

    let mut server = match Server::bind(bind_addr, config).await {
        Ok(server) => server,
        Err(err) => {
            eprintln!("failed to bind server: {err}");
            return;
        }
    };

    println!(
        "listening on {}",
        server
            .local_addr()
            .expect("bound socket has a local address")
    );

    let result = server.run(tokio::time::sleep(Duration::from_secs(2))).await;
    if let Err(err) = result {
        eprintln!("server stopped with an error: {err}");
    }
}