class Skein::TimeoutQueue
Public Class Methods
new(blocking: true, timeout: nil)
click to toggle source
Public Instance Methods
<<(result)
click to toggle source
# File lib/skein/timeout_queue.rb, line 12 def <<(result) @mutex.synchronize do @response << result @cond_var.signal end end
pop()
click to toggle source
# File lib/skein/timeout_queue.rb, line 20 def pop @mutex.synchronize do if (@blocking) if (@timeout) timeout_time = Time.now.to_f + @timeout while (@response.empty? and (remaining_time = timeout_time - Time.now.to_f) > 0) @cond_var.wait(@mutex, remaining_time) end else while (@response.empty?) @cond_var.wait(@mutex) end end end if (@response.empty?) raise Skein::TimeoutException, 'Queue Empty: Time Out' end @response.shift end end