Forge
csharpdeeb25a2
1using CascadeIDE.Cockpit.DataBus;
2
3namespace CascadeIDE.Features.Agent.Environment;
4
5/// <summary>Subscribes DataBus and feeds <see cref="AgentVerifyEpochInstrument"/>.</summary>
6public sealed class AgentVerifyEpochDataBusBridge : IDisposable
7{
8 private readonly AgentVerifyEpochInstrument _instrument;
9 private readonly IDisposable _composite;
10
11 public AgentVerifyEpochDataBusBridge(IDataBus dataBus, AgentVerifyEpochInstrument instrument)
12 {
13 _instrument = instrument;
14 _composite = new CompositeDisposable(
15 dataBus.Subscribe<AgentRunStarted>(_instrument.OnRunStarted),
16 dataBus.Subscribe<AgentEnvironmentTaskChanged>(_instrument.OnTaskChanged),
17 dataBus.Subscribe<AgentEnvironmentTaskCompleted>(_instrument.OnTaskCompleted),
18 dataBus.Subscribe<AgentEnvironmentTaskDied>(_instrument.OnTaskDied),
19 dataBus.Subscribe<AgentRunCompleted>(_instrument.OnRunCompleted),
20 dataBus.Subscribe<AgentVerifyEpochStale>(_instrument.OnEpochStale));
21 }
22
23 public void Dispose() => _composite.Dispose();
24
25 private sealed class CompositeDisposable : IDisposable
26 {
27 private readonly IDisposable[] _items;
28
29 public CompositeDisposable(params IDisposable[] items) => _items = items;
30
31 public void Dispose()
32 {
33 foreach (var item in _items)
34 item.Dispose();
35 }
36 }
37}
38
View only · write via MCP/CIDE