pixelflut 0.2.0

An async/sync Pixelflut server/client library
Documentation
extern crate pixelflut;
extern crate tokio;

use pixelflut::async_tokio::PixelflutServerStream;

use tokio::net::TcpListener;

use std::net::SocketAddr;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let addr: SocketAddr = "127.0.0.1:1337".parse()?;

    let listener = TcpListener::bind(&addr).await?;
    println!("Listening on: {}", addr);

    loop {
        let (stream, addr) = listener.accept().await?;
        println!("Got connection from {}", addr);
        let stream = PixelflutServerStream::new(stream, (800, 600));
        tokio::spawn(async {
            if let Err(err) = process(stream).await {
                eprintln!("error in client connection: {}", err);
            }
        })
        .await?;
    }
}

async fn process(mut stream: PixelflutServerStream) -> anyhow::Result<()> {
    while let Some(pixel) = stream.read_pixel().await? {
        println!("Got pixel {:?}", pixel);
    }
    println!("Connection closed");
    Ok(())
}