class Tengine::Job::Runtime::Edge::Closer
Attributes
closed_edges[R]
Public Class Methods
new(signal, options = {})
click to toggle source
# File lib/tengine/job/runtime/edge.rb, line 175 def initialize(signal, options = {}) @signal = signal @closed_edges = [] end
Public Instance Methods
close(edge)
click to toggle source
# File lib/tengine/job/runtime/edge.rb, line 180 def close(edge) edge.close(@signal) @closed_edges << edge end
visit(obj)
click to toggle source
# File lib/tengine/job/runtime/edge.rb, line 185 def visit(obj) # binding.pry obj = @signal.remember(obj) if obj.is_a?(Tengine::Job::Runtime::End) if parent = obj.parent (parent.next_edges || []).each{|edge| edge.accept_visitor(self)} end elsif obj.is_a?(Tengine::Job::Runtime::Vertex) obj.next_edges.each{|edge| edge.accept_visitor(self)} elsif obj.is_a?(Tengine::Job::Runtime::Edge) close(obj) @signal.cache(obj.destination).accept_visitor(self) else raise "Unsupported class #{obj.inspect}" end end