Class: Qless::JobReservers::RoundRobin

Inherits:
Object
  • Object
show all
Defined in:
lib/qless/job_reservers/round_robin.rb

Overview

Round-robins through all the provided queues

Direct Known Subclasses

ShuffledRoundRobin

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queues) ⇒ RoundRobin

Returns a new instance of RoundRobin.



9
10
11
12
13
# 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

Instance Attribute Details

#queuesObject (readonly)

Returns the value of attribute queues.



7
8
9
# File 'lib/qless/job_reservers/round_robin.rb', line 7

def queues
  @queues
end

Instance Method Details

#descriptionObject



27
28
29
30
# 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!Object



23
24
25
# File 'lib/qless/job_reservers/round_robin.rb', line 23

def prep_for_work!
  # nothing here on purpose
end

#reserveObject



15
16
17
18
19
20
21
# 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!Object



32
33
34
# File 'lib/qless/job_reservers/round_robin.rb', line 32

def reset_description!
  @description = nil
end