Class: Tengine::Job::Runtime::Junction
- Inherits:
-
Vertex
- Object
- Vertex
- Tengine::Job::Runtime::Junction
- Defined in:
- lib/tengine/job/runtime/junction.rb
Overview
ForkやJoinの継承元となるVertex。特に状態は持たない。
Instance Method Summary collapse
- #activatable? ⇒ Boolean
- #activate(signal) ⇒ Object
- #reset(signal) ⇒ Object
- #transmit(signal) ⇒ Object
Instance Method Details
#activatable? ⇒ Boolean
19 20 21 |
# File 'lib/tengine/job/runtime/junction.rb', line 19 def activatable? prev_edges.all?(&:transmitted?) end |
#activate(signal) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/tengine/job/runtime/junction.rb', line 23 def activate(signal) Tengine.logger.debug "a" * 100 Tengine.logger.debug "#{__FILE__}##{__LINE__}" Tengine.logger.debug "#{object_id} #{inspect}" Tengine.logger.debug "#{signal.cache(parent).object_id} #{signal.cache(parent).inspect}" signal.leave(self) end |
#reset(signal) ⇒ Object
31 32 33 |
# File 'lib/tengine/job/runtime/junction.rb', line 31 def reset(signal) signal.leave(self, :reset) end |
#transmit(signal) ⇒ Object
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/tengine/job/runtime/junction.rb', line 8 def transmit(signal) complete_origin_edge(signal, :except_closed => true) # transmitted?で判断すると、closedなものに対する処理を考慮できないので、alive?を使って判断します # activate(signal) if prev_edges.all?(&:transmitted?) execution = signal.execution predicate = execution.retry ? :alive_or_closing_or_closed? : :alive_or_closing? unless signal.cache(prev_edges).any?(&predicate) activate(signal) end end |