summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-04-16 16:13:47 +0300
committerPaul Buetow <paul@buetow.org>2025-04-16 16:13:47 +0300
commit2c5499a26593d8e4fb80c4c8415d2bd1181b5eb1 (patch)
tree6ed8ac818fa438c566b69b003657fd7cdf7437ca
parent8373683c8fb16b7d26a9b4056eab4461f12c3e66 (diff)
refactor
-rw-r--r--internal/event/event.go88
-rw-r--r--internal/event/pair.go93
2 files changed, 93 insertions, 88 deletions
diff --git a/internal/event/event.go b/internal/event/event.go
index 24cf173..aa0e317 100644
--- a/internal/event/event.go
+++ b/internal/event/event.go
@@ -1,11 +1,7 @@
package event
import (
- "fmt"
- "ior/internal/file"
. "ior/internal/types"
- "strconv"
- "strings"
"sync"
)
@@ -21,87 +17,3 @@ type Event interface {
GetTime() uint64
Recycle()
}
-
-// Represents a pair of enter and exit events (e.g. entering the syscall + exiting it)
-type Pair struct {
- EnterEv, ExitEv Event
- File file.File
- Comm string
- Duration uint64
- DurationToPrev uint64
-}
-
-func NewPair(enterEv Event) *Pair {
- e := poolOfEventPairs.Get().(*Pair)
- e.EnterEv = enterEv
- return e
-}
-
-func (e *Pair) CalculateDurations(prevPairTime uint64) {
- e.Duration = e.ExitEv.GetTime() - e.EnterEv.GetTime()
- if prevPairTime > 0 {
- e.DurationToPrev = e.EnterEv.GetTime() - prevPairTime
- }
-}
-
-func (e *Pair) Is(id TraceId) bool {
- return e.EnterEv.GetTraceId() == id
-}
-
-const EventStreamHeader = "durationToPrevNs,durationNs,comm,pid.tid,name,ret,notice,file"
-
-func (e *Pair) String() string {
- var sb strings.Builder
-
- sb.WriteString(fmt.Sprintf("%08d,%08d", e.DurationToPrev, e.Duration))
-
- sb.WriteString(",")
- sb.WriteString(e.Comm)
-
- sb.WriteString("@")
- sb.WriteString(strconv.FormatInt(int64(e.EnterEv.GetPid()), 10))
- sb.WriteString(".")
- sb.WriteString(strconv.FormatInt(int64(e.EnterEv.GetTid()), 10))
-
- sb.WriteString(",")
- sb.WriteString(e.EnterEv.GetTraceId().Name())
-
- sb.WriteString("=>")
- if retEv, ok := e.ExitEv.(*RetEvent); ok {
- sb.WriteString(strconv.FormatInt(int64(retEv.Ret), 10))
- }
-
- sb.WriteString(",")
- if e.File == nil {
- sb.WriteString("N:file")
- } else {
- sb.WriteString(e.File.String())
- }
-
- return sb.String()
-}
-
-func (e *Pair) Flags() file.Flags {
- if e.File == nil {
- return file.Flags(0)
- }
- return e.File.Flags()
-}
-
-func (e *Pair) FileName() string {
- if e.File == nil {
- return "N:file"
- }
- return e.File.Name()
-}
-
-func (e *Pair) Dump() string {
- return fmt.Sprintf("%v with enterEv(%v) and exitEv(%v)", e, e.EnterEv, e.ExitEv)
-}
-
-func (e *Pair) Recycle() {
- e.EnterEv.Recycle()
- e.ExitEv.Recycle()
- e.DurationToPrev = 0
- poolOfEventPairs.Put(e)
-}
diff --git a/internal/event/pair.go b/internal/event/pair.go
new file mode 100644
index 0000000..13ad7e0
--- /dev/null
+++ b/internal/event/pair.go
@@ -0,0 +1,93 @@
+package event
+
+import (
+ "fmt"
+ "ior/internal/file"
+ "ior/internal/types"
+ "strconv"
+ "strings"
+)
+
+// Represents a pair of enter and exit events (e.g. entering the syscall + exiting it)
+type Pair struct {
+ EnterEv, ExitEv Event
+ File file.File
+ Comm string
+ Duration uint64
+ DurationToPrev uint64
+}
+
+func NewPair(enterEv Event) *Pair {
+ e := poolOfEventPairs.Get().(*Pair)
+ e.EnterEv = enterEv
+ return e
+}
+
+func (e *Pair) CalculateDurations(prevPairTime uint64) {
+ e.Duration = e.ExitEv.GetTime() - e.EnterEv.GetTime()
+ if prevPairTime > 0 {
+ e.DurationToPrev = e.EnterEv.GetTime() - prevPairTime
+ }
+}
+
+func (e *Pair) Is(id types.TraceId) bool {
+ return e.EnterEv.GetTraceId() == id
+}
+
+const EventStreamHeader = "durationToPrevNs,durationNs,comm,pid.tid,name,ret,notice,file"
+
+func (e *Pair) String() string {
+ var sb strings.Builder
+
+ sb.WriteString(fmt.Sprintf("%08d,%08d", e.DurationToPrev, e.Duration))
+
+ sb.WriteString(",")
+ sb.WriteString(e.Comm)
+
+ sb.WriteString("@")
+ sb.WriteString(strconv.FormatInt(int64(e.EnterEv.GetPid()), 10))
+ sb.WriteString(".")
+ sb.WriteString(strconv.FormatInt(int64(e.EnterEv.GetTid()), 10))
+
+ sb.WriteString(",")
+ sb.WriteString(e.EnterEv.GetTraceId().Name())
+
+ sb.WriteString("=>")
+ if retEv, ok := e.ExitEv.(*types.RetEvent); ok {
+ sb.WriteString(strconv.FormatInt(int64(retEv.Ret), 10))
+ }
+
+ sb.WriteString(",")
+ if e.File == nil {
+ sb.WriteString("N:file")
+ } else {
+ sb.WriteString(e.File.String())
+ }
+
+ return sb.String()
+}
+
+func (e *Pair) Flags() file.Flags {
+ if e.File == nil {
+ return file.Flags(0)
+ }
+ return e.File.Flags()
+}
+
+func (e *Pair) FileName() string {
+ if e.File == nil {
+ return "N:file"
+ }
+ return e.File.Name()
+}
+
+func (e *Pair) Dump() string {
+ return fmt.Sprintf("%v with enterEv(%v) and exitEv(%v)", e, e.EnterEv, e.ExitEv)
+}
+
+func (e *Pair) Recycle() {
+ e.EnterEv.Recycle()
+ e.ExitEv.Recycle()
+ e.DurationToPrev = 0
+ poolOfEventPairs.Put(e)
+}