diff options
| -rw-r--r-- | internal/ioriotng.go | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/internal/ioriotng.go b/internal/ioriotng.go index 1536806..047cf2f 100644 --- a/internal/ioriotng.go +++ b/internal/ioriotng.go @@ -62,16 +62,10 @@ func Run(flags flags.Flags) { for raw := range ch { switch types.OpId(raw[0]) { case types.OPENAT_ENTER_OP_ID: - ev := types.OpenEnterEventPool.Get().(*types.OpenatEnterEvent) - if err := binary.Read(bytes.NewReader(raw), binary.LittleEndian, ev); err != nil { - panic(err) - } + ev := readRaw(raw, types.OpenEnterEventPool.Get().(*types.OpenatEnterEvent)) enterOpen[ev.Tid] = ev case types.OPENAT_EXIT_OP_ID: - ev := types.FdEventPool.Get().(*types.FdEvent) - if err := binary.Read(bytes.NewReader(raw), binary.LittleEndian, ev); err != nil { - panic(err) - } + ev := readRaw(raw, types.FdEventPool.Get().(*types.FdEvent)) enterEv, ok := enterOpen[ev.Tid] if !ok { fmt.Println("Dropping", ev) @@ -83,16 +77,10 @@ func Run(flags flags.Flags) { types.FdEventPool.Put(ev) types.OpenEnterEventPool.Put(enterEv) case types.CLOSE_ENTER_OP_ID: - ev := types.FdEventPool.Get().(*types.FdEvent) - if err := binary.Read(bytes.NewReader(raw), binary.LittleEndian, ev); err != nil { - panic(err) - } + ev := readRaw(raw, types.FdEventPool.Get().(*types.FdEvent)) enterFd[ev.Tid] = ev case types.CLOSE_EXIT_OP_ID: - ev := types.NullEventPool.Get().(*types.NullEvent) - if err := binary.Read(bytes.NewReader(raw), binary.LittleEndian, ev); err != nil { - panic(err) - } + ev := readRaw(raw, types.NullEventPool.Get().(*types.NullEvent)) enterEv, ok := enterFd[ev.Tid] if !ok { fmt.Println("Dropping", ev) @@ -111,6 +99,13 @@ func Run(flags flags.Flags) { fmt.Println("Good bye") } +func readRaw[T any](raw []byte, ev *T) *T { + if err := binary.Read(bytes.NewReader(raw), binary.LittleEndian, ev); err != nil { + panic(err) + } + return ev +} + func ksymArch() string { switch runtime.GOARCH { case "amd64": |
