123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // Copyright 2012 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- // +build !plan9
- // Package fsnotify provides a platform-independent interface for file system notifications.
- package fsnotify
- import (
- "bytes"
- "errors"
- "fmt"
- )
- // Event represents a single file system notification.
- type Event struct {
- Name string // Relative path to the file or directory.
- Op Op // File operation that triggered the event.
- }
- // Op describes a set of file operations.
- type Op uint32
- // These are the generalized file operations that can trigger a notification.
- const (
- Create Op = 1 << iota
- Write
- Remove
- Rename
- Chmod
- )
- func (op Op) String() string {
- // Use a buffer for efficient string concatenation
- var buffer bytes.Buffer
- if op&Create == Create {
- buffer.WriteString("|CREATE")
- }
- if op&Remove == Remove {
- buffer.WriteString("|REMOVE")
- }
- if op&Write == Write {
- buffer.WriteString("|WRITE")
- }
- if op&Rename == Rename {
- buffer.WriteString("|RENAME")
- }
- if op&Chmod == Chmod {
- buffer.WriteString("|CHMOD")
- }
- if buffer.Len() == 0 {
- return ""
- }
- return buffer.String()[1:] // Strip leading pipe
- }
- // String returns a string representation of the event in the form
- // "file: REMOVE|WRITE|..."
- func (e Event) String() string {
- return fmt.Sprintf("%q: %s", e.Name, e.Op.String())
- }
- // Common errors that can be reported by a watcher
- var ErrEventOverflow = errors.New("fsnotify queue overflow")
|