Skip to content

Commit 4775b93

Browse files
committed
Moved priority queue classes into own files.
1 parent e1fccdf commit 4775b93

File tree

3 files changed

+308
-295
lines changed

3 files changed

+308
-295
lines changed
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
if Concurrent.on_jruby?
2+
3+
module Concurrent
4+
module Collection
5+
6+
7+
# @!macro priority_queue
8+
#
9+
# @!visibility private
10+
# @!macro internal_implementation_note
11+
class JavaNonConcurrentPriorityQueue
12+
13+
# @!macro priority_queue_method_initialize
14+
def initialize(opts = {})
15+
order = opts.fetch(:order, :max)
16+
if [:min, :low].include?(order)
17+
@queue = java.util.PriorityQueue.new(11) # 11 is the default initial capacity
18+
else
19+
@queue = java.util.PriorityQueue.new(11, java.util.Collections.reverseOrder())
20+
end
21+
end
22+
23+
# @!macro priority_queue_method_clear
24+
def clear
25+
@queue.clear
26+
true
27+
end
28+
29+
# @!macro priority_queue_method_delete
30+
def delete(item)
31+
found = false
32+
while @queue.remove(item) do
33+
found = true
34+
end
35+
found
36+
end
37+
38+
# @!macro priority_queue_method_empty
39+
def empty?
40+
@queue.size == 0
41+
end
42+
43+
# @!macro priority_queue_method_include
44+
def include?(item)
45+
@queue.contains(item)
46+
end
47+
alias_method :has_priority?, :include?
48+
49+
# @!macro priority_queue_method_length
50+
def length
51+
@queue.size
52+
end
53+
alias_method :size, :length
54+
55+
# @!macro priority_queue_method_peek
56+
def peek
57+
@queue.peek
58+
end
59+
60+
# @!macro priority_queue_method_pop
61+
def pop
62+
@queue.poll
63+
end
64+
alias_method :deq, :pop
65+
alias_method :shift, :pop
66+
67+
# @!macro priority_queue_method_push
68+
def push(item)
69+
raise ArgumentError.new('cannot enqueue nil') if item.nil?
70+
@queue.add(item)
71+
end
72+
alias_method :<<, :push
73+
alias_method :enq, :push
74+
75+
# @!macro priority_queue_method_from_list
76+
def self.from_list(list, opts = {})
77+
queue = new(opts)
78+
list.each{|item| queue << item }
79+
queue
80+
end
81+
end
82+
end
83+
end
84+
end

0 commit comments

Comments
 (0)