openlegends-server 0.2.0

OpenLegends Game Server
mod error;
mod status;

use std::{
    io::{Read, Write},
    net::TcpStream,
    str,
};

pub fn handle(mut stream: TcpStream) {
    let mut buffer = [0; 1024];
    loop {
        match stream.read(&mut buffer) {
            Ok(0) => {
                eprintln!("connection closed");
                break;
            }
            Ok(n) => {
                if let Ok(request) = str::from_utf8(&buffer[0..n]) {
                    if let Err(e) = stream.write_all(
                        match request.trim() {
                            "status" => status::response(),
                            _ => error::response("invalid request"),
                        }
                        .as_bytes(),
                    ) {
                        eprintln!("failed to write to stream: {}", e);
                        break;
                    }
                } else {
                    println!("invalid sequence");
                    break;
                }
            }
            Err(e) => {
                eprintln!("failed to read from stream: {}", e);
                break;
            }
        }
    }
}