Class: ActiveJob::Temporal::ReloadSignalQueue
- Inherits:
-
Object
- Object
- ActiveJob::Temporal::ReloadSignalQueue
- Defined in:
- lib/activejob/temporal/reload_signal_queue.rb
Overview
Single-slot signal handoff between a trap handler and the reload thread.
Backed by Thread::Queue because trap context forbids taking a Mutex.
Instance Method Summary collapse
- #close ⇒ void
-
#initialize ⇒ ReloadSignalQueue
constructor
A new instance of ReloadSignalQueue.
-
#pop ⇒ String?
Blocks until a signal is pending or the queue is closed.
-
#push(signal) ⇒ String?
Enqueues a reload signal unless one is already pending or the queue is closed.
Constructor Details
#initialize ⇒ ReloadSignalQueue
Returns a new instance of ReloadSignalQueue.
9 10 11 |
# File 'lib/activejob/temporal/reload_signal_queue.rb', line 9 def initialize @queue = Thread::Queue.new end |
Instance Method Details
#close ⇒ void
This method returns an undefined value.
34 35 36 37 |
# File 'lib/activejob/temporal/reload_signal_queue.rb', line 34 def close @queue.clear @queue.close end |
#pop ⇒ String?
Blocks until a signal is pending or the queue is closed.
29 30 31 |
# File 'lib/activejob/temporal/reload_signal_queue.rb', line 29 def pop @queue.pop end |
#push(signal) ⇒ String?
Enqueues a reload signal unless one is already pending or the queue is closed.
17 18 19 20 21 22 23 24 |
# File 'lib/activejob/temporal/reload_signal_queue.rb', line 17 def push(signal) return nil if @queue.closed? || !@queue.empty? @queue << signal signal rescue ClosedQueueError nil end |