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

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

#deadlinesObject (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

#sizeObject

Returns the number of queued deadlines



44
45
46
# File 'lib/roby/event_structure/temporal_constraints.rb', line 44

def size
    @deadlines.size
end