def initialize(opts={})
@opts = opts
@started_at = nil
@paused = false
@jobs = JobArray.new
@frequency = Rufus::Scheduler.parse(opts[:frequency] || 0.300)
@mutexes = {}
@work_queue = Queue.new
@max_work_threads = opts[:max_work_threads] || MAX_WORK_THREADS
@stderr = $stderr
@thread_key = "rufus_scheduler_#{self.object_id}"
@scheduler_lock =
if lockfile = opts[:lockfile]
Rufus::Scheduler::FileLock.new(lockfile)
else
opts[:scheduler_lock] || Rufus::Scheduler::NullLock.new
end
@trigger_lock = opts[:trigger_lock] || Rufus::Scheduler::NullLock.new
@scheduler_lock.lock || return
start
end