summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-02-29 20:50:05 +0200
committerPaul Buetow <paul@buetow.org>2024-02-29 20:50:05 +0200
commitbbbd2c5e367b9da5c7bc2661ecce2cad27189d9f (patch)
tree952d29aa0be2a30cc3017754a9133498046b7f50
parentf4549a9f22cf14713b2d74cf4d95a17565a5bf67 (diff)
refactor
-rw-r--r--internal/eventloop.go49
1 files changed, 27 insertions, 22 deletions
diff --git a/internal/eventloop.go b/internal/eventloop.go
index 120a327..765345d 100644
--- a/internal/eventloop.go
+++ b/internal/eventloop.go
@@ -19,9 +19,9 @@ func (o openFile) String() string {
return fmt.Sprintf("(%d) %s", o.fd, o.path)
}
-func eventLoop(bpfModule *bpf.Module, ch <-chan []byte) {
- enterEvs := make(map[uint32]enterExitEvent)
+func events(rawCh <-chan []byte) <-chan enterExitEvent {
evCh := make(chan enterExitEvent)
+ enterEvs := make(map[uint32]enterExitEvent)
enter := func(enterEv event) {
enterEvs[enterEv.GetTid()] = enterExitEvent{
@@ -41,29 +41,34 @@ func eventLoop(bpfModule *bpf.Module, ch <-chan []byte) {
}
go func() {
- for ev := range evCh {
- fmt.Println(ev.dump())
- ev.recycle()
+ defer close(evCh)
+ for raw := range rawCh {
+ switch EventType(raw[0]) {
+ case ENTER_OPEN_EVENT:
+ enter(NewOpenEnterEvent(raw))
+ case EXIT_OPEN_EVENT:
+ exit(NewFdEvent(raw))
+ case ENTER_FD_EVENT:
+ enter(NewFdEvent(raw))
+ case EXIT_FD_EVENT:
+ exit(NewFdEvent(raw))
+ case EXIT_NULL_EVENT:
+ exit(NewNullEvent(raw))
+ case EXIT_RET_EVENT:
+ exit(NewRetEvent(raw))
+ default:
+ panic(fmt.Sprintf("Unhandled event type %s", EventType(raw[0])))
+ }
}
}()
- for raw := range ch {
- switch EventType(raw[0]) {
- case ENTER_OPEN_EVENT:
- enter(NewOpenEnterEvent(raw))
- case EXIT_OPEN_EVENT:
- exit(NewFdEvent(raw))
- case ENTER_FD_EVENT:
- enter(NewFdEvent(raw))
- case EXIT_FD_EVENT:
- exit(NewFdEvent(raw))
- case EXIT_NULL_EVENT:
- exit(NewNullEvent(raw))
- case EXIT_RET_EVENT:
- exit(NewRetEvent(raw))
- default:
- panic(fmt.Sprintf("Unhandled event type %s", EventType(raw[0])))
- }
+ return evCh
+}
+
+func eventLoop(bpfModule *bpf.Module, rawCh <-chan []byte) {
+ for ev := range events(rawCh) {
+ fmt.Println(ev.dump())
+ ev.recycle()
}
fmt.Println("Good bye")