@@ -10,14 +10,15 @@ import (
10
10
log "github.com/sirupsen/logrus"
11
11
)
12
12
13
- func Main (filename string , port uint , logger * log.Logger ) {
13
+ func Main (ctx context. Context , filename string , port uint , logger * log.Logger ) error {
14
14
snapshotCache := cache .NewSnapshotCache (false , cache.IDHash {}, logger )
15
15
proc := NewProcessor (snapshotCache , logger )
16
16
17
+ errChan := make (chan error , 2 )
18
+
17
19
go func () {
18
- ctx := context .Background ()
19
20
server := serverv3 .NewServer (ctx , snapshotCache , nil )
20
- RunServer (ctx , server , port )
21
+ errChan <- RunServer (ctx , server , port )
21
22
}()
22
23
23
24
notifyCh := make (chan NotifyMessage , 100 )
@@ -29,20 +30,29 @@ func Main(filename string, port uint, logger *log.Logger) {
29
30
30
31
watcher , err := fsnotify .NewWatcher ()
31
32
if err != nil {
32
- log . Fatal ( fmt .Errorf ("failed to create file watcher, err : %v" , err ) )
33
+ return fmt .Errorf ("failed to create file watcher: %v" , err )
33
34
}
34
35
defer watcher .Close ()
35
- if err = watcher .Add (filename ); err != nil {
36
- log .Fatal (fmt .Errorf ("failed to add file: %s to wather, err: %v" , filename , err ))
36
+ err = watcher .Add (filename )
37
+ if err != nil {
38
+ return fmt .Errorf ("failed to add file: %s to wather: %v" , filename , err )
37
39
}
38
40
go func () {
39
- log . Fatal ( Watch (watcher , filename , notifyCh ) )
41
+ errChan <- Watch (watcher , filename , notifyCh )
40
42
}()
41
43
42
44
for {
43
45
select {
44
46
case msg := <- notifyCh :
45
- proc .ProcessFile (msg )
47
+ err = proc .ProcessFile (msg )
48
+ if err != nil {
49
+ log .Errorf ("failed to process file: %v" , err )
50
+ return err
51
+ }
52
+ case err = <- errChan :
53
+ return err
54
+ case <- ctx .Done ():
55
+ return ctx .Err ()
46
56
}
47
57
}
48
58
}
0 commit comments