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