use crate::Job;
use std::marker::PhantomData;
use std::sync::Arc;
pub struct Claimer<I: Job, DE, DF, DFut>
where
DF: Fn(I, usize) -> DFut,
DE: std::fmt::Display,
DFut: Future<Output = Result<(), DE>>,
{
pub(super) min_idle_time: usize,
pub(super) block_timeout: usize,
pub(super) max_concurrent_tasks: usize,
pub(super) max_retries: usize,
pub(super) dlq_worker: Option<Arc<DF>>,
pub(super) _marker: PhantomData<fn() -> (I, DE, DFut)>,
}
pub struct ClaimerBuilder<I: Job, DE, DF, DFut>
where
DF: Fn(I, usize) -> DFut + 'static + Send + Sync,
DE: std::fmt::Display + Send + 'static,
DFut: Future<Output = Result<(), DE>> + Send,
{
pub(super) min_idle_time: usize,
pub(super) block_timeout: usize,
pub(super) max_concurrent_tasks: usize,
pub(super) max_retries: usize,
pub(super) dlq_worker: Option<Arc<DF>>,
pub(super) _marker: PhantomData<fn() -> (I, DE, DFut)>,
}