module Roby::EventStructure::TemporalConstraints::EventFiredHook
Public Instance Methods
fired(event)
click to toggle source
Overloaded to register deadlines that this event's emissions define
Calls superclass method
# File lib/roby/event_structure/temporal_constraints.rb, line 391 def fired(event) super # Verify that the event matches any running constraint parent, intervals = find_failed_temporal_constraint(event.time) if parent plan.execution_engine.add_error TemporalConstraintViolation.new(event, parent, intervals.intervals) end parent, count, allowed_interval, since = find_failed_occurence_constraint(false) if parent plan.execution_engine.add_error OccurenceConstraintViolation.new(event, parent, count, allowed_interval, since) end deadlines = plan.emission_deadlines # Remove the deadline that this emission fullfills (if any) deadlines.remove_deadline_for(self, event.time) # Add new deadlines each_forward_temporal_constraint do |target, disjoint_set| next if disjoint_set.intervals.empty? max_diff = disjoint_set.boundaries[1] is_fullfilled = target.history.any? do |target_event| diff = event.time - target_event.time break if diff > max_diff disjoint_set.include?(diff) end if !is_fullfilled deadlines.add(event.time + disjoint_set.boundaries[1], event, target) end end end