Method: Libhoney::Queueing::SizedQueueWithTimeout#pop

Defined in:
lib/libhoney/queueing/sized_queue_with_timeout.rb

#pop(timeout = :never, &timeout_policy) ⇒ Object Also known as: deq, shift

Pop something off the queue.

Parameters:

  • timeout (Numeric, :never) (defaults to: :never)

    how long in seconds to wait for the queue to have an item available or :never to wait “forever”

  • timeout_policy (#call)

    defaults to -> { raise PopTimedOut } - a lambda/Proc/callable, what to do when the timeout expires

Returns:

  • (Object)

Raises:

[View source]

65
66
67
68
69
70
71
72
73
# File 'lib/libhoney/queueing/sized_queue_with_timeout.rb', line 65

def pop(timeout = :never, &timeout_policy)
  timeout_policy ||= -> { raise PopTimedOut }

  wait_for_condition(@item_available, -> { !empty? }, timeout, timeout_policy) do
    item = @items.shift
    @space_available.signal unless full?
    item
  end
end