class Roby::ExecutionEngine::ExceptionPropagationVisitor
Graph visitor that propagates exceptions in the dependency graph
Attributes
exception_handler[R]
handled_exceptions[R]
unhandled_exceptions[R]
Public Class Methods
new(graph, object, origin, origin_neighbours = graph.out_neighbours(origin), &exception_handler)
click to toggle source
Calls superclass method
Roby::Relations::ForkMergeVisitor::new
# File lib/roby/execution_engine.rb, line 1134 def initialize(graph, object, origin, origin_neighbours = graph.out_neighbours(origin), &exception_handler) super(graph, object, origin, origin_neighbours) @exception_handler = exception_handler @handled_exceptions = Array.new @unhandled_exceptions = Array.new end
Public Instance Methods
fork_object(obj)
click to toggle source
# File lib/roby/execution_engine.rb, line 1149 def fork_object(obj) obj.fork end
handle_examine_vertex(u)
click to toggle source
# File lib/roby/execution_engine.rb, line 1153 def handle_examine_vertex(u) e = vertex_to_object.fetch(u) return if !e if e.handled = exception_handler[e, u] handled_exceptions << e elsif out_degree[u] == 0 unhandled_exceptions << e end end
propagate_object(u, v, obj)
click to toggle source
# File lib/roby/execution_engine.rb, line 1141 def propagate_object(u, v, obj) raise if u == v if !obj.handled? obj.propagate(u, v) obj end end