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