| 123 | var reloadInterval = 15 * time.Second |
| 124 | |
| 125 | func (f *File) reloader() { |
| 126 | defer func() { |
| 127 | if err := recover(); err != nil { |
| 128 | stack := debug.Stack() |
| 129 | log.Printf("panic during m reload: %v\n%s", err, stack) |
| 130 | } |
| 131 | }() |
| 132 | |
| 133 | t := time.NewTicker(reloadInterval) |
| 134 | defer t.Stop() |
| 135 | |
| 136 | for { |
| 137 | select { |
| 138 | case <-t.C: |
| 139 | f.reload() |
| 140 | |
| 141 | case <-f.forceReload: |
| 142 | f.reload() |
| 143 | |
| 144 | case <-f.stopReloader: |
| 145 | f.stopReloader <- struct{}{} |
| 146 | return |
| 147 | } |
| 148 | } |
| 149 | } |
| 150 | |
| 151 | func (f *File) reload() { |
| 152 | info, err := os.Stat(f.file) |