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