class Rufus::Scheduler::JobArray


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

def [](job_id)

def [](job_id)
  @mutex.synchronize { @array.find { |j| j.job_id == job_id } }
end

def array


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

def delete_unscheduled

def delete_unscheduled
  @mutex.synchronize {
    @array.delete_if { |j| j.next_time.nil? || j.unscheduled_at }
  }
end

def each(now, &block)

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

def initialize

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

def push(job)

def push(job)
  @mutex.synchronize { @array << job unless @array.index(job) }
  self
end

def size

def size
  @array.size
end

def to_a

def to_a
  @mutex.synchronize { @array.dup }
end