本文整理汇总了Golang中github.com/howeyc/fsnotify.FileEvent.IsDelete方法的典型用法代码示例。如果您正苦于以下问题:Golang FileEvent.IsDelete方法的具体用法?Golang FileEvent.IsDelete怎么用?Golang FileEvent.IsDelete使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/howeyc/fsnotify.FileEvent
的用法示例。
在下文中一共展示了FileEvent.IsDelete方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: handleChange
func handleChange(channel *amqp.Channel, ev *fsnotify.FileEvent) error {
// check to see if the file is locked. If it is then break
path, _ := filepath.Rel(rootDir, ev.Name)
if FileIsLocked(path) {
return nil
}
log.Printf("PUBLISHER: publishing %dB path (%q)", len(path), path)
var change = &Change{
IsCreate: ev.IsCreate(),
IsDelete: ev.IsDelete(),
IsMod: ev.IsModify(),
IsMove: ev.IsRename(),
ModDate: time.Now().UTC(),
Path: path,
Source: hostname,
Checksum: Checksum(ev.Name),
}
msg, err := json.Marshal(change)
if err != nil {
log.Fatalf("ERROR marshaling msg %s", change)
}
if err := channel.Publish(
"changes", // publish to an exchange
"", // routing to 0 or more queues
false, // mandatory
false, // immediate
amqp.Publishing{
Headers: amqp.Table{},
ContentType: "application/json",
ContentEncoding: "",
Body: msg,
DeliveryMode: amqp.Transient, // 1=non-persistent, 2=persistent
Priority: 0, // 0-9
// a bunch of application/implementation-specific fields
/*
ContentType string // MIME content type
ContentEncoding string // MIME content encoding
DeliveryMode uint8 // Transient (0 or 1) or Persistent (2)
Priority uint8 // 0 to 9
CorrelationId string // correlation identifier
ReplyTo string // address to to reply to (ex: RPC)
Expiration string // message expiration spec
MessageId string // message identifier
Timestamp time.Time // message timestamp
Type string // message type name
UserId string // creating user id - ex: "guest"
AppId string // creating application id
*/
},
); err != nil {
log.Fatalf("Exchange Publish: %s", err)
panic(err)
}
return nil
}
示例2: Handle
// Listen for FS events and signal work when something changes.
// Will send errors over e.
func (w *Watcher) Handle(work chan bool, e chan error) {
var (
evt *fsnotify.FileEvent
err error
)
for {
select {
case evt = <-w.watcher.Event:
w.gw.log.Printf("Filesystem changed: %v\n", evt.String())
isNewDir := evt.IsCreate() && w.gw.isDir(evt.Name)
if isNewDir || evt.IsDelete() || evt.IsRename() {
err = w.WatchDirs()
if err != nil {
e <- err
return
}
}
select {
case work <- true:
// gw.log.Printf("Work queued\n")
// Queued work.
default:
// gw.log.Printf("Work queue full\n")
// Work queue full, no worries.
}
case err = <-w.watcher.Error:
e <- err
return
}
}
}
示例3: ChangeEvents
func (fw *InotifyFileWatcher) ChangeEvents(t tomb.Tomb, fi os.FileInfo) chan bool {
w, err := fsnotify.NewWatcher()
if err != nil {
panic(err)
}
err = w.Watch(fw.Filename)
if err != nil {
panic(err)
}
ch := make(chan bool)
fw.Size = fi.Size()
go func() {
defer w.Close()
defer w.RemoveWatch(fw.Filename)
defer close(ch)
for {
prevSize := fw.Size
var evt *fsnotify.FileEvent
select {
case evt = <-w.Event:
case <-t.Dying():
return
}
switch {
case evt.IsDelete():
fallthrough
case evt.IsRename():
return
case evt.IsModify():
fi, err := os.Stat(fw.Filename)
if err != nil {
// XXX: no panic here
panic(err)
}
fw.Size = fi.Size()
if prevSize > 0 && prevSize > fw.Size {
return
}
// send only if channel is empty.
select {
case ch <- true:
default:
}
}
}
}()
return ch
}
示例4: handleEvent
func (t *Theme) handleEvent(ev *fsnotify.FileEvent) {
if ev == nil {
return
}
if ok, _ := regexp.MatchString(`\.swa?px?$`, ev.Name); ok {
return
}
if ev.IsDelete() {
t.watcher.ResetFileListWatch()
return
}
info, err := getThemeInfoFromFile(path.Join(t.filePath, "theme.ini"))
if err != nil {
return
}
if isThemeInfoSame(t, &info) {
return
}
t.setPropsFromFile()
t.setPropPreview(t.getPreviewList())
if t.eventHandler != nil {
//apply the change
t.eventHandler(t.Name)
}
}
示例5: processTemplateEvent
func (t *templateManager) processTemplateEvent(ev *fsnotify.FileEvent) {
ext := strings.ToLower(filepath.Ext(ev.Name))
switch ext {
case ".gohtml":
case ".tmpl":
default:
t.brog.Debug("Templates ignore files in '%s': %s", ext, ev.Name)
return
}
if ev.IsCreate() {
// Nothing to do, all usefull templates files MUST exist at this
// time or brog would not have started.
return
}
if ev.IsModify() {
t.processTemplateModify(ev)
return
}
if ev.IsRename() || ev.IsDelete() {
t.processTemplateDelete(ev)
return
}
t.brog.Err("FileEvent '%s' is not recognized", ev.String())
}
示例6: processSubdir
func processSubdir(watcher *fsnotify.Watcher, ev *fsnotify.FileEvent) {
if ev.IsModify() {
return
}
if ev.IsDelete() {
log.Println("remove watch", ev.Name)
// FIXME: what to do with err?
watcher.RemoveWatch(ev.Name)
return
}
// FIXME: Lstat or Stat?
// TODO: what to do with err? can we safely ignore?
mode, err := os.Lstat(ev.Name)
if err != nil {
log.Println("error processing subdir:", err.Error())
return
}
if !mode.IsDir() {
return
}
// FIXME: handle renames
if ev.IsCreate() {
log.Println("add watch", ev.Name)
// FIXME: what to do with err?
watcher.Watch(ev.Name)
}
}
示例7: handlecb
func (this *Watcher) handlecb(v *triggered, ev *fsnotify.FileEvent) {
if !v.canrun() {
return
}
defer v.setLastUpdate()
// in windows some events are sent 3 times
c := time.Tick(g_cooldown)
<-c
var t EvType
// execute
if ev.IsModify() {
t = C_Modify
} else if ev.IsCreate() {
t = C_Create
} else if ev.IsDelete() {
t = C_Delete
} else if ev.IsRename() {
t = C_Rename
} else if ev.IsAttrib() {
t = C_Attrib
} else {
fmt.Fprintln(os.Stderr, "unknown event")
return
}
this.cb(&WatchEvent{
Type: t,
Fpath: ev.Name,
})
}
示例8: processPostEvent
func (p *postManager) processPostEvent(ev *fsnotify.FileEvent) {
ext := strings.ToLower(filepath.Ext(ev.Name))
switch ext {
case p.brog.Config.PostFileExt:
case ".md":
case ".markdown":
case ".mkd":
default:
p.brog.Debug("Posts ignore files in '%s': %s", ext, ev.Name)
return
}
if ev.IsCreate() {
p.processPostCreate(ev)
return
}
if ev.IsModify() {
p.processPostModify(ev)
return
}
if ev.IsRename() {
p.processPostRename(ev)
return
}
if ev.IsDelete() {
p.processPostDelete(ev)
return
}
p.brog.Err("FileEvent '%s' is not recognized", ev.String())
}
示例9: ChangeEvents
func (fw *InotifyFileWatcher) ChangeEvents(t tomb.Tomb, fi os.FileInfo) *FileChanges {
changes := NewFileChanges()
w, err := fsnotify.NewWatcher()
if err != nil {
panic(err)
}
err = w.Watch(fw.Filename)
if err != nil {
panic(err)
}
fw.Size = fi.Size()
go func() {
defer w.Close()
defer w.RemoveWatch(fw.Filename)
defer changes.Close()
for {
prevSize := fw.Size
var evt *fsnotify.FileEvent
select {
case evt = <-w.Event:
case <-t.Dying():
return
}
switch {
case evt.IsDelete():
fallthrough
case evt.IsRename():
changes.NotifyDeleted()
return
case evt.IsModify():
fi, err := os.Stat(fw.Filename)
if err != nil {
// XXX: no panic here
panic(err)
}
fw.Size = fi.Size()
if prevSize > 0 && prevSize > fw.Size {
changes.NotifyTruncated()
} else {
changes.NotifyModified()
}
prevSize = fw.Size
}
}
}()
return changes
}
示例10: handleUserFileChanged
func (m *Manager) handleUserFileChanged(ev *fsnotify.FileEvent, handler func()) {
if !ev.IsDelete() || handler == nil {
return
}
m.watcher.ResetFileListWatch()
<-time.After(time.Millisecond * 200)
handler()
}
示例11: handleEvent
func handleEvent(ev *fsnotify.FileEvent) {
if len(ev.Name) > 0 {
switch {
case ev.IsCreate():
handleCreate(ev.Name)
case ev.IsDelete():
handleDelete(ev.Name)
case ev.IsModify():
handleModify(ev.Name)
}
}
}
示例12: Handle
func (watcher RecursiveWatcher) Handle(ev *fsnotify.FileEvent) {
if ev.IsCreate() {
info, err := os.Stat(ev.Name)
if err == nil {
if info.IsDir() {
watcher.WatchRecursive(ev.Name)
}
}
} else if ev.IsDelete() {
watcher.RemoveWatch(ev.Name)
}
}
示例13: handleMimeFileChanged
func (dapp *DefaultApps) handleMimeFileChanged(ev *fsnotify.FileEvent) {
if ev == nil {
return
}
if ev.IsDelete() {
if dapp.watcher != nil {
dapp.watcher.ResetFileListWatch()
}
} else {
dbus.Emit(dapp, "DefaultAppChanged")
}
}
示例14: eventDesc
func eventDesc(ev *fsnotify.FileEvent) string {
switch {
case ev.IsCreate():
return "created"
case ev.IsDelete():
return "removed"
case ev.IsModify():
return "modified"
case ev.IsRename():
return "renamed"
default:
return ""
}
}
示例15: watch
func watch() {
var event *fsnotify.FileEvent
var open bool
for {
if event, open = <-watcher.Event; open == false {
break
} else if event.IsModify() {
go fileModified(event)
} else if event.IsDelete() {
out("DELETED", event.Name)
} else if event.IsCreate() {
go fileCreated(event)
} else if event.IsRename() {
}
}
}