Class: Qpid::Proton::Schedule
- Inherits:
-
Object
- Object
- Qpid::Proton::Schedule
- Includes:
- TimeCompare
- Defined in:
- lib/util/schedule.rb
Overview
A time-sorted list of objects. Thread unsafe.
Defined Under Namespace
Classes: Entry
Instance Method Summary collapse
- #clear ⇒ Object
- #empty? ⇒ Boolean
-
#initialize ⇒ Schedule
constructor
A new instance of Schedule.
- #insert(at, item) ⇒ Object
- #next_tick ⇒ Object
-
#pop(time) ⇒ Object
Return next item due at or before time, else nil.
Methods included from TimeCompare
Constructor Details
#initialize ⇒ Schedule
Returns a new instance of Schedule.
35 |
# File 'lib/util/schedule.rb', line 35 def initialize() @entries = []; end |
Instance Method Details
#clear ⇒ Object
61 |
# File 'lib/util/schedule.rb', line 61 def clear() @entries.clear; end |
#empty? ⇒ Boolean
37 |
# File 'lib/util/schedule.rb', line 37 def empty?() @entries.empty?; end |
#insert(at, item) ⇒ Object
46 47 48 49 50 51 52 53 54 |
# File 'lib/util/schedule.rb', line 46 def insert(at, item) time = case at when 0 then Time.at(0) # Avoid call to Time.now for immediate tasks when Numeric then Time.now + at else at end index = time && ((0...@entries.size).bsearch { |i| @entries[i].time > time }) @entries.insert(index || -1, Entry.new(time, item)) end |
#next_tick ⇒ Object
39 40 41 |
# File 'lib/util/schedule.rb', line 39 def next_tick() @entries.first.time unless @entries.empty? end |
#pop(time) ⇒ Object
Return next item due at or before time, else nil
57 58 59 |
# File 'lib/util/schedule.rb', line 57 def pop(time) @entries.shift.item if !@entries.empty? && before_eq(@entries.first.time, time) end |