net-mux 0.2.4

A Net Stream Multiplexing Library
Documentation
use anyhow::Result;
use net_mux::{Config, Session};
use tokio::{io, net::TcpListener};

#[tokio::main]
async fn main() -> Result<()> {
    let trasnport_listener = TcpListener::bind("127.0.0.1:7777").await?;
    let proxy_listener = TcpListener::bind("127.0.0.1:8001").await?;
    println!("Trasnport listening on 127.0.0.1:7777, Proxy listening on 127.0.0.1:8001");

    let (raw_stream, _) = trasnport_listener.accept().await?;
    let session = Session::server(raw_stream, Config::default());
    println!("Session started");

    loop {
        let (mut proxy_stream, _) = proxy_listener.accept().await?;
        println!("Got new proxy connection");
        let mut trasnport_stream = session.open().await.unwrap();
        tokio::spawn(async move {
            println!("Start forwarding");
            let _ = io::copy_bidirectional(&mut proxy_stream, &mut trasnport_stream).await;
            println!("Forwarding finished");
        });
    }
}