in tools/health-monitor/monitor/file_cache/cache_monitor.go [107:181]
func (fc *FileCache) cacheWatcher() error {
fc.cacheObj.fileCreatedMap = make(map[string]int64)
fc.cacheObj.fileRemovedMap = make(map[string]int64)
w := watcher.New()
// ignore hidden files
w.IgnoreHiddenFiles(true)
go func() {
for {
select {
case event := <-w.Event:
err := hmcommon.CheckProcessStatus(hmcommon.Pid)
if err != nil {
log.Err("cache_monitor::cacheWatcher : [%v]", err)
return
}
if strings.ToUpper(event.Op.String()) == create {
fc.createEvent(&event)
} else if strings.ToUpper(event.Op.String()) == remove {
fc.removeEvent(&event)
} else if strings.ToUpper(event.Op.String()) == chmod {
fc.chmodEvent(&event)
} else if strings.ToUpper(event.Op.String()) == write {
fc.writeEvent(&event)
} else if strings.ToUpper(event.Op.String()) == rename {
fc.renameEvent(&event)
} else if strings.ToUpper(event.Op.String()) == move {
fc.moveEvent(&event)
}
case err := <-w.Error:
log.Err("cache_monitor::cache_watcher : [%v]", err)
return
case <-w.Closed:
return
}
}
}()
// watch file cache directory for changes
if err := w.Add(fc.tmpPath); err != nil {
log.Err("cache_monitor::cacheWatcher : [%v]", err)
return err
}
// set recursive watcher on file cache directory
if err := w.AddRecursive(fc.tmpPath); err != nil {
log.Err("cache_monitor::cacheWatcher : [%v]", err)
return err
}
// list of all of the files and folders currently being watched
for path := range w.WatchedFiles() {
log.Debug("cache_monitor::cacheWatcher : Watching %v", path)
}
// Start the watching process - it'll check for changes every 100ms
if err := w.Start(time.Millisecond * 100); err != nil {
log.Err("cache_monitor::cacheWatcher : [%v]", err)
return err
}
return nil
}