func()

in src/ulsp/controller/scip/scip.go [470:501]


func (c *controller) handleChanges(closer chan bool) {
	if c.watcher == nil {
		c.logger.Warn("File watcher unavailable, continuing without watching for changes")
		return
	}
	for {
		select {
		case event := <-c.watcher.Events:
			if !event.Has(fsnotify.Create) && !event.Has(fsnotify.Write) {
				continue
			}
			c.handleDebounce(event)

		case err := <-c.watcher.Errors:
			c.logger.Warnf("Failure in index change watcher: %v", err)
		case <-closer:
			// Cancel any pending debounce timers
			c.debounceMu.Lock()
			for _, timer := range c.debounceTimers {
				timer.Stop()
			}
			c.debounceTimers = make(map[string]*time.Timer)
			c.debounceMu.Unlock()

			err := c.watcher.Close()
			if err != nil {
				c.logger.Warnf("Failed to close index change watcher: %v", err)
			}
			return
		}
	}
}