From 1d72e80ed340564c6c2d37366e20896aa00341e2 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 6 Mar 2026 16:38:41 +0200 Subject: refactor: use interfaces for TUI runtime binding sources (task 382) --- internal/tui/eventstream/model.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'internal/tui/eventstream') diff --git a/internal/tui/eventstream/model.go b/internal/tui/eventstream/model.go index 3e31203..12aff4d 100644 --- a/internal/tui/eventstream/model.go +++ b/internal/tui/eventstream/model.go @@ -24,8 +24,14 @@ const ( streamColumnCount ) +// Source is the minimal stream buffer contract needed by the stream model. +type Source interface { + Len() int + Snapshot() []StreamEvent +} + type Model struct { - source *RingBuffer + source Source allEvents []StreamEvent filtered []StreamEvent @@ -71,7 +77,7 @@ type fdTraceViewState struct { offset int } -func NewModel(source *RingBuffer) Model { +func NewModel(source Source) Model { m := Model{ source: source, filterModal: NewFilterModal(), @@ -122,7 +128,7 @@ func (m *Model) SetFooterVisible(visible bool) { } // SetSource updates the backing ring buffer and refreshes visible rows. -func (m *Model) SetSource(source *RingBuffer) { +func (m *Model) SetSource(source Source) { m.source = source m.Refresh() } -- cgit v1.2.3