class Roby::Coordination::Models::FaultHandler::ReplaceBy

Script element that implements the replacement part of {#replace_by}

Attributes

replacement_task[R]

Public Class Methods

new(replacement_task) click to toggle source
# File lib/roby/coordination/models/fault_handler.rb, line 70
def initialize(replacement_task)
    @replacement_task = replacement_task
end

Public Instance Methods

execute(fault_handler) click to toggle source
# File lib/roby/coordination/models/fault_handler.rb, line 78
def execute(fault_handler)
    response_task = fault_handler.root_task
    plan = response_task.plan
    replacement_task = self.replacement_task.resolve

    response_task.each_parent_object(Roby::TaskStructure::ErrorHandling) do |repaired_task|
        repaired_task_parents = repaired_task.each_parent_task.map do |parent_task|
            [parent_task, parent_task[repaired_task, Roby::TaskStructure::Dependency]]
        end
        plan.replace(repaired_task, replacement_task)
        repaired_task_parents.each do |parent_t, dependency_options|
            parent_t.add_child repaired_task, dependency_options
        end
    end
    true
end
new(fault_handler) click to toggle source
# File lib/roby/coordination/models/fault_handler.rb, line 74
def new(fault_handler)
    ReplaceBy.new(fault_handler.instance_for(replacement_task))
end
to_s() click to toggle source
# File lib/roby/coordination/models/fault_handler.rb, line 95
def to_s; "start(#{task}, #{dependency_options})" end