class TimeQueue

Constants

Item

Public Class Methods

new() click to toggle source
   # File lib/argus/time_queue.rb
20 def initialize
21   @items = []
22 end

Public Instance Methods

add(time, value) click to toggle source
   # File lib/argus/time_queue.rb
24 def add(time, value)
25   item = Item.new(time, value)
26   @items << item
27   @items.sort!
28   item.key
29 end
all_ready(time) click to toggle source
   # File lib/argus/time_queue.rb
39 def all_ready(time)
40   result = []
41   each_ready(time) do |value| result << value end
42   result
43 end
any_ready?(time) click to toggle source
   # File lib/argus/time_queue.rb
35 def any_ready?(time)
36   ! @items.empty? && @items.first.time <= time
37 end
each_ready(time) { |value| ... } click to toggle source
   # File lib/argus/time_queue.rb
45 def each_ready(time)
46   while any_ready?(time)
47     item = @items.shift
48     yield item.value
49   end
50 end
remove(key) click to toggle source
   # File lib/argus/time_queue.rb
31 def remove(key)
32   @items.delete_if { |item| item.key == key }
33 end
to_s() click to toggle source
   # File lib/argus/time_queue.rb
52 def to_s
53   base_time = nil
54   strings = @items[0,3].map { |item|
55     string = item.to_s(base_time)
56     base_time ||= item.time
57     string
58   }
59   strings << "..." if @items.size > 3
60   "[#{strings.join(', ')}]"
61 end