diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-11-20 09:32:16 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-11-20 09:32:16 +0100 |
commit | caf16c20853947138883f6460682e19733895f52 (patch) | |
tree | 25a4416547099f2189f390d523e2292f4ad1ae01 /watcher/batcher.go | |
parent | b298c06e0551e3eba10b39ae5668b7a6a36a08a7 (diff) |
docs: Regenerate docshelper
Diffstat (limited to 'watcher/batcher.go')
-rw-r--r-- | watcher/batcher.go | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/watcher/batcher.go b/watcher/batcher.go deleted file mode 100644 index 6f4b276cf..000000000 --- a/watcher/batcher.go +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2015 The Hugo Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package watcher - -import ( - "time" - - "github.com/fsnotify/fsnotify" -) - -// Batcher batches file watch events in a given interval. -type Batcher struct { - *fsnotify.Watcher - interval time.Duration - done chan struct{} - - Events chan []fsnotify.Event // Events are returned on this channel -} - -// New creates and starts a Batcher with the given time interval. -func New(interval time.Duration) (*Batcher, error) { - watcher, err := fsnotify.NewWatcher() - - batcher := &Batcher{} - batcher.Watcher = watcher - batcher.interval = interval - batcher.done = make(chan struct{}, 1) - batcher.Events = make(chan []fsnotify.Event, 1) - - if err == nil { - go batcher.run() - } - - return batcher, err -} - -func (b *Batcher) run() { - tick := time.Tick(b.interval) - evs := make([]fsnotify.Event, 0) -OuterLoop: - for { - select { - case ev := <-b.Watcher.Events: - evs = append(evs, ev) - case <-tick: - if len(evs) == 0 { - continue - } - b.Events <- evs - evs = make([]fsnotify.Event, 0) - case <-b.done: - break OuterLoop - } - } - close(b.done) -} - -// Close stops the watching of the files. -func (b *Batcher) Close() { - b.done <- struct{}{} - b.Watcher.Close() -} |