Class: Space::Architect::Research::Mux
- Inherits:
-
Object
- Object
- Space::Architect::Research::Mux
- Defined in:
- lib/space_architect/research/mux.rb
Overview
Async multiplexer: one fiber per in-flight run, each tailing its run.jsonl. Uses socketry/async fibers — NEVER threads.
Constant Summary collapse
- POLL_INTERVAL =
seconds between read attempts
0.15- HEARTBEAT_EVERY =
seconds of silence before heartbeat
30- FILE_WAIT_LIMIT =
seconds to wait for run.jsonl to appear
10
Instance Method Summary collapse
-
#initialize(runs, renderer:, out: $stdout) ⇒ Mux
constructor
A new instance of Mux.
-
#run ⇒ Object
Returns :ok or :failed.
Constructor Details
#initialize(runs, renderer:, out: $stdout) ⇒ Mux
Returns a new instance of Mux.
14 15 16 17 18 |
# File 'lib/space_architect/research/mux.rb', line 14 def initialize(runs, renderer:, out: $stdout) @runs = runs @renderer = renderer @out = out end |
Instance Method Details
#run ⇒ Object
Returns :ok or :failed
21 22 23 24 25 26 27 28 29 30 |
# File 'lib/space_architect/research/mux.rb', line 21 def run results = Sync do tasks = @runs.map do |run| Async { tail_run(run) } end tasks.map(&:wait) end results.all? { |r| r == :ok } ? :ok : :failed end |