aboutsummaryrefslogtreecommitdiffstats
path: root/cmd_windows.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd_windows.go')
-rw-r--r--cmd_windows.go45
1 files changed, 33 insertions, 12 deletions
diff --git a/cmd_windows.go b/cmd_windows.go
index dfe137a..621cf3b 100644
--- a/cmd_windows.go
+++ b/cmd_windows.go
@@ -86,7 +86,11 @@ func run() {
logInfo("watcher: connected, sending manifest ...")
- sendManifest(conn, manifest)
+ if err := sendManifest(conn, manifest); err != nil {
+ logErrorf("send manifest: %v", err)
+ conn.Close()
+ continue
+ }
logInfo("watcher: monitoring for changes ...")
@@ -210,7 +214,9 @@ func watchLoop(ctx context.Context, conn net.Conn, watcher *fsnotify.Watcher, ma
delete(manifest.Files, path)
}
- sendEvent(conn, evt)
+ if err := sendEvent(conn, evt); err != nil {
+ logErrorf("send event: %v", err)
+ }
})
mu.Unlock()
@@ -274,7 +280,7 @@ func scanDirectory(root string, stack *GitignoreStack) *Manifest {
return manifest
}
-func sendManifest(conn net.Conn, manifest *Manifest) {
+func sendManifest(conn net.Conn, manifest *Manifest) error {
const batchSize = 1000
files := make([]FileMetaJSON, 0, batchSize)
paths := make([]string, 0, batchSize)
@@ -291,9 +297,14 @@ func sendManifest(conn net.Conn, manifest *Manifest) {
for i, p := range paths {
msg.Files[p] = files[i]
}
- data, _ := EncodeMessage(msg)
+ data, err := EncodeMessage(msg)
+ if err != nil {
+ return err
+ }
data = append(data, '\n')
- conn.Write(data)
+ if _, err := conn.Write(data); err != nil {
+ return err
+ }
files = files[:0]
paths = paths[:0]
}
@@ -307,18 +318,27 @@ func sendManifest(conn net.Conn, manifest *Manifest) {
for i, p := range paths {
msg.Files[p] = files[i]
}
- data, _ := EncodeMessage(msg)
+ data, err := EncodeMessage(msg)
+ if err != nil {
+ return err
+ }
data = append(data, '\n')
- conn.Write(data)
+ if _, err := conn.Write(data); err != nil {
+ return err
+ }
}
done := &ProtocolMessage{Type: "manifest_done"}
- doneData, _ := EncodeMessage(done)
+ doneData, err := EncodeMessage(done)
+ if err != nil {
+ return err
+ }
doneData = append(doneData, '\n')
- conn.Write(doneData)
+ _, err = conn.Write(doneData)
+ return err
}
-func sendEvent(conn net.Conn, evt FileEvent) {
+func sendEvent(conn net.Conn, evt FileEvent) error {
msg := &ProtocolMessage{Path: evt.Path}
switch evt.Op {
case "create":
@@ -330,10 +350,11 @@ func sendEvent(conn net.Conn, evt FileEvent) {
}
data, err := EncodeMessage(msg)
if err != nil {
- return
+ return err
}
data = append(data, '\n')
- conn.Write(data)
+ _, err = conn.Write(data)
+ return err
}
func addWatchersRecursively(watcher *fsnotify.Watcher, root string, stack *GitignoreStack) error {