diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-01 23:51:33 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-01 23:51:33 +0200 |
| commit | 52cc7dc6ccdf2d97ea49d361299701cf6b76e898 (patch) | |
| tree | 25d46960e74d1df57c846330669c91090022cbfc | |
| parent | 261aefd34bde83d75fa19aedb9ec99193c1c7fbb (diff) | |
Use print callback for all event loop output modes
| -rw-r--r-- | internal/eventloop.go | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/internal/eventloop.go b/internal/eventloop.go index 536fe0a..a33ebbb 100644 --- a/internal/eventloop.go +++ b/internal/eventloop.go @@ -210,6 +210,7 @@ func newEventLoop(cfg eventLoopConfig) *eventLoop { if cfg.liveFlamegraph { el.liveTrie = flamegraph.NewLiveTrie(cfg.collapsedFields, cfg.countField) } + el.configureOutputCallback() el.seedTrackedPidComm() return el } @@ -238,6 +239,23 @@ func (e *eventLoop) commState() *commResolver { return e.commResolver } +func (e *eventLoop) configureOutputCallback() { + switch { + case e.cfg.flamegraphEnable: + e.printCb = func(ep *event.Pair) { + e.flamegraph.Ch <- ep + } + case e.liveTrie != nil: + e.printCb = func(ep *event.Pair) { + e.liveTrie.Ingest(ep) + } + case e.cfg.pprofEnable: + e.printCb = func(ep *event.Pair) { + ep.Recycle() + } + } +} + func (e *eventLoop) stats() string { fmt.Println("Waiting for stats to be ready") <-e.done @@ -282,17 +300,11 @@ func (e *eventLoop) run(ctx context.Context, rawCh <-chan []byte) { } e.startTime = time.Now() + if e.printCb == nil { + e.printCb = func(ep *event.Pair) { ep.Recycle() } + } for ep := range e.events(ctx, rawCh) { - switch { - case e.cfg.flamegraphEnable: - e.flamegraph.Ch <- ep - case e.liveTrie != nil: - e.liveTrie.Ingest(ep) - case e.cfg.pprofEnable: - ep.Recycle() - default: - e.printCb(ep) - } + e.printCb(ep) e.numSyscallsAfterFilter++ } |
