Skip to content

Commit 6a46df2

Browse files
committed
v2: manager: factor out memory.events parsing
This makes waitForEvents() more shorter and more readable. Signed-off-by: Jeremi Piotrowski <[email protected]>
1 parent 35b5b55 commit 6a46df2

1 file changed

Lines changed: 39 additions & 35 deletions

File tree

v2/manager.go

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,41 @@ func (c *Manager) EventChan() (<-chan Event, <-chan error) {
606606
return ec, errCh
607607
}
608608

609+
func parseMemoryEvents(out map[string]interface{}) (Event, error) {
610+
e := Event{}
611+
if v, ok := out["high"]; ok {
612+
e.High, ok = v.(uint64)
613+
if !ok {
614+
return Event{}, fmt.Errorf("cannot convert high to uint64: %+v", v)
615+
}
616+
}
617+
if v, ok := out["low"]; ok {
618+
e.Low, ok = v.(uint64)
619+
if !ok {
620+
return Event{}, fmt.Errorf("cannot convert low to uint64: %+v", v)
621+
}
622+
}
623+
if v, ok := out["max"]; ok {
624+
e.Max, ok = v.(uint64)
625+
if !ok {
626+
return Event{}, fmt.Errorf("cannot convert max to uint64: %+v", v)
627+
}
628+
}
629+
if v, ok := out["oom"]; ok {
630+
e.OOM, ok = v.(uint64)
631+
if !ok {
632+
return Event{}, fmt.Errorf("cannot convert oom to uint64: %+v", v)
633+
}
634+
}
635+
if v, ok := out["oom_kill"]; ok {
636+
e.OOMKill, ok = v.(uint64)
637+
if !ok {
638+
return Event{}, fmt.Errorf("cannot convert oom_kill to uint64: %+v", v)
639+
}
640+
}
641+
return e, nil
642+
}
643+
609644
func (c *Manager) waitForEvents(ec chan<- Event, errCh chan<- error) {
610645
defer close(errCh)
611646

@@ -626,41 +661,10 @@ func (c *Manager) waitForEvents(ec chan<- Event, errCh chan<- error) {
626661
if bytesRead >= syscall.SizeofInotifyEvent {
627662
out := make(map[string]interface{})
628663
if err := readKVStatsFile(c.path, "memory.events", out); err == nil {
629-
e := Event{}
630-
if v, ok := out["high"]; ok {
631-
e.High, ok = v.(uint64)
632-
if !ok {
633-
errCh <- fmt.Errorf("cannot convert high to uint64: %+v", v)
634-
return
635-
}
636-
}
637-
if v, ok := out["low"]; ok {
638-
e.Low, ok = v.(uint64)
639-
if !ok {
640-
errCh <- fmt.Errorf("cannot convert low to uint64: %+v", v)
641-
return
642-
}
643-
}
644-
if v, ok := out["max"]; ok {
645-
e.Max, ok = v.(uint64)
646-
if !ok {
647-
errCh <- fmt.Errorf("cannot convert max to uint64: %+v", v)
648-
return
649-
}
650-
}
651-
if v, ok := out["oom"]; ok {
652-
e.OOM, ok = v.(uint64)
653-
if !ok {
654-
errCh <- fmt.Errorf("cannot convert oom to uint64: %+v", v)
655-
return
656-
}
657-
}
658-
if v, ok := out["oom_kill"]; ok {
659-
e.OOMKill, ok = v.(uint64)
660-
if !ok {
661-
errCh <- fmt.Errorf("cannot convert oom_kill to uint64: %+v", v)
662-
return
663-
}
664+
e, err := parseMemoryEvents(out)
665+
if err != nil {
666+
errCh <- err
667+
return
664668
}
665669
ec <- e
666670
} else {

0 commit comments

Comments
 (0)