use crate::MinimalRefRecord;
use anyhow::Result;
pub trait ParallelProcessor: Send + Clone {
fn process_record<'a, Rf: MinimalRefRecord<'a>>(&mut self, record: Rf) -> Result<()>;
fn on_batch_complete(&mut self) -> Result<()> {
Ok(())
}
fn on_thread_complete(&mut self) -> Result<()> {
Ok(())
}
#[allow(unused_variables)]
fn set_thread_id(&mut self, thread_id: usize) {
}
fn get_thread_id(&self) -> usize {
unimplemented!("Must be implemented by the processor to be used")
}
}
pub trait PairedParallelProcessor: Send + Clone {
fn process_record_pair<'a, Rf: MinimalRefRecord<'a>>(
&mut self,
record1: Rf,
record2: Rf,
) -> Result<()>;
fn on_batch_complete(&mut self) -> Result<()> {
Ok(())
}
fn on_thread_complete(&mut self) -> Result<()> {
Ok(())
}
#[allow(unused_variables)]
fn set_thread_id(&mut self, thread_id: usize) {
}
fn get_thread_id(&self) -> usize {
unimplemented!("Must be implemented by the processor to be used")
}
}