class Schdlr
Constants
- VERSION
Public Class Methods
new(queue, **options)
click to toggle source
# File lib/schdlr.rb, line 19 def initialize(queue, **options) @queue = queue @dispatcher = Dispatcher.new execution_interval = options[:interval] || 1 timeout_interval = options[:timeout] || 1 @timer = Concurrent::TimerTask.new(execution_interval: execution_interval, timeout_interval: timeout_interval) { puts Time.now } @timer.add_observer(self) end
Public Instance Methods
at(datetime, task)
click to toggle source
# File lib/schdlr.rb, line 36 def at(datetime, task) @queue.set(datetime, task) end
now(task)
click to toggle source
# File lib/schdlr.rb, line 40 def now(task) at(Time.now, task) end
start!()
click to toggle source
# File lib/schdlr.rb, line 28 def start! @timer.execute end
stop!()
click to toggle source
# File lib/schdlr.rb, line 32 def stop! @timer.shutdown end
task_update(time, result, ex)
click to toggle source
# File lib/schdlr.rb, line 44 def task_update(time, result, ex) if ex id, _, _, _ = *ex.task @queue.fail(id) else id, _, _, _ = *result @queue.del(id) end end
update(time, result, ex)
click to toggle source
# File lib/schdlr.rb, line 54 def update(time, result, ex) tasks = @queue.tasks(time) tasks.collect do |task_spec| ivar = @dispatcher.async.dispatch(task_spec) ivar.add_observer(self, :task_update) ivar end end