File tree Expand file tree Collapse file tree 1 file changed +10
-11
lines changed
Expand file tree Collapse file tree 1 file changed +10
-11
lines changed Original file line number Diff line number Diff line change @@ -16,7 +16,6 @@ def initialize(queues, redis)
1616
1717 @queues = { }
1818 @redis = redis
19- @q_list = queues
2019
2120 queues . each do |queue |
2221 key = @redis . is_a? ( Redis ::Namespace ) ? "#{ @redis . namespace } :" : ""
@@ -33,25 +32,25 @@ def initialize(queues, redis)
3332 def pop ( non_block = false )
3433 if non_block
3534 synchronize do
36- queue_name , payload = @redis . blpop ( * ( queue_names + [ 0 ] ) )
35+ value = nil
3736
38- raise ThreadError unless queue_name && payload
39- @queues [ queue_name ] . decode ( payload )
37+ @queues . values . each do |queue |
38+ begin
39+ return queue . pop ( true )
40+ rescue ThreadError
41+ end
42+ end
43+
44+ raise ThreadError
4045 end
4146 else
47+ queue_names = @queues . values . map { |queue | queue . redis_name }
4248 synchronize do
4349 value = @redis . blpop ( *( queue_names + [ 1 ] ) ) until value
4450 queue_name , payload = value
4551 @queues [ queue_name ] . decode ( payload )
4652 end
4753 end
4854 end
49-
50- private
51- def queue_names
52- # possibly refactor this to set an ivar of the list in the constructor.
53- # We don't need to calculate the list on every call to `pop`.
54- @q_list . map { |queue | queue . redis_name }
55- end
5655 end
5756end
You can’t perform that action at this time.
0 commit comments