yprox 0.2.0

A modifying, multiplexer tcp proxy server tool and library.
Documentation
use std::{
    io::Read,
    net::TcpStream,
    sync::{mpsc, Arc},
};

use crate::{Message, Result};

pub fn client(stream: Arc<TcpStream>, tx: mpsc::Sender<Message>) -> Result<()> {
    let addr = stream.peer_addr()?;

    tx.send(Message::ClientConnected {
        stream: stream.clone(),
        addr,
    })?;

    let mut buffer = [0; 1024];
    loop {
        let n = stream.as_ref().read(&mut buffer)?;
        if n > 0 {
            let bytes: Box<[u8]> = buffer[..n].iter().cloned().collect();
            println!("Request: {}", String::from_utf8_lossy(&bytes));
            tx.send(Message::NewClientMessage { addr, bytes })?;
        } else {
            tx.send(Message::ClientDisconnected { addr })?;
            break;
        }
    }

    Ok(())
}

pub struct Client {
    pub stream: Arc<TcpStream>,
}