class Backports::Ractor::OutgoingQueue
-
Wraps exception
-
Add `ack: ` to push (blocking)
Constants
- TYPE
- WrappedException
Public Class Methods
new()
click to toggle source
Calls superclass method
Backports::FilteredQueue::new
# File lib/backports/ractor/queues.rb, line 34 def initialize @ack_queue = ::Queue.new super end
Public Instance Methods
close(how = :hard)
click to toggle source
Calls superclass method
Backports::FilteredQueue#close
# File lib/backports/ractor/queues.rb, line 47 def close(how = :hard) super() return if how == :soft clear @ack_queue.close end
pop(timeout: nil, ack: true)
click to toggle source
Calls superclass method
Backports::FilteredQueue#pop
# File lib/backports/ractor/queues.rb, line 39 def pop(timeout: nil, ack: true) r = super(timeout: timeout) @ack_queue << :done if ack raise r.exception if WrappedException === r r end
push(obj, ack:)
click to toggle source
Calls superclass method
Backports::FilteredQueue#push
# File lib/backports/ractor/queues.rb, line 55 def push(obj, ack:) super(obj) if ack r = @ack_queue.pop # block until popped raise ClosedError, "The #{self.class::TYPE}-port is already closed" unless r == :done end self end