Class: Roby::EventStructure::EventDeadlines

Inherits:
Object
  • Object
show all
Defined in:
lib/roby/event_structure/temporal_constraints.rb

Overview

Class used to maintain the event deadlines

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeEventDeadlines



18
19
20
# File 'lib/roby/event_structure/temporal_constraints.rb', line 18

def initialize
    @deadlines = Array.new
end

Instance Attribute Details

#deadlinesObject (readonly)

Returns the value of attribute deadlines.



16
17
18
# File 'lib/roby/event_structure/temporal_constraints.rb', line 16

def deadlines
  @deadlines
end

Instance Method Details

#add(deadline, event, generator) ⇒ Object

Adds a deadline to the set



23
24
25
26
# File 'lib/roby/event_structure/temporal_constraints.rb', line 23

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.



48
49
50
51
52
53
54
# File 'lib/roby/event_structure/temporal_constraints.rb', line 48

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



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/roby/event_structure/temporal_constraints.rb', line 29

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

#sizeObject

Returns the number of queued deadlines



42
43
44
# File 'lib/roby/event_structure/temporal_constraints.rb', line 42

def size
    @deadlines.size
end