66 logger "log"
77 "os"
88 "os/signal"
9+ "sync"
910 "syscall"
1011 "time"
1112
2425type polochonfs struct {
2526 fuseDebug bool
2627 ctx context.Context
28+ wg sync.WaitGroup
2729
2830 root * node
2931
@@ -47,10 +49,12 @@ func (pfs *polochonfs) init() error {
4749 {value : polochonToken , errMsg : "missing token" },
4850 } {
4951 if field .value == "" {
50- return fmt .Errorf (field .errMsg )
52+ return fmt .Errorf ("%s" , field .errMsg )
5153 }
5254 }
5355
56+ pfs .wg = sync.WaitGroup {}
57+
5458 var err error
5559 pfs .client , err = papi .New (polochonURL )
5660 if err != nil {
@@ -62,19 +66,27 @@ func (pfs *polochonfs) init() error {
6266 return nil
6367}
6468
69+ func (pfs * polochonfs ) wait () {
70+ pfs .wg .Wait ()
71+ }
72+
6573func (pfs * polochonfs ) buildFS (_ context.Context ) {
66- log .Debug ("Adding persistent nodes" )
67- pfs .root .addChild (newPersistentNodeDir (movieDirName ))
68- pfs .root .addChild (newPersistentNodeDir (showDirName ))
74+ pfs .root .addChild (newNodeDir (movieDirName , movieDirName , pfs .root .times ))
75+ pfs .root .addChild (newNodeDir (showDirName , showDirName , pfs .root .times ))
6976
70- pfs .updateMovies ()
71- pfs .updateShows ()
77+ go pfs .handleUpdates ()
7278}
7379
7480func (pfs * polochonfs ) handleUpdates () {
81+ pfs .wg .Add (1 )
82+ defer pfs .wg .Done ()
83+
7584 sigs := make (chan os.Signal , 1 )
7685 signal .Notify (sigs , syscall .SIGUSR1 , syscall .SIGUSR2 )
7786
87+ pfs .updateMovies ()
88+ pfs .updateShows ()
89+
7890 ticker := time .NewTicker (libraryRefresh )
7991 defer ticker .Stop ()
8092
@@ -84,9 +96,11 @@ func (pfs *polochonfs) handleUpdates() {
8496 switch s {
8597 case syscall .SIGUSR1 :
8698 log .Info ("Updating movies from signal" )
99+ ticker .Reset (libraryRefresh )
87100 pfs .updateMovies ()
88101 case syscall .SIGUSR2 :
89102 log .Info ("Updating shows from signal" )
103+ ticker .Reset (libraryRefresh )
90104 pfs .updateShows ()
91105 }
92106 case <- ticker .C :
0 commit comments