use chaincodec_core::{decoder::{ErrorMode, ProgressCallback}, event::RawEvent};
pub struct BatchRequest {
pub logs: Vec<RawEvent>,
pub chain: String,
pub concurrency: usize,
pub chunk_size: usize,
pub error_mode: ErrorMode,
pub on_progress: Option<Box<dyn ProgressCallback>>,
}
impl BatchRequest {
pub fn new(chain: impl Into<String>, logs: Vec<RawEvent>) -> Self {
Self {
logs,
chain: chain.into(),
concurrency: 0,
chunk_size: 10_000,
error_mode: ErrorMode::Skip,
on_progress: None,
}
}
pub fn chunk_size(mut self, n: usize) -> Self {
self.chunk_size = n;
self
}
pub fn error_mode(mut self, mode: ErrorMode) -> Self {
self.error_mode = mode;
self
}
pub fn on_progress<F: Fn(usize, usize) + Send + Sync + 'static>(
mut self,
f: F,
) -> Self {
self.on_progress = Some(Box::new(f) as Box<dyn ProgressCallback>);
self
}
}