5 NNCP -- Node to Node copy, utilities for store-and-forward data exchange
6 Copyright (C) 2016-2022 Sergey Matveev <stargrave@stargrave.org>
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, version 3 of the License.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>.
27 "github.com/fsnotify/fsnotify"
30 type DirWatcher struct {
36 func (ctx *Ctx) NewDirWatcher(dir string, d time.Duration) (*DirWatcher, error) {
37 w, err := fsnotify.NewWatcher()
52 C: make(chan struct{}),
53 isDead: make(chan struct{}),
56 ticker := time.NewTicker(d)
61 case err := <-w.Errors:
62 ctx.LogE("dir-watch", LEs{{"Dir", dir}}, err, func(les LEs) string {
63 return "fsnotify error: " + err.Error()
66 ctx.LogD("dir-watch-event", LEs{{"Dir", dir}}, func(les LEs) string {
67 return fmt.Sprintf("fsnotify event: %v", e)
69 if e.Op&(fsnotify.Create|fsnotify.Rename) > 0 {
88 func (dw *DirWatcher) Close() {