Parent

Class/Module Index [+]

Quicksearch

Bunny::Concurrent::LinkedContinuationQueue

Continuation queue implementation for JRuby.

On JRuby, we'd rather use reliable and heavily battle tested j.u.c. primitives with well described semantics than informally specified, clumsy and limited Ruby standard library parts.

This is an implementation of the continuation queue on top of the linked blocking queue in j.u.c.

Compared to the Ruby standard library Queue, there is one limitation: you cannot push a nil on the queue, it will fail with a null pointer exception. @private

Public Class Methods

new(*args, &block) click to toggle source
# File lib/bunny/concurrent/linked_continuation_queue.rb, line 25
def initialize(*args, &block)
  @q = LinkedBlockingQueue.new
end

Public Instance Methods

<<(el, timeout_in_ms = nil) click to toggle source
Alias for: push
clear() click to toggle source
# File lib/bunny/concurrent/linked_continuation_queue.rb, line 52
def clear
  @q.clear
end
method_missing(selector, *args, &block) click to toggle source
# File lib/bunny/concurrent/linked_continuation_queue.rb, line 56
def method_missing(selector, *args, &block)
  @q.__send__(selector, *args, &block)
end
poll(timeout_in_ms = nil) click to toggle source
# File lib/bunny/concurrent/linked_continuation_queue.rb, line 42
def poll(timeout_in_ms = nil)
  if timeout_in_ms
    v = @q.poll(timeout_in_ms, TimeUnit::MILLISECONDS)
    raise ::Timeout::Error.new("operation did not finish in #{timeout_in_ms} ms") if v.nil?
    v
  else
    @q.poll
  end
end
pop() click to toggle source
# File lib/bunny/concurrent/linked_continuation_queue.rb, line 38
def pop
  @q.take
end
push(el, timeout_in_ms = nil) click to toggle source
# File lib/bunny/concurrent/linked_continuation_queue.rb, line 29
def push(el, timeout_in_ms = nil)
  if timeout_in_ms
    @q.offer(el, timeout_in_ms, TimeUnit::MILLISECONDS)
  else
    @q.offer(el)
  end
end
Also aliased as: <<

[Validate]

Generated with the Darkfish Rdoc Generator 2.