Commit 0a927829 authored by Chris's avatar Chris
Browse files

[single-threaded-web-server] implemented /sleep endpoint as a segue to multithreading

parent c0cdb29e
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -2,6 +2,8 @@ use std::{
    fs,
    io::{BufReader, prelude::*},
    net::{TcpListener, TcpStream},
    thread,
    time::Duration,
};
use std::process::exit;

@@ -36,12 +38,17 @@ fn handle_connection(mut stream: TcpStream) {
    println!("Received request: {http_request:#?}");
    let request_verb_type_version = http_request.get(0).unwrap();

    let (status_line, html_file_name) = if request_verb_type_version == "GET / HTTP/1.1" {
    let (status_line, html_file_name) = match &request_verb_type_version[..] {
        "GET / HTTP/1.1" => ("HTTP/1.1 200 OK", "hello.html"),
        "GET /sleep HTTP/1.1" => {
            thread::sleep(Duration::from_secs(5));
            ("HTTP/1.1 200 OK", "hello.html")
    } else {
        ("HTTP/1.1 404 NOT FOUND", "404.html")
        }
        _ => ("HTTP/1.1 404 NOT FOUND", "404.html"),
    };



    let response_body = fs::read_to_string(html_file_name).unwrap_or_else(|error| {
        eprintln!("error when reading {}: {}", html_file_name, error);
        exit(1);