diff --git a/events.go b/events.go index a39f5d7..47b7f21 100644 --- a/events.go +++ b/events.go @@ -1,5 +1,10 @@ package main +import ( + "time" +) + +//event type type EventType uint32 const ( @@ -7,10 +12,24 @@ const ( DELETE ) +//event status +type EventStatus uint32 + +const ( + NOTICED = 1 << iota //watcher.go has been notified that a file changed + COPIED_TO_TMP //temporary version saved off + HASHED //hash taken of tmp file + CACHED //tmp file renamed to its hash + UPLOADED //tmp file has been successfully uploaded to storage + ON_SERVER //server has been successfully notified of event +) + type Event struct { - Type EventType - Path string - Hash string + Type EventType + Status EventStatus + Path string + Hash string + Timestamp time.Time } func (e Event) IsUpdate() bool { diff --git a/watcher.go b/watcher.go index 5c76a34..c1e88f2 100644 --- a/watcher.go +++ b/watcher.go @@ -4,6 +4,7 @@ import ( "github.com/howeyc/fsnotify" "os" "path/filepath" + "time" ) func StartWatching(watchDir string, fileUpdates chan *Event) { @@ -45,7 +46,10 @@ func StartWatching(watchDir string, fileUpdates chan *Event) { panic("Unknown fsnotify event type") } + event.Status = NOTICED event.Path = ev.Name + event.Timestamp = time.Now() + if event.IsUpdate() { event.Hash, err = HashFile(ev.Name) if err != nil {