Class: Reqless::JobReservers::Strategies::Sources::Background

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/reqless/job_reservers/strategies/sources.rb

Overview

Background Queue source runs in a background thread to periodically update the queues available.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(delegate, delay) ⇒ Background

Returns a new instance of Background.

Parameters:

  • delegate (Enumerator)

    queue source to load the queues from.

  • delay (Integer)
    • how long between updates



31
32
33
34
# File 'lib/reqless/job_reservers/strategies/sources.rb', line 31

def initialize(delegate, delay)
  @delegate = delegate
  @delay = delay
end

Instance Attribute Details

#delayObject (readonly)

Returns the value of attribute delay.



28
29
30
# File 'lib/reqless/job_reservers/strategies/sources.rb', line 28

def delay
  @delay
end

#delegateObject (readonly)

Returns the value of attribute delegate.



28
29
30
# File 'lib/reqless/job_reservers/strategies/sources.rb', line 28

def delegate
  @delegate
end

Instance Method Details

#each(&block) ⇒ Object



59
60
61
# File 'lib/reqless/job_reservers/strategies/sources.rb', line 59

def each(&block)
  @queues.each { |q| block.call(q) }
end

#startThread

Spawns a thread to periodically update the queues.

Returns:

  • (Thread)

    returns the spawned thread.



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/reqless/job_reservers/strategies/sources.rb', line 39

def start
  @stop   = false
  @queues = delegate.to_a
  Thread.new do
    begin
      loop do
        sleep delay
        break if @stop
        @queues = delegate.to_a
      end
    rescue => e
      retry
    end
  end
end

#stopObject



55
56
57
# File 'lib/reqless/job_reservers/strategies/sources.rb', line 55

def stop
  @stop = true
end