Skip to content

Commit

Permalink
ch6: handle_req use BufStream like book
Browse files Browse the repository at this point in the history
  • Loading branch information
juhp committed Sep 15, 2021
1 parent 2a0ee65 commit 86f2f96
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions ch6_server/src/main.rs
@@ -1,3 +1,4 @@
use bufstream::BufStream;
use std::fs;
use std::io::prelude::*;
use std::net::{TcpListener, TcpStream};
Expand All @@ -17,27 +18,26 @@ fn get_file_list() -> String {
.join(" ")
}

fn handle_req(mut conn: TcpStream) {
let mut reqbytes = [0; 512];

if let Err(err) = conn.write(b"> ") {
println!("Received an error on write! {}", err)
fn handle_req(conn: TcpStream) {
let mut stream = BufStream::new(&conn);
if let Err(err) = stream.write(b"> ") {
println!("Received an error on write! {}", err);
return
};
let requestsize = conn.read(&mut reqbytes);
let size = requestsize.unwrap();
let request: String = String::from_utf8(reqbytes[..size].to_vec()).unwrap();
stream.flush().unwrap();
let mut request = String::new();
let size = stream.read_line(&mut request).unwrap();
if size > 0 {
println!("Received: {}", request);
print!("Received: {}", request);
let mut params = request.split_whitespace();
let command = params.next().unwrap();
let response = match command {
"flist" => get_file_list(),
"md" => make_directory(params.next().unwrap()),
_ => String::from("Unacceptable command"),
};
match conn.write(response.as_bytes()) {
Ok(_) => (),
Err(err) => println!("Received an error on write! {}", err),
if let Err(err) = writeln!(stream, "{}", response) {
println!("Received an error on write! {}", err)
};
}
}
Expand Down

0 comments on commit 86f2f96

Please sign in to comment.