tokio-udt 0.1.0-alpha.8

An implementation of UDP-based Data Transfer Protocol (UDT) based on Tokio primitives
Documentation
use std::time::{Duration, Instant};
use tokio::io::AsyncWriteExt;
use tokio_udt::UdtConnection;

#[tokio::main]
async fn main() {
    let mut connection = UdtConnection::connect("127.0.0.1:9000", None)
        .await
        .unwrap();

    println!("Connected!");

    let buffer: Vec<u8> = std::iter::repeat(b"Hello World!")
        .take(100000)
        .flat_map(|b| *b)
        .collect();
    println!("Message length: {}", buffer.len());

    let mut last = Instant::now();
    let mut count = 0;

    loop {
        connection
            .write_all(&buffer)
            .await
            .map(|_| {
                count += 1;
            })
            .unwrap();

        if last.elapsed() > Duration::new(1, 0) {
            last = Instant::now();
            println!("Sent {} messages", count);
            println!(
                "Period {:?}",
                connection.rate_control().get_pkt_send_period()
            );
            println!(
                "Window {:?}",
                connection.rate_control().get_congestion_window_size()
            );
        }
    }

    // connection.close().await
}