Add helper method to check whether ctrl+c was pressed, adopt it (#7482)

I've been working on streaming and pipeline interruption lately. It was
bothering me that checking ctrl+c (something we want to do often) always
requires a bunch of boilerplate like:
```rust
use std::sync::atomic::Ordering;

if let Some(ctrlc) = &engine_state.ctrlc {
     if ctrlc.load(Ordering::SeqCst) {
          ...
```
I added a helper method to cut that down to:

```rust
if nu_utils::ctrl_c::was_pressed(&engine_state.ctrlc) {
    ...
```
This commit is contained in:
Reilly Wood
2022-12-15 09:39:24 -08:00
committed by GitHub
parent 33aea56ccd
commit e215fbbd08
16 changed files with 69 additions and 137 deletions

View File

@ -10,10 +10,7 @@ use std::{
fs::File,
io::Read,
path::{Path, PathBuf},
sync::{
atomic::{AtomicBool, Ordering},
Arc,
},
sync::{atomic::AtomicBool, Arc},
};
const SQLITE_MAGIC_BYTES: &[u8] = "SQLite format 3\0".as_bytes();
@ -399,14 +396,12 @@ fn prepared_statement_to_nu_list(
let mut row_values = vec![];
for row_result in row_results {
if let Some(ctrlc) = &ctrlc {
if ctrlc.load(Ordering::SeqCst) {
// return whatever we have so far, let the caller decide whether to use it
return Ok(Value::List {
vals: row_values,
span: call_span,
});
}
if nu_utils::ctrl_c::was_pressed(&ctrlc) {
// return whatever we have so far, let the caller decide whether to use it
return Ok(Value::List {
vals: row_values,
span: call_span,
});
}
if let Ok(row_value) = row_result {