Class: Roby::EventStructure::EventDeadlines
- Defined in:
- lib/roby/event_structure/temporal_constraints.rb
Overview
Class used to maintain the event deadlines
Instance Attribute Summary collapse
-
#deadlines ⇒ Object
readonly
Returns the value of attribute deadlines.
Instance Method Summary collapse
-
#add(deadline, event, generator) ⇒ Object
Adds a deadline to the set.
-
#initialize ⇒ EventDeadlines
constructor
A new instance of EventDeadlines.
-
#missed_deadlines(current_time) ⇒ Object
Returns the set of deadlines that have been missed at
current_time
. -
#remove_deadline_for(generator, time) ⇒ Object
Remove the first deadline registered for
generator
. -
#size ⇒ Object
Returns the number of queued deadlines.
Constructor Details
#initialize ⇒ EventDeadlines
Returns a new instance of EventDeadlines.
20 21 22 |
# File 'lib/roby/event_structure/temporal_constraints.rb', line 20 def initialize @deadlines = [] end |
Instance Attribute Details
#deadlines ⇒ Object (readonly)
Returns the value of attribute deadlines.
18 19 20 |
# File 'lib/roby/event_structure/temporal_constraints.rb', line 18 def deadlines @deadlines end |
Instance Method Details
#add(deadline, event, generator) ⇒ Object
Adds a deadline to the set
25 26 27 28 |
# File 'lib/roby/event_structure/temporal_constraints.rb', line 25 def add(deadline, event, generator) deadlines << [deadline, event, generator] @deadlines = deadlines.sort_by(&:first) end |
#missed_deadlines(current_time) ⇒ Object
Returns the set of deadlines that have been missed at current_time
. These deadlines get removed from the set.
50 51 52 53 54 55 56 |
# File 'lib/roby/event_structure/temporal_constraints.rb', line 50 def missed_deadlines(current_time) result = [] while !deadlines.empty? && deadlines.first[0] < current_time result << deadlines.shift end result end |
#remove_deadline_for(generator, time) ⇒ Object
Remove the first deadline registered for generator
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/roby/event_structure/temporal_constraints.rb', line 31 def remove_deadline_for(generator, time) found = false deadlines.delete_if do |deadline, _, gen| if found false else found = deadline > time && generator == gen end end found end |
#size ⇒ Object
Returns the number of queued deadlines
44 45 46 |
# File 'lib/roby/event_structure/temporal_constraints.rb', line 44 def size @deadlines.size end |