class Qless::JobReservers::RoundRobin

Round-robins through all the provided queues

Constants

TYPE_DESCRIPTION

Attributes

queues[R]

Public Class Methods

new(queues) click to toggle source
# File lib/qless/job_reservers/round_robin.rb, line 9
def initialize(queues)
  @queues = queues
  @num_queues = queues.size
  @last_popped_queue_index = @num_queues - 1
end

Public Instance Methods

description() click to toggle source
# File lib/qless/job_reservers/round_robin.rb, line 27
def description
  @description ||=
    @queues.map(&:name).join(', ') + " (#{self.class::TYPE_DESCRIPTION})"
end
prep_for_work!() click to toggle source
# File lib/qless/job_reservers/round_robin.rb, line 23
def prep_for_work!
  # nothing here on purpose
end
reserve() click to toggle source
# File lib/qless/job_reservers/round_robin.rb, line 15
def reserve
  @num_queues.times do |i|
    job = next_queue.pop
    return job if job
  end
  nil
end
reset_description!() click to toggle source
# File lib/qless/job_reservers/round_robin.rb, line 32
def reset_description!
  @description = nil
end

Private Instance Methods

next_queue() click to toggle source
# File lib/qless/job_reservers/round_robin.rb, line 40
def next_queue
  @last_popped_queue_index = (@last_popped_queue_index + 1) % @num_queues
  @queues[@last_popped_queue_index]
end