diff options
| author | Paul Buetow <paul@buetow.org> | 2026-02-25 10:10:08 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-02-25 10:10:08 +0200 |
| commit | 11ca5e1894d5823996b4c5214cb47f6652eadb1d (patch) | |
| tree | 690ae77ab99970bcdce1fa80c3950467d03dd62d | |
| parent | 0136c4528316d62810382d38bb007496cba97c24 (diff) | |
Decouple stream push from ingestion callback
| -rw-r--r-- | internal/ior.go | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/internal/ior.go b/internal/ior.go index da5d6db..7a1b378 100644 --- a/internal/ior.go +++ b/internal/ior.go @@ -146,18 +146,27 @@ func tuiTraceStarterFromRunTrace( streamBuf := eventstream.NewRingBuffer() tui.SetDashboardSnapshotSource(engine) tui.SetEventStreamSource(streamBuf) + streamEvents := make(chan eventstream.StreamEvent, 4096) + + go func() { + for ev := range streamEvents { + streamBuf.Push(ev) + } + }() startedCh := make(chan struct{}) errCh := make(chan error, 1) go func() { - errCh <- startTrace(ctx, startedCh, func(el *eventLoop) { + err := startTrace(ctx, startedCh, func(el *eventLoop) { el.printCb = func(ep *event.Pair) { engine.Ingest(ep) - streamBuf.Push(eventstream.NewStreamEvent(ep.EnterEv.GetTime(), ep)) + streamEvents <- eventstream.NewStreamEvent(ep.EnterEv.GetTime(), ep) ep.Recycle() } }) + close(streamEvents) + errCh <- err close(errCh) }() |
