class PulsarSdk::Tweaks::TimeoutQueue
Public Class Methods
new()
click to toggle source
# File lib/pulsar_sdk/tweaks/timeout_queue.rb, line 4 def initialize @mutex = Mutex.new @queue = [] @received = ConditionVariable.new @closed = false end
Public Instance Methods
add(*args)
click to toggle source
# File lib/pulsar_sdk/tweaks/timeout_queue.rb, line 11 def add(*args) @mutex.synchronize do @queue << args @received.signal end end
clear()
click to toggle source
# File lib/pulsar_sdk/tweaks/timeout_queue.rb, line 18 def clear @mutex.synchronize do @queue.clear end end
close()
click to toggle source
# File lib/pulsar_sdk/tweaks/timeout_queue.rb, line 46 def close @closed = true @received.broadcast end
pop(timeout = nil)
click to toggle source
timeout 数字,单位秒
# File lib/pulsar_sdk/tweaks/timeout_queue.rb, line 29 def pop(timeout = nil) @mutex.synchronize do if timeout.nil? while !@closed && @queue.empty? @received.wait(@mutex) end elsif @queue.empty? && timeout != 0 timeout_at = TimeX.now.to_f + timeout while !@closed && @queue.empty? && (res = timeout_at - TimeX.now.to_f) > 0 @received.wait(@mutex, res) end end @queue.pop end end
size()
click to toggle source
# File lib/pulsar_sdk/tweaks/timeout_queue.rb, line 24 def size @queue.size end