Class: Tengine::Job::Runtime::Edge::Closer

Inherits:
Object
  • Object
show all
Defined in:
lib/tengine/job/runtime/edge.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(signal, options = {}) ⇒ Closer



176
177
178
179
# File 'lib/tengine/job/runtime/edge.rb', line 176

def initialize(signal, options = {})
  @signal = signal
  @closed_edges = []
end

Instance Attribute Details

#closed_edgesObject (readonly)

Returns the value of attribute closed_edges.



175
176
177
# File 'lib/tengine/job/runtime/edge.rb', line 175

def closed_edges
  @closed_edges
end

Instance Method Details

#close(edge) ⇒ Object



181
182
183
184
# File 'lib/tengine/job/runtime/edge.rb', line 181

def close(edge)
  edge.close(@signal)
  @closed_edges << edge
end

#visit(obj) ⇒ Object



186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# File 'lib/tengine/job/runtime/edge.rb', line 186

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