public
Last active

async jruby priority queue

  • Download Gist
gistfile1.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
require 'java'
 
class AsyncPriorityQueue < java.util.PriorityQueue
def initialize(*args)
super
@popq = []
end
def add(o)
super unless contains?(o)
end
def push(o)
if add(o) and !@popq.empty?
@popq.shift.call(self.poll)
end
end
def pop(prc=nil, &blk)
raise ArgumentError, 'block or proc required' unless blk ||= prc
 
if empty?
@popq << blk
else
blk.call(self.poll)
end
end
end

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.