Class: Qpid::Proton::Schedule

Inherits:
Object
  • Object
show all
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

Methods included from TimeCompare

#before_eq, #earliest

Constructor Details

#initializeSchedule

Returns a new instance of Schedule.



35
# File 'lib/util/schedule.rb', line 35

def initialize() @entries = []; end

Instance Method Details

#clearObject



61
# File 'lib/util/schedule.rb', line 61

def clear() @entries.clear; end

#empty?Boolean

Returns:

  • (Boolean)


37
# File 'lib/util/schedule.rb', line 37

def empty?() @entries.empty?; end

#insert(at, item) ⇒ Object

Parameters:

  • at (Time)

    Insert item at time at

  • at (Numeric)

    Insert item at Time.now at+

  • at (0)

    Insert item at Time.at(0)



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_tickObject



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