Exemplo n.º 1
0
func EventHandler(watcher *fsnotify.Watcher, manager chan *Command) {
	for {
		select {
		case ev := <-watcher.Event:
			//encrypt() upload()
			switch {
			case ev.IsCreate():
				watcher.Watch(ev.Name)
				logEvent(ev.Name, "create")

			case ev.IsDelete():
				watcher.RemoveWatch(ev.Name)
				logEvent(ev.Name, "delete")

			case ev.IsModify():
				logEvent(ev.Name, "modify")

			case ev.IsAttrib():
				logEvent(ev.Name, "modify attrib")

			case ev.IsRename():
				watcher.RemoveWatch(ev.Name)
				logEvent(ev.Name, "rename")

			default:
				fmt.Println("Something is weird. Event but not type?")
			}
		case err := <-watcher.Error:
			// TODO: handle errors and see why reading from this can cause a block.
			fmt.Println("error reading error in fsmonitor: ", err)
		case com := <-manager:
			// TODO: Add in ability to add/remove watches from a recieved command
			if com.exitP {
				err := watcher.Close()
				fmt.Println("Returning EventHandler")
				if err != nil {
					fmt.Println("Error on close of watch: ", err)
				}
				return
			}
		}
	}
}