当前位置: 首页>>代码示例>>Golang>>正文


Golang fsnotify.FileEvent类代码示例

本文整理汇总了Golang中github.com/howeyc/fsnotify.FileEvent的典型用法代码示例。如果您正苦于以下问题:Golang FileEvent类的具体用法?Golang FileEvent怎么用?Golang FileEvent使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了FileEvent类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: 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)
	}
}
开发者ID:felixonmars,项目名称:dde-daemon,代码行数:29,代码来源:handle_event.go

示例2: 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,
	})

}
开发者ID:noypi,项目名称:filemon,代码行数:34,代码来源:helper.go

示例3: 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())
}
开发者ID:RafehSaeed,项目名称:brog,代码行数:28,代码来源:template.go

示例4: 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())
}
开发者ID:uiri,项目名称:brog,代码行数:35,代码来源:post_manager.go

示例5: 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()
}
开发者ID:felixonmars,项目名称:dde-daemon,代码行数:9,代码来源:handle_event.go

示例6: 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
		}
	}
}
开发者ID:kurrik,项目名称:ghostwriter,代码行数:33,代码来源:watcher.go

示例7: 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)
	}
}
开发者ID:pranavraja,项目名称:watchcmd,代码行数:12,代码来源:watch.go

示例8: processEvent

func (sr *stalker) processEvent(event *fsnotify.FileEvent) {
	em, ok := sr.req[event.Name]
	if !ok {
		return //yawn
	}
	switch {
	case event.IsCreate():
		sr.fs.Watch(event.Name)
	}
	if em {
		sr.ch <- event.Name
	}
}
开发者ID:swdunlop,项目名称:livefire,代码行数:13,代码来源:filestalker.go

示例9: 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")
	}
}
开发者ID:felixonmars,项目名称:dde-daemon,代码行数:13,代码来源:default_app.go

示例10: watchChange

func watchChange(ev *fsnotify.FileEvent) {
	if strings.HasPrefix(ev.Name, Config.GetAbsPath(Config.StaticDir)) {
		fmt.Println("Static file changed, syncing\n")
		utils.CheckErr(copyStatic(), fmt.Sprintf("Error copying static files to %s", Config.GetAbsPath(Config.PublishDir)))
	} else {
		if !ev.IsRename() { // Rename is always accompanied by a create or modify
			// Ignoring temp files created by editors (vim)
			if !strings.HasSuffix(ev.Name, "~") && !strings.HasSuffix(ev.Name, ".swp") {
				fmt.Println("Change detected, rebuilding site\n")
				utils.StopOnErr(buildSite(true))
			}
		}
	}
}
开发者ID:4honor,项目名称:hugo,代码行数:14,代码来源:hugo.go

示例11: 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
}
开发者ID:blockloop,项目名称:unison,代码行数:60,代码来源:locals.go

示例12: 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
}
开发者ID:srid,项目名称:tail,代码行数:60,代码来源:inotify.go

示例13: 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
}
开发者ID:doubaokun,项目名称:tail,代码行数:58,代码来源:inotify.go

示例14: 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)
	}
}
开发者ID:akavel,项目名称:gomon,代码行数:28,代码来源:watcher.go

示例15: 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 ""
	}
}
开发者ID:kisielk,项目名称:goautotest,代码行数:14,代码来源:goautotest.go


注:本文中的github.com/howeyc/fsnotify.FileEvent类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。