photoprism/internal/workers/workers.go
Michael Mayer 9b7a5d69d4 Sharing: Instantly trigger upload #225
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-04-06 16:15:19 +02:00

59 lines
950 B
Go

package workers
import (
"time"
"github.com/photoprism/photoprism/internal/config"
"github.com/photoprism/photoprism/internal/event"
"github.com/photoprism/photoprism/internal/mutex"
)
var log = event.Log
var stop = make(chan bool, 1)
func Start(conf *config.Config) {
ticker := time.NewTicker(15 * time.Minute)
go func() {
for {
select {
case <-stop:
log.Info("shutting down service workers")
ticker.Stop()
mutex.Share.Cancel()
mutex.Sync.Cancel()
return
case <-ticker.C:
StartShare(conf)
StartSync(conf)
}
}
}()
}
func StartShare(conf *config.Config) {
if !mutex.Share.Busy() {
go func() {
s := NewShare(conf)
if err := s.Start(); err != nil {
log.Error(err)
}
}()
}
}
func StartSync(conf *config.Config) {
if !mutex.Sync.Busy() {
go func() {
s := NewSync(conf)
if err := s.Start(); err != nil {
log.Error(err)
}
}()
}
}
func Stop() {
stop <- true
}