remove unwraps
This commit is contained in:
parent
7f85e2debf
commit
3d9c53237c
|
@ -139,28 +139,30 @@ fn run_command(query: String) -> ::anyhow::Result<String> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_client(mut stream: TcpStream) {
|
fn handle_client(mut stream: TcpStream) -> ::anyhow::Result<()> {
|
||||||
let mut data = [0_u8; BUFFER_SIZE];
|
let mut data = [0_u8; BUFFER_SIZE];
|
||||||
|
|
||||||
while match stream.read(&mut data) {
|
while match stream.read(&mut data) {
|
||||||
Ok(_size) => {
|
Ok(_size) => {
|
||||||
let query_string = String::from_utf8(data.to_vec()).expect("A UTF-8 string");
|
let query_string = String::from_utf8(data.to_vec())?;
|
||||||
let response: String = run_command(query_string).unwrap();
|
let response: String = run_command(query_string)?;
|
||||||
|
|
||||||
let response_data_size = response.len().to_le_bytes();
|
let response_data_size = response.len().to_le_bytes();
|
||||||
stream.write_all(&response_data_size).unwrap(); // send length of message
|
stream.write_all(&response_data_size)?; // send length of message
|
||||||
stream.write_all(response.as_bytes()).unwrap(); // send message
|
stream.write_all(response.as_bytes())?; // send message
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
println!(
|
println!(
|
||||||
"An error occurred, terminating connection with {}",
|
"An error occurred, terminating connection with {}",
|
||||||
stream.peer_addr().unwrap()
|
stream.peer_addr()?
|
||||||
);
|
);
|
||||||
stream.shutdown(Shutdown::Both).unwrap();
|
stream.shutdown(Shutdown::Both)?;
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
} {}
|
} {}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() -> std::io::Result<()> {
|
fn main() -> std::io::Result<()> {
|
||||||
|
@ -171,8 +173,9 @@ fn main() -> std::io::Result<()> {
|
||||||
let listener = TcpListener::bind("0.0.0.0:5433")?;
|
let listener = TcpListener::bind("0.0.0.0:5433")?;
|
||||||
|
|
||||||
for stream in listener.incoming() {
|
for stream in listener.incoming() {
|
||||||
thread::spawn(|| {
|
thread::spawn(|| -> ::anyhow::Result<()> {
|
||||||
handle_client(stream.expect("A valid stream"));
|
handle_client(stream?)?;
|
||||||
|
Ok(())
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -280,7 +280,7 @@ impl Command {
|
||||||
state = CreateParserState::ColumnDatatype;
|
state = CreateParserState::ColumnDatatype;
|
||||||
}
|
}
|
||||||
CreateParserState::ColumnDatatype => {
|
CreateParserState::ColumnDatatype => {
|
||||||
let dtype = Datatype::parse_from_str(token).unwrap();
|
let dtype = Datatype::parse_from_str(token)?;
|
||||||
if dtype.has_len() {
|
if dtype.has_len() {
|
||||||
state = CreateParserState::ColumnLength;
|
state = CreateParserState::ColumnLength;
|
||||||
} else {
|
} else {
|
||||||
|
@ -293,8 +293,9 @@ impl Command {
|
||||||
state = CreateParserState::ColumnDefinitionEnd;
|
state = CreateParserState::ColumnDefinitionEnd;
|
||||||
}
|
}
|
||||||
CreateParserState::ColumnDefinitionEnd => {
|
CreateParserState::ColumnDefinitionEnd => {
|
||||||
|
if let Some(data_type_val) = data_type {
|
||||||
let column_def = ColumnDefinition {
|
let column_def = ColumnDefinition {
|
||||||
data_type: data_type.unwrap(),
|
data_type: data_type_val,
|
||||||
length,
|
length,
|
||||||
name: col_name,
|
name: col_name,
|
||||||
};
|
};
|
||||||
|
@ -314,6 +315,9 @@ impl Command {
|
||||||
}
|
}
|
||||||
_ => return Err(anyhow!("Expected end")),
|
_ => return Err(anyhow!("Expected end")),
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return Err(anyhow!("Could not find datatype for column {}", col_name));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
CreateParserState::Semicolon => {
|
CreateParserState::Semicolon => {
|
||||||
if token != ";" {
|
if token != ";" {
|
||||||
|
|
|
@ -51,8 +51,11 @@ impl Datatype {
|
||||||
Ok(str_val)
|
Ok(str_val)
|
||||||
}
|
}
|
||||||
Datatype::Integer => {
|
Datatype::Integer => {
|
||||||
let val = data_val.first().unwrap();
|
if let Some(val) = data_val.first() {
|
||||||
Ok(format!("{}", val))
|
Ok(format!("{}", val))
|
||||||
|
} else {
|
||||||
|
Err(anyhow!("Unable to parse Integer"))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue