Class: Kronos::Storage::InMemory

Inherits:
Object
  • Object
show all
Defined in:
lib/kronos/storage/in_memory.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeInMemory

Returns a new instance of InMemory.



9
10
11
12
# File 'lib/kronos/storage/in_memory.rb', line 9

def initialize
  @scheduled_tasks = []
  @reports = []
end

Instance Attribute Details

#reportsObject (readonly)

Returns the value of attribute reports.



6
7
8
# File 'lib/kronos/storage/in_memory.rb', line 6

def reports
  @reports
end

#scheduled_tasksObject (readonly)

Returns the value of attribute scheduled_tasks.



7
8
9
# File 'lib/kronos/storage/in_memory.rb', line 7

def scheduled_tasks
  @scheduled_tasks
end

Instance Method Details

#pending?(task) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
27
28
29
30
31
32
# File 'lib/kronos/storage/in_memory.rb', line 24

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) ⇒ Object



19
20
21
22
# File 'lib/kronos/storage/in_memory.rb', line 19

def register_report(report)
  remove_reports_for(report.task_id)
  @reports << report
end

#remove(task_id) ⇒ Object



44
45
46
# File 'lib/kronos/storage/in_memory.rb', line 44

def remove(task_id)
  @scheduled_tasks.reject! { |scheduled_task| scheduled_task.task_id == task_id }
end

#remove_reports_for(id) ⇒ Object



48
49
50
# File 'lib/kronos/storage/in_memory.rb', line 48

def remove_reports_for(id)
  @reports.reject! { |report| report.task_id == id }
end

#resolved_tasksObject



34
35
36
37
38
39
40
41
42
# File 'lib/kronos/storage/in_memory.rb', line 34

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) ⇒ Object



14
15
16
17
# File 'lib/kronos/storage/in_memory.rb', line 14

def schedule(scheduled_task)
  remove(scheduled_task.task_id)
  @scheduled_tasks.push(scheduled_task)
end