pub trait Processor<W: OutputWriter, R: InputReader> {
// Required methods
fn initialize(&mut self, shard_id: &str);
fn process_records(
&mut self,
data: &[Record],
checkpoint: &mut Checkpointer<'_, W, R>,
);
fn lease_lost(&mut self);
fn shard_ended(&mut self, checkpoint: &mut Checkpointer<'_, W, R>);
fn shutdown_requested(&mut self, checkpoint: &mut Checkpointer<'_, W, R>);
}