Add way to exit

next
Sayan Nandan 4 years ago
parent 42ce053134
commit bfb1e39fe6
No known key found for this signature in database
GPG Key ID: C31EFD7DDA12AEE0

@ -21,7 +21,7 @@
use crate::client::Client;
use std::io::{self, prelude::*};
use tokio::signal;
use std::process;
const ADDR: &'static str = "127.0.0.1:2003";
pub async fn execute_query() {
let mut client = match Client::new(ADDR).await {
@ -40,6 +40,10 @@ pub async fn execute_query() {
io::stdin()
.read_line(&mut rl)
.expect("Couldn't read line, this is a serious error!");
client.run(rl, signal::ctrl_c()).await;
if rl.trim().to_uppercase() == "EXIT" {
println!("Goodbye!");
process::exit(0x100);
}
client.run(rl).await;
}
}

@ -99,21 +99,13 @@ impl Client {
let con = TcpStream::connect(addr).await?;
Ok(Client { con })
}
pub async fn run(&mut self, cmd: String, sig: impl Future) {
pub async fn run(&mut self, cmd: String) {
if cmd.len() == 0 {
return;
} else {
let mut qbuilder = QueryBuilder::new_simple();
qbuilder.from_cmd(cmd);
let q = tokio::select! {
query = self.run_query(qbuilder.prepare_response()) => query,
_ = sig => {
println!("Goodbye!");
// Terminate the connection
process::exit(0x100);
}
};
match q {
match self.run_query(qbuilder.prepare_response()).await {
Ok(res) => {
res.into_iter().for_each(|val| println!("{}", val));
return;

Loading…
Cancel
Save