From bfb1e39fe66a54644d674a9b854299fc7dce7ff9 Mon Sep 17 00:00:00 2001 From: Sayan Nandan Date: Thu, 23 Jul 2020 14:11:52 +0530 Subject: [PATCH] Add way to exit --- cli/src/argparse.rs | 8 ++++++-- cli/src/client.rs | 12 ++---------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/cli/src/argparse.rs b/cli/src/argparse.rs index 3f117248..bc50fa23 100644 --- a/cli/src/argparse.rs +++ b/cli/src/argparse.rs @@ -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; } } diff --git a/cli/src/client.rs b/cli/src/client.rs index 6df7b0d3..dd6ed4bb 100644 --- a/cli/src/client.rs +++ b/cli/src/client.rs @@ -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;