resque 0.3.0

rust resque clone
Documentation
use std::sync::Arc;
use std::sync::atomic::AtomicBool;
use std::convert::Into;
use {ErrorKind, JobService, JobServices, Result};

pub struct Config<R> {
    pub(crate) host: String,
    pub(crate) workers: u64,
    pub(crate) with_redis: R,
    pub(crate) job_services: JobServices,
    pub(crate) tick_sleep: u64,
    pub(crate) stop_timeout: u64,
    pub(crate) watch_dead_thread: u64,
    pub(crate) fetch_timeout: u64,
    pub(crate) closed: Arc<AtomicBool>,
}

impl<R> Config<R> {
    pub fn new<S>(host: S, workers: u64, with_redis: R, closed: Arc<AtomicBool>) -> Config<R>
    where
        S: Into<String>,
    {
        Config {
            host: host.into(),
            workers: workers,
            with_redis: with_redis,
            job_services: JobServices::new(),
            tick_sleep: 1,
            stop_timeout: 10,
            watch_dead_thread: 3,
            fetch_timeout: 5,
            closed: closed,
        }
    }

    pub fn reg_job_service(&mut self, job_service: Box<JobService>) -> Result<()> {
        let job_type = job_service.job_type().to_string();

        if self.job_services
            .insert(job_type.clone(), job_service)
            .is_some()
        {
            return Err(ErrorKind::RegDupJobService(job_type).into());
        }

        Ok(())
    }

    pub fn set_tick_sleep(&mut self, tick_sleep: u64) {
        self.tick_sleep = tick_sleep;
    }

    pub fn set_stop_timeout(&mut self, stop_timeout: u64) {
        self.stop_timeout = stop_timeout;
    }

    pub fn set_watch_dead_thread(&mut self, watch_dead_thread: u64) {
        self.watch_dead_thread = watch_dead_thread;
    }

    pub fn set_fetch_timeout(&mut self, fetch_timeout: u64) {
        self.fetch_timeout = fetch_timeout;
    }
}

pub struct ScheduleConfig<R> {
    pub(crate) with_redis: R,
    pub(crate) tick_sleep: u64,
    pub(crate) closed: Arc<AtomicBool>,
}

impl<R> ScheduleConfig<R> {
    pub fn new(with_redis: R, closed: Arc<AtomicBool>) -> ScheduleConfig<R> {
        ScheduleConfig {
            with_redis: with_redis,
            tick_sleep: 1,
            closed: closed,
        }
    }
}