class Rufus::Scheduler::JobArray

The array rufus-scheduler uses to keep jobs in order (next to trigger first).

Public Class Methods

new() click to toggle source
# File lib/rufus/scheduler/job_array.rb, line 36
def initialize

  @mutex = Mutex.new
  @array = []
end

Public Instance Methods

[](job_id) click to toggle source
# File lib/rufus/scheduler/job_array.rb, line 78
def [](job_id)

  @mutex.synchronize { @array.find { |j| j.job_id == job_id } }
end
array() click to toggle source

Only used when shutting down, directly yields the underlying array.

# File lib/rufus/scheduler/job_array.rb, line 85
def array

  @array
end
delete_unscheduled() click to toggle source
# File lib/rufus/scheduler/job_array.rb, line 65
def delete_unscheduled

  @mutex.synchronize {

    @array.delete_if { |j| j.next_time.nil? || j.unscheduled_at }
  }
end
each(now, &block) click to toggle source
# File lib/rufus/scheduler/job_array.rb, line 54
def each(now, &block)

  to_a.sort_by { |j| j.next_time || (now + 1) }.each do |job|

    break unless job.next_time
    break if job.next_time > now

    block.call(job)
  end
end
push(job) click to toggle source
# File lib/rufus/scheduler/job_array.rb, line 42
def push(job)

  @mutex.synchronize { @array << job unless @array.index(job) }

  self
end
size() click to toggle source
# File lib/rufus/scheduler/job_array.rb, line 49
def size

  @array.size
end
to_a() click to toggle source
# File lib/rufus/scheduler/job_array.rb, line 73
def to_a

  @mutex.synchronize { @array.dup }
end