master
Bel LaPointe 2023-12-19 09:30:15 -05:00
parent 15a3f8430a
commit eee0bf5e65
1 changed files with 24 additions and 16 deletions

View File

@ -14,7 +14,7 @@ struct Flags {
#[arg(long, default_value = "8")] #[arg(long, default_value = "8")]
threads: i32, threads: i32,
#[arg(long, default_value = "1.0")] #[arg(long, default_value = "2.0")]
stream_retain: f32, stream_retain: f32,
#[arg(long, default_value = "5")] #[arg(long, default_value = "5")]
stream_step: u64, stream_step: u64,
@ -180,12 +180,12 @@ struct AWhisper {
ack: Option<std::sync::mpsc::SyncSender<bool>>, ack: Option<std::sync::mpsc::SyncSender<bool>>,
} }
#[derive(Clone)] #[derive(Clone, Debug)]
struct Whispered { struct Whispered {
data: Vec<AWhispered>, data: Vec<AWhispered>,
} }
#[derive(Clone)] #[derive(Clone, Debug)]
struct AWhispered { struct AWhispered {
data: String, data: String,
offset: i64, offset: i64,
@ -205,7 +205,7 @@ fn new_a_whispered(data: String, start: i64, stop: i64) -> AWhispered {
} }
impl Whispered { impl Whispered {
fn as_string(&self) -> String { fn to_string(&self) -> String {
let mut result = "".to_string(); let mut result = "".to_string();
for i in 0..self.data.len() { for i in 0..self.data.len() {
result = format!("{} {}", result, &self.data[i].data); result = format!("{} {}", result, &self.data[i].data);
@ -213,21 +213,25 @@ impl Whispered {
result result
} }
fn before(&self, t: &f32) -> Whispered {
let mut result = new_whispered();
let end = self.data.iter().map(|x| x.offset + x.length).max().unwrap();
let t = (end as f32) - *t;
self.data
.iter()
.filter(|x| ((x.offset + x.length) as f32) <= t)
.for_each(|x| result.data.push(x.clone()));
eprintln!("before {}: {:?} => {:?}", t, &self.data, &result.data);
result
}
fn after(&self, t: &f32) -> Whispered { fn after(&self, t: &f32) -> Whispered {
let mut result = new_whispered(); let mut result = new_whispered();
self.data self.data
.iter() .iter()
.filter(|x| x.offset as f32 > *t) .filter(|x| x.offset as f32 >= *t)
.for_each(|x| result.data.push(x.clone()));
result
}
fn before(&self, t: &f32) -> Whispered {
let mut result = new_whispered();
self.data
.iter()
.filter(|x| ((x.offset + x.length) as f32) < *t)
.for_each(|x| result.data.push(x.clone())); .for_each(|x| result.data.push(x.clone()));
eprintln!("after {}: {:?} => {:?}", t, &self.data, &result.data);
result result
} }
@ -243,8 +247,12 @@ struct Handler {
impl Handler { impl Handler {
fn on_success(&self, result: Whispered) { fn on_success(&self, result: Whispered) {
eprintln!("{}", chrono::Local::now()); eprintln!("{}: {:?}", chrono::Local::now(), &result);
println!("{}", result.after(&self.head).before(&self.tail).as_string()); println!("{}", result
.after(&(self.head * 100.0))
.before(&(self.tail * 100.0))
.to_string(),
);
} }
fn on_error(&self, msg: String) { fn on_error(&self, msg: String) {
eprintln!("error: {}", msg); eprintln!("error: {}", msg);