From 7c6841782d36faacc2aa3616dc3ed1b9403fa26e Mon Sep 17 00:00:00 2001 From: sigoden Date: Thu, 2 Nov 2023 10:45:11 +0800 Subject: refactor: improve code quanity (#197) - move model_info.rs/message.rs to clients/ - rename SharedConfig to GlobalConfig --- src/utils/abort_signal.rs | 55 +++++++++++++++++++++++++++++++++++++++++++++++ src/utils/mod.rs | 2 ++ 2 files changed, 57 insertions(+) create mode 100644 src/utils/abort_signal.rs (limited to 'src/utils') diff --git a/src/utils/abort_signal.rs b/src/utils/abort_signal.rs new file mode 100644 index 0000000..af58b35 --- /dev/null +++ b/src/utils/abort_signal.rs @@ -0,0 +1,55 @@ +use std::sync::{ + atomic::{AtomicBool, Ordering}, + Arc, +}; + +pub type AbortSignal = Arc; + +pub struct AbortSignalInner { + ctrlc: AtomicBool, + ctrld: AtomicBool, +} + +pub fn create_abort_signal() -> AbortSignal { + AbortSignalInner::new() +} + +impl AbortSignalInner { + pub fn new() -> AbortSignal { + Arc::new(Self { + ctrlc: AtomicBool::new(false), + ctrld: AtomicBool::new(false), + }) + } + + pub fn aborted(&self) -> bool { + if self.aborted_ctrlc() { + return true; + } + if self.aborted_ctrld() { + return true; + } + false + } + + pub fn aborted_ctrlc(&self) -> bool { + self.ctrlc.load(Ordering::SeqCst) + } + + pub fn aborted_ctrld(&self) -> bool { + self.ctrld.load(Ordering::SeqCst) + } + + pub fn reset(&self) { + self.ctrlc.store(false, Ordering::SeqCst); + self.ctrld.store(false, Ordering::SeqCst); + } + + pub fn set_ctrlc(&self) { + self.ctrlc.store(true, Ordering::SeqCst); + } + + pub fn set_ctrld(&self) { + self.ctrld.store(true, Ordering::SeqCst); + } +} diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 938e07c..1deec3e 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -1,7 +1,9 @@ +mod abort_signal; mod prompt_input; mod split_line; mod tiktoken; +pub use self::abort_signal::{create_abort_signal, AbortSignal}; pub use self::prompt_input::*; pub use self::split_line::*; pub use self::tiktoken::cl100k_base_singleton; -- cgit v1.2.3