in pkg/process/finders/storage.go [89:123]
func (s *ProcessStorage) StartReport() {
// for report all processes
go func() {
timeTicker := time.NewTicker(s.reportInterval)
for {
select {
case <-timeTicker.C:
if err := s.reportAllProcesses(); err != nil {
log.Errorf("report all processes error: %v", err)
}
case <-s.ctx.Done():
timeTicker.Stop()
return
}
}
}()
// for start listener
go func() {
timeTicker := time.NewTicker(s.listenerRecheckInterval)
for {
select {
case <-timeTicker.C:
s.notifyToRecheckAllProcesses(s.listeners)
case e := <-s.eventQueue:
s.consumeProcessEvent(s.listeners, e)
case l := <-s.initListenQueue:
s.notifyToRecheckAllProcesses([]api.ProcessListener{l})
case <-s.ctx.Done():
timeTicker.Stop()
return
}
}
}()
}