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