summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-02-25 10:10:08 +0200
committerPaul Buetow <paul@buetow.org>2026-02-25 10:10:08 +0200
commit11ca5e1894d5823996b4c5214cb47f6652eadb1d (patch)
tree690ae77ab99970bcdce1fa80c3950467d03dd62d
parent0136c4528316d62810382d38bb007496cba97c24 (diff)
Decouple stream push from ingestion callback
-rw-r--r--internal/ior.go13
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)
}()