File tree Expand file tree Collapse file tree 1 file changed +8
-17
lines changed Expand file tree Collapse file tree 1 file changed +8
-17
lines changed Original file line number Diff line number Diff line change @@ -9,16 +9,15 @@ def initialize(size)
9
9
@buffer_condition = Condition . new
10
10
11
11
@probe_set = WaitableList . new
12
- @buffer = [ ]
13
- @size = size
12
+ @buffer = RingBuffer . new ( size )
14
13
end
15
14
16
15
def probe_set_size
17
16
@probe_set . size
18
17
end
19
18
20
19
def buffer_queue_size
21
- @mutex . synchronize { @buffer . size }
20
+ @mutex . synchronize { @buffer . count }
22
21
end
23
22
24
23
def push ( value )
@@ -51,28 +50,20 @@ def remove_probe(probe)
51
50
52
51
private
53
52
54
- def buffer_full?
55
- @buffer . size == @size
56
- end
57
-
58
- def buffer_empty?
59
- @buffer . empty?
60
- end
61
-
62
53
def push_into_buffer ( value )
63
- @buffer_condition . wait ( @mutex ) while buffer_full ?
64
- @buffer << value
54
+ @buffer_condition . wait ( @mutex ) while @buffer . full ?
55
+ @buffer . offer value
65
56
@buffer_condition . broadcast
66
57
end
67
58
68
59
def peek_buffer
69
- @buffer_condition . wait ( @mutex ) while buffer_empty ?
70
- @buffer . first
60
+ @buffer_condition . wait ( @mutex ) while @buffer . empty ?
61
+ @buffer . peek
71
62
end
72
63
73
64
def shift_buffer
74
- @buffer_condition . wait ( @mutex ) while buffer_empty ?
75
- result = @buffer . shift
65
+ @buffer_condition . wait ( @mutex ) while @buffer . empty ?
66
+ result = @buffer . poll
76
67
@buffer_condition . broadcast
77
68
result
78
69
end
You can’t perform that action at this time.
0 commit comments