File tree Expand file tree Collapse file tree 1 file changed +11
-10
lines changed Expand file tree Collapse file tree 1 file changed +11
-10
lines changed Original file line number Diff line number Diff line change @@ -16,6 +16,7 @@ def initialize(queues, redis)
16
16
17
17
@queues = { }
18
18
@redis = redis
19
+ @q_list = queues
19
20
20
21
queues . each do |queue |
21
22
key = @redis . is_a? ( Redis ::Namespace ) ? "#{ @redis . namespace } :" : ""
@@ -32,25 +33,25 @@ def initialize(queues, redis)
32
33
def pop ( non_block = false )
33
34
if non_block
34
35
synchronize do
35
- value = nil
36
+ queue_name , payload = @redis . blpop ( * ( queue_names + [ 0 ] ) )
36
37
37
- @queues . values . each do |queue |
38
- begin
39
- return queue . pop ( true )
40
- rescue ThreadError
41
- end
42
- end
43
-
44
- raise ThreadError
38
+ raise ThreadError unless queue_name && payload
39
+ @queues [ queue_name ] . decode ( payload )
45
40
end
46
41
else
47
- queue_names = @queues . values . map { |queue | queue . redis_name }
48
42
synchronize do
49
43
value = @redis . blpop ( *( queue_names + [ 1 ] ) ) until value
50
44
queue_name , payload = value
51
45
@queues [ queue_name ] . decode ( payload )
52
46
end
53
47
end
54
48
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
55
56
end
56
57
end
You can’t perform that action at this time.
0 commit comments