MCPcopy
hub / github.com/puma/puma-dev / Watch

Function Watch

watch/watch_linux.go:9–42  ·  view source on GitHub ↗
(restart string, done <-chan struct{}, change func())

Source from the content-addressed store, hash-verified

7)
8
9func Watch(restart string, done <-chan struct{}, change func()) error {
10 lastStat, err := os.Stat(restart)
11 if err != nil {
12 return err
13 }
14
15 watcher, err := fsnotify.NewWatcher()
16 if err != nil {
17 return err
18 }
19
20 err = watcher.Add(restart)
21 if err != nil {
22 return err
23 }
24
25 defer watcher.Close()
26
27 for {
28 select {
29 case <-watcher.Events:
30 cur, err := os.Stat(restart)
31 if err != nil {
32 return err
33 }
34
35 if cur.ModTime().After(lastStat.ModTime()) {
36 change()
37 }
38 case <-done:
39 return nil
40 }
41 }
42}

Callers 1

watchTmpFileWithTimeoutFunction · 0.70

Calls 1

AddMethod · 0.80

Tested by 1

watchTmpFileWithTimeoutFunction · 0.56