本文整理汇总了Golang中github.com/howeyc/fsnotify.NewWatcher函数的典型用法代码示例。如果您正苦于以下问题:Golang NewWatcher函数的具体用法?Golang NewWatcher怎么用?Golang NewWatcher使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewWatcher函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: watchMetadataFile
func watchMetadataFile(filename string, metadataChange chan string) {
fmt.Printf("watching '%s'", filename)
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
exp, _ := regexp.Compile(".*(MODIFY|MOVE).*$")
deleted := false
for {
if _, err := os.Stat(filename); err == nil {
if deleted {
readMetadataFile(filename, metadataChange)
}
err = watcher.Watch(filename)
if err != nil {
log.Fatal(err)
}
ev := <-watcher.Event
if len(exp.FindStringSubmatch(ev.String())) > 0 {
readMetadataFile(filename, metadataChange)
}
deleted = false
} else {
deleted = true
time.Sleep(1 * time.Second)
}
}
}
开发者ID:niko,项目名称:lautfm-streamer,代码行数:32,代码来源:lautfm-streamer.go
示例2: startPostManager
func startPostManager(brog *Brog, filepath string) (*postManager, error) {
watcher, err := fsnotify.NewWatcher()
if err != nil {
return nil, fmt.Errorf("getting post watcher, %v", err)
}
postMngr := &postManager{
mu: sync.RWMutex{},
brog: brog,
path: filepath,
posts: make(map[string]*post),
sortedPosts: []*post{},
watcher: watcher,
die: make(chan struct{}),
}
err = postMngr.loadAllPosts()
if err != nil {
return nil, fmt.Errorf("while loading all posts, %v", err)
}
postMngr.sortPosts()
if err := postMngr.watchForChanges(filepath); err != nil {
return nil, fmt.Errorf("starting watch for changes on '%s', %v", filepath, err)
}
return postMngr, nil
}
开发者ID:uiri,项目名称:brog,代码行数:29,代码来源:post_manager.go
示例3: watchFolder
func watchFolder(path string) {
watcher, err := fsnotify.NewWatcher()
if err != nil {
fatal(err)
}
go func() {
for {
select {
case ev := <-watcher.Event:
if isWatchedFile(ev.Name) {
watcherLog("sending event %s", ev)
startChannel <- ev.String()
}
case err := <-watcher.Error:
watcherLog("error: %s", err)
}
}
}()
watcherLog("Watching %s", path)
err = watcher.Watch(path)
if err != nil {
fatal(err)
}
}
开发者ID:haruyama,项目名称:fresh,代码行数:27,代码来源:watcher.go
示例4: main
func main() {
L := lua.NewState()
L.OpenLibs()
defer L.Close()
watcher, err := fsnotify.NewWatcher()
if err != nil {
panic(err)
}
luasPath := "./"
if len(os.Args) == 2 {
luasPath = os.Args[1]
}
watcher.WatchFlags(luasPath, fsnotify.FSN_MODIFY)
ls := luas{}
var ev *fsnotify.FileEvent
ls.Collect(luasPath)
ls.Load(L)
newev:
ls.Handle(ev, L)
ev = <-watcher.Event
goto newev
}
开发者ID:hoffoo,项目名称:luaenv,代码行数:29,代码来源:luaenv.go
示例5: Watch
func (this *gowatch) Watch() (err error) {
if this.w, err = fsnotify.NewWatcher(); err != nil {
return
}
for _, path := range this.Paths {
if err = this.watchDirAndChildren(os.ExpandEnv(path)); err != nil {
log.Fatal(err)
}
}
this.modtime = make(map[string]time.Time)
this.sig = make(chan string)
for _, patten := range this.Exclude {
this.reExclude = append(this.reExclude, regexp.MustCompile(patten))
}
for _, patten := range this.Include {
this.reInclude = append(this.reInclude, regexp.MustCompile(patten))
}
this.sigOS = make(chan os.Signal, 1)
signal.Notify(this.sigOS, syscall.SIGINT)
go this.drainExec()
this.drainEvent()
return
}
开发者ID:nXqd,项目名称:fswatch,代码行数:25,代码来源:fswatch.go
示例6: ReadAndWatchConfigFile
// ReadAndWatchConfigFile reads and watchs for changes in the configuration
// file. Whenever the file change, and its contents are valid YAML, the
// configuration gets updated. With this function, daemons that use this
// package may reload configuration without restarting.
func ReadAndWatchConfigFile(filePath string) error {
err := ReadConfigFile(filePath)
if err != nil {
return err
}
w, err := fsnotify.NewWatcher()
if err != nil {
return err
}
err = w.Watch(filePath)
if err != nil {
return err
}
go func() {
for {
select {
case e := <-w.Event:
if e.IsModify() {
ReadConfigFile(filePath)
}
case <-w.Error: // just ignore errors
}
}
}()
return nil
}
开发者ID:zhenruyan,项目名称:tsuru,代码行数:30,代码来源:config.go
示例7: Watcher
func Watcher(config *SiteConfig) (chan string, error) {
watcher, err := fsnotify.NewWatcher()
if err != nil {
return nil, err
}
ch := make(chan string, 10)
go func() {
for {
ev := <-watcher.Event
if ev.IsCreate() {
watcher.Watch(ev.Name)
} else if ev.IsDelete() {
watcher.RemoveWatch(ev.Name)
}
ch <- ev.Name
}
}()
filepath.Walk(config.Source, watchAll(watcher))
for _, path := range config.Templates {
watcher.Watch(path)
}
return ch, nil
}
开发者ID:hooblei,项目名称:gostatic,代码行数:27,代码来源:watch.go
示例8: main
func main() {
ch_signal := make(chan os.Signal, 1)
signal.Notify(ch_signal, os.Interrupt)
sync_genie_config = *new(SyncGenieConfig)
sync_genie_config_loaded = false
sync_genie_currently_copying = make(map[string]int64)
pwd, _ := os.Getwd()
sync_genie_config_file = flag.String("config", filepath.Join(pwd, "syncgenie.ini"), "config")
flag.Parse()
SyncGenieLoadConfig()
SyncGenieLoadHistory()
// 3 = the main goroutine, the file lister goroutine, and the copy sync goroutine
runtime.GOMAXPROCS(sync_genie_config.concurrent_copies + 3)
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
err = watcher.Watch(*sync_genie_config_file)
if err != nil {
log.Fatal(err)
}
ch := make(chan int)
sync_genie_chan_new_files = make(chan SyncGenieCopyItem)
go SyncGenieLister(ch)
go SyncGenieQueueUpCopy()
for {
select {
case ev := <-watcher.Event:
if ev.IsModify() {
log.Println("Config: Reloading")
SyncGenieLoadConfig()
}
case err := <-watcher.Error:
log.Println("Watcher: error:", err)
case <-ch_signal:
if len(sync_genie_currently_copying) != 0 {
log.Println("Warning: currently copying files:", sync_genie_currently_copying)
}
log.Println("Quitting...")
os.Exit(1)
case <-ch:
}
}
}
开发者ID:adamflott,项目名称:syncgenie,代码行数:60,代码来源:syncgenie.go
示例9: main
func main() {
filePath := "/Users/shuaibincheng/test.txt"
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
waitChan := make(chan bool)
go func() {
for {
select {
case event := <-watcher.Event:
log.Println("event: ", event)
if event.IsDelete() {
waitChan <- true
}
case err := <-watcher.Error:
log.Println("error: ", err)
waitChan <- false
}
}
}()
err = watcher.Watch(filePath)
if err != nil {
log.Fatal(err)
}
select {
case <-waitChan:
log.Println("exit")
}
}
开发者ID:me020523,项目名称:learning-golang,代码行数:34,代码来源:fsnotify-demo.go
示例10: Init
// TODO
func Init() {
l := py.NewLock()
defer l.Unlock()
m, err := py.Import("sublime_plugin")
if err != nil {
panic(err)
}
sys, err := py.Import("sys")
if err != nil {
log4go.Debug(err)
} else {
defer sys.Decref()
}
watcher, err = fsnotify.NewWatcher()
if err != nil {
log4go.Error("Could not create watcher due to: %v", err)
}
watchedPlugins = make(map[string]*backend.WatchedPackage)
go observePlugins(m)
plugins := packages.ScanPlugins(backend.LIME_USER_PACKAGES_PATH, ".py")
for _, p := range plugins {
// TODO: add all plugins after supporting all commands
if p.Name() == path.Join("..", "..", "3rdparty", "bundles", "Vintageous") {
loadPlugin(p, m)
}
}
}
开发者ID:Unverified,项目名称:lime,代码行数:30,代码来源:sublime_manual.go
示例11: main
func main() {
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
done := make(chan bool)
// goroutine receives events and prints them
go func() {
for {
select {
case ev := <-watcher.Event:
log.Println("event:", ev)
case err := <-watcher.Error:
log.Println("error:", err)
}
}
}()
// list of directories to watch events on
err = watcher.Watch("/var/cache/mig/command/ready/")
err = watcher.Watch("/var/cache/mig/command/inflight/")
err = watcher.Watch("/var/cache/mig/command/returned/")
err = watcher.Watch("/var/cache/mig/command/done/")
if err != nil {
log.Fatal(err)
}
// block while watching for events
<-done
watcher.Close()
}
开发者ID:jvehent,项目名称:go-toybox,代码行数:34,代码来源:fsnotify.go
示例12: Watch
func (w *watcher) Watch() error {
watcher, err := fsnotify.NewWatcher()
if err != nil {
return err
}
go func() {
for {
select {
case ev := <-watcher.Event:
log.Println(ev.Name + " detected.")
w.onEvent()
case er := <-watcher.Error:
log.Println(er)
break
}
}
}()
for _, dir := range w.site.getDirs() {
err := watcher.Watch(dir)
if err != nil {
return err
}
}
return nil
}
开发者ID:Jormundir,项目名称:builder,代码行数:28,代码来源:watcher.go
示例13: initWatchdog
func initWatchdog() {
w, err := fsnotify.NewWatcher()
if err != nil {
panic(err.Error())
}
watcher = w
//watcherDone = make(chan bool)
go func() {
for {
select {
case ev := <-watcher.Event:
if ev == nil {
return
}
if ev.IsModify() && strings.HasSuffix(ev.Name, ".glisp") {
if module, ok := modulesByPath[ev.Name]; ok {
module.Refresh()
}
}
case err := <-watcher.Error:
if err == nil {
return
}
}
}
}()
}
开发者ID:Bunkerbewohner,项目名称:gamelisp,代码行数:30,代码来源:runtime.go
示例14: newTempStore
func newTempStore(dir string, funcs template.FuncMap) *tempStore {
t := &tempStore{nil, filepath.Clean(dir), make(chan bool, 1), funcs}
t.Load()
watcher, err := fsnotify.NewWatcher()
if err != nil {
printf("%s\n", err)
}
go func() {
for {
select {
case ev := <-watcher.Event:
if ev.IsModify() {
line := ev.Name
if filepath.Ext(line) == TFIX {
gtempStore.C <- true
}
}
case err := <-watcher.Error:
printf("error %s\n", err)
}
}
}()
watcher.Watch(dir)
return t
}
开发者ID:gaxxx,项目名称:webtool,代码行数:26,代码来源:template.go
示例15: main
func main() {
fmt.Println("Starting Watcher")
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatalf("Unable to watch: ", dir)
log.Fatalf("With error: ", err)
}
startBuildAndRun()
quitWatcher := make(chan bool)
startWatcher(watcher, quitWatcher)
watchRecursive(dir, watcher)
log.Println("Watching directory: ", dir)
interrupt := make(chan os.Signal)
signal.Notify(interrupt, os.Interrupt)
select {
case <-interrupt:
log.Println("Shutting down watcher.")
watcher.Close()
quitWatcher <- true
log.Println("Quit watcher.")
}
}
开发者ID:anujb,项目名称:godev,代码行数:34,代码来源:godev.go
示例16: makeAi
func makeAi(path string, g *game.Game, ent *game.Entity, dst_iface *game.Ai, kind game.AiKind) {
ai_struct := new(Ai)
ai_struct.path = path
var err error
ai_struct.watcher, err = fsnotify.NewWatcher()
if err != nil {
base.Warn().Printf("Unable to create a filewatcher - '%s' will not reload ai files dynamically: %v", path, err)
ai_struct.watcher = nil
}
ai_struct.ent = ent
ai_struct.game = g
ai_struct.active_set = make(chan bool)
ai_struct.active_query = make(chan bool)
ai_struct.exec_query = make(chan struct{})
ai_struct.pause = make(chan struct{})
ai_struct.terminate = make(chan struct{})
ai_struct.execs = make(chan game.ActionExec)
ai_struct.kind = kind
ai_struct.setupLuaState()
go ai_struct.masterRoutine()
*dst_iface = ai_struct
}
开发者ID:FlyingCar,项目名称:haunts,代码行数:25,代码来源:ai.go
示例17: newWatcher
func newWatcher() (w *fsnotify.Watcher) {
w, err := fsnotify.NewWatcher()
if err != nil {
log4go.Error("Could not create watcher due to: %v", err)
}
return
}
开发者ID:jlneder,项目名称:lime,代码行数:7,代码来源:editor.go
示例18: StartWatching
func StartWatching(filepath string) chan *Config {
configChan := make(chan *Config)
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
go func() {
for {
select {
case event := <-watcher.Event:
log.Printf("Event: %+v", event)
config, err := LoadConfig(filepath)
if err != nil {
configChan <- config
}
case err := <-watcher.Error:
log.Panic("Error: %+v", err)
}
}
}()
err = watcher.Watch(filepath)
if err != nil {
log.Fatal("Error opening watcher", err)
}
return configChan
}
开发者ID:roelrymenants,项目名称:fileproxy,代码行数:31,代码来源:proxyconfig.go
示例19: New
// New creates a new in memory filesystem at root.
func New(root string) (http.FileSystem, error) {
root = path.Clean(root)
watcher, err := fsnotify.NewWatcher()
if err != nil {
return nil, fmt.Errorf("failed to create watcher: %v", err)
}
memFS := &memFileSystem{
root: root,
cache: map[string]*memFileInfo{},
lock: &sync.RWMutex{},
watcher: watcher,
}
// Set watcher callback.
go memFS.watcherCallback()
// Cache all the files and directory.
err = memFS.walk()
if err != nil {
return nil, err
}
return memFS, nil
}
开发者ID:ranveerkunal,项目名称:memfs,代码行数:26,代码来源:fs.go
示例20: listenItemChanged
func (self *Launcher) listenItemChanged() {
dirs := getApplicationsDirs()
watcher, err := fsnotify.NewWatcher()
if err != nil {
return
}
self.appMonitor = watcher
for _, dir := range dirs {
logger.Info("monitor:", dir)
watcher.Watch(dir)
}
go self.eventHandler(watcher)
if self.store != nil {
self.store.ConnectNewDesktopAdded(func(desktopId string, timeInstalled int32) {
self.emitItemChanged(desktopId, SoftwareStatusCreated, map[string]ItemChangedStatus{
desktopId: ItemChangedStatus{
timeInstalled: int64(timeInstalled),
},
})
})
}
}
开发者ID:felixonmars,项目名称:dde-daemon,代码行数:25,代码来源:launcher.go
注:本文中的github.com/howeyc/fsnotify.NewWatcher函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论