func()

in pkg/filesystem/file_watcher.go [69:105]


func (f *FileWatcher) Watch(ctx context.Context) error {
	// Trigger initial file load
	f.queue.Add(workItemKey)

	var err error
	f.watcher, err = fsnotify.NewWatcher()
	if err != nil {
		return err
	}

	go wait.UntilWithContext(ctx, f.runWorker, workerPollInterval)

	// Start listening for events.
	go func() {
		for {
			select {
			case err := <-f.watcher.Errors:
				klog.ErrorS(err, "Error from watcher")
			case e := <-f.watcher.Events:
				klog.V(3).InfoS("Event received", "event", e)
				f.processEvent(e)
			case <-ctx.Done():
				klog.Info("context closed, stopping FileWatcher")
				f.watcher.Close()
				return
			}
		}
	}()

	dir := filepath.Dir(f.path)
	err = f.watcher.Add(dir)
	if err != nil {
		klog.Fatal(err)
	}

	return nil
}