class Kronos::Storage::InMemory

Attributes

reports[R]
scheduled_tasks[R]

Public Class Methods

new() click to toggle source
# File lib/kronos/storage/in_memory.rb, line 9
def initialize
  @scheduled_tasks = []
  @reports = []
  @locks = {}
end

Public Instance Methods

check_lock(task_id, lock_id) click to toggle source
# File lib/kronos/storage/in_memory.rb, line 63
def check_lock(task_id, lock_id)
  @locks[task_id] == lock_id
end
lock_task(task_id) click to toggle source
# File lib/kronos/storage/in_memory.rb, line 57
def lock_task(task_id)
  SecureRandom.uuid.tap do |lock_id|
    @locks[task_id] = lock_id
  end
end
locked_task?(task_id) click to toggle source
# File lib/kronos/storage/in_memory.rb, line 53
def locked_task?(task_id)
  @locks.key?(task_id)
end
pending?(task) click to toggle source
# File lib/kronos/storage/in_memory.rb, line 25
def pending?(task)
  time = Time.now

  @scheduled_tasks
    .lazy
    .select { |scheduled_task| scheduled_task.next_run > time }
    .map(&:task_id)
    .include?(task.id)
end
register_report(report) click to toggle source
# File lib/kronos/storage/in_memory.rb, line 20
def register_report(report)
  remove_reports_for(report.task_id)
  @reports << report
end
release_lock(task_id) click to toggle source
# File lib/kronos/storage/in_memory.rb, line 67
def release_lock(task_id)
  @locks.delete(task_id)
end
remove(task_id) click to toggle source
# File lib/kronos/storage/in_memory.rb, line 45
def remove(task_id)
  @scheduled_tasks.reject! { |scheduled_task| scheduled_task.task_id == task_id }
end
remove_reports_for(id) click to toggle source
# File lib/kronos/storage/in_memory.rb, line 49
def remove_reports_for(id)
  @reports.reject! { |report| report.task_id == id }
end
resolved_tasks() click to toggle source
# File lib/kronos/storage/in_memory.rb, line 35
def resolved_tasks
  time = Time.now

  @scheduled_tasks
    .lazy
    .select { |scheduled_task| scheduled_task.next_run <= time }
    .map(&:task_id)
    .to_a
end
schedule(scheduled_task) click to toggle source
# File lib/kronos/storage/in_memory.rb, line 15
def schedule(scheduled_task)
  remove(scheduled_task.task_id)
  @scheduled_tasks.push(scheduled_task)
end