forceful server shutdown
This commit is contained in:
21
src/main.rs
21
src/main.rs
@ -1,7 +1,11 @@
|
||||
use signal_hook::{consts::*, iterator::Signals};
|
||||
use std::{
|
||||
collections::HashMap,
|
||||
error::Error,
|
||||
io::{BufRead, BufReader, Write},
|
||||
net::{TcpListener, TcpStream},
|
||||
process::exit,
|
||||
thread,
|
||||
};
|
||||
|
||||
#[derive(PartialEq, Eq, Debug)]
|
||||
@ -342,18 +346,29 @@ fn handle_request(mut stream: TcpStream) {
|
||||
// TODO: Act upon the request
|
||||
|
||||
stream
|
||||
.write_all(b"HTTP/1.1 200 OK\r\n\r\nThis is the server speaking\r\n")
|
||||
.write_all(b"HTTP/1.1 200 OK\r\n\r\nHello, World!\r\n")
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
fn main() -> Result<(), std::io::Error> {
|
||||
fn main() -> Result<(), Box<dyn Error>> {
|
||||
let mut signals = Signals::new([SIGINT, SIGTERM])?;
|
||||
|
||||
// TODO: Gracefully shutdown server
|
||||
thread::spawn(move || {
|
||||
for sig in signals.forever() {
|
||||
println!("Received signal {:?}", sig);
|
||||
println!("Shutting down");
|
||||
exit(1);
|
||||
}
|
||||
});
|
||||
|
||||
let listener = TcpListener::bind("0.0.0.0:8080")?;
|
||||
|
||||
println!("Server started");
|
||||
|
||||
for stream in listener.incoming() {
|
||||
let stream = stream?;
|
||||
handle_request(stream)
|
||||
handle_request(stream);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
Reference in New Issue
Block a user