1
0
Fork 0
mirror of https://github.com/puma/puma.git synced 2022-11-09 13:48:40 -05:00
puma--puma/lib/puma/queue_close.rb

27 lines
544 B
Ruby
Raw Normal View History

class ClosedQueueError < StandardError; end
module Puma
# Queue#close was added in Ruby 2.3.
# Add a simple implementation for earlier Ruby versions.
#
module QueueClose
def close
num_waiting.times {push nil}
@closed = true
end
def closed?
@closed ||= false
end
def push(object)
raise ClosedQueueError if closed?
super
end
alias << push
def pop(non_block=false)
return nil if !non_block && closed? && empty?
super
end
end
::Queue.prepend QueueClose
end