class Aaron::Scheduler

Attributes

tasks[R]

Public Class Methods

new() click to toggle source
# File lib/aaron/scheduler.rb, line 7
def initialize
  @tasks = []
end

Public Instance Methods

<<(task) click to toggle source
# File lib/aaron/scheduler.rb, line 28
def << task
  @tasks << task
end
add_task(task) click to toggle source
# File lib/aaron/scheduler.rb, line 24
def add_task task
  self << task
end
next_sleep() click to toggle source
# File lib/aaron/scheduler.rb, line 20
def next_sleep
  tasks.map { |task| task.next_sleep }.sort.first
end
run() click to toggle source
# File lib/aaron/scheduler.rb, line 11
def run
  while true do
    n = next_sleep
    t = tasks.each { |task| task.apply_time!(n) }.select &:ready_to_trigger?
    sleep(n)
    t.each &:trigger
  end
end