diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-12 23:33:15 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-12 23:33:15 +0200 |
| commit | 775d3e59c7a6c060d0a9ecf3536c0df383d241be (patch) | |
| tree | 981a6550849039ef4c443dce38a05829b79a11df /internal/tui/eventstream | |
| parent | 2efe5330cb43f685f3159a28ce211392a0bbe3c3 (diff) | |
refactor: extract shared syscall stream row model
Diffstat (limited to 'internal/tui/eventstream')
| -rw-r--r-- | internal/tui/eventstream/streamevent.go | 107 | ||||
| -rw-r--r-- | internal/tui/eventstream/streamevent_test.go | 6 |
2 files changed, 13 insertions, 100 deletions
diff --git a/internal/tui/eventstream/streamevent.go b/internal/tui/eventstream/streamevent.go index 9238a84..241b984 100644 --- a/internal/tui/eventstream/streamevent.go +++ b/internal/tui/eventstream/streamevent.go @@ -1,112 +1,25 @@ package eventstream import ( - "time" - "ior/internal/event" - "ior/internal/types" + "ior/internal/streamrow" ) -type StreamEvent struct { - Seq uint64 - TimeNs uint64 - Syscall string - Comm string - PID uint32 - TID uint32 - FileName string - DurationNs uint64 - GapNs uint64 - Bytes uint64 - RetVal int64 - IsError bool - FD int32 -} - -func (e StreamEvent) SyscallValue() string { - return e.Syscall -} - -func (e StreamEvent) CommValue() string { - return e.Comm -} - -func (e StreamEvent) FileValue() string { - return e.FileName -} - -func (e StreamEvent) PIDValue() uint32 { - return e.PID -} - -func (e StreamEvent) TIDValue() uint32 { - return e.TID -} - -func (e StreamEvent) FDValue() int32 { - return e.FD -} - -func (e StreamEvent) LatencyValue() uint64 { - return e.DurationNs -} - -func (e StreamEvent) GapValue() uint64 { - return e.GapNs -} - -func (e StreamEvent) BytesValue() uint64 { - return e.Bytes -} +type StreamEvent = streamrow.Row +type Sequencer = streamrow.Sequencer -func (e StreamEvent) ReturnValue() int64 { - return e.RetVal -} +// UnknownFD marks events that are not associated with a file descriptor. +const UnknownFD = streamrow.UnknownFD -func (e StreamEvent) ErrorValue() bool { - return e.IsError +func NewSequencer(start uint64) *Sequencer { + return streamrow.NewSequencer(start) } -// UnknownFD marks events that are not associated with a file descriptor. -const UnknownFD int32 = -1 - func NewStreamEvent(seq uint64, pair *event.Pair) StreamEvent { - e := StreamEvent{ - Seq: seq, - TimeNs: pair.EnterEv.GetTime(), - Syscall: pair.EnterEv.GetTraceId().Name(), - Comm: pair.Comm, - PID: pair.EnterEv.GetPid(), - TID: pair.EnterEv.GetTid(), - FileName: pair.FileName(), - DurationNs: pair.Duration, - GapNs: pair.DurationToPrev, - Bytes: pair.Bytes, - FD: UnknownFD, - } - if fd, ok := pair.FileDescriptor(); ok { - e.FD = fd - } - - if retEv, ok := pair.ExitEv.(*types.RetEvent); ok { - e.RetVal = retEv.Ret - e.IsError = retEv.Ret < 0 - } - - return e + return streamrow.New(seq, pair) } // NewWarningEvent creates a synthetic stream row for non-fatal runtime warnings. -func NewWarningEvent(message string) StreamEvent { - now := uint64(time.Now().UnixNano()) - return StreamEvent{ - Seq: now, - TimeNs: now, - Syscall: "warning", - Comm: "ior", - FileName: message, - FD: UnknownFD, - RetVal: -1, - IsError: true, - } +func NewWarningEvent(seq uint64, message string) StreamEvent { + return streamrow.NewWarning(seq, message) } diff --git a/internal/tui/eventstream/streamevent_test.go b/internal/tui/eventstream/streamevent_test.go index dd65dd1..a1df8a1 100644 --- a/internal/tui/eventstream/streamevent_test.go +++ b/internal/tui/eventstream/streamevent_test.go @@ -97,7 +97,7 @@ func TestNewStreamEventWithoutRetEvent(t *testing.T) { } func TestNewWarningEventPopulatesFields(t *testing.T) { - got := NewWarningEvent("Dropped malformed event") + got := NewWarningEvent(7, "Dropped malformed event") if got.Syscall != "warning" { t.Fatalf("Syscall = %q, want warning", got.Syscall) @@ -117,7 +117,7 @@ func TestNewWarningEventPopulatesFields(t *testing.T) { if !got.IsError { t.Fatalf("IsError = false, want true") } - if got.Seq == 0 || got.TimeNs == 0 { - t.Fatalf("Seq/TimeNs = %d/%d, want non-zero", got.Seq, got.TimeNs) + if got.Seq != 7 || got.TimeNs == 0 { + t.Fatalf("Seq/TimeNs = %d/%d, want 7/non-zero", got.Seq, got.TimeNs) } } |
