diff --git a/core/core.go b/core/core.go index 1047a9dd6..d6927e1ab 100644 --- a/core/core.go +++ b/core/core.go @@ -4,6 +4,7 @@ import ( "os" "path" "strconv" + "time" log "github.com/sirupsen/logrus" @@ -15,8 +16,9 @@ import ( ) var ( - _stats *models.Stats - _storage models.ChunkStorageProvider + _stats *models.Stats + _storage models.ChunkStorageProvider + _cleanupTicker *time.Ticker ) //Start starts up the core processing @@ -56,6 +58,25 @@ func createInitialOfflineState() error { return nil } +func startCleanupTimer() { + _cleanupTicker := time.NewTicker(5 * time.Minute) + go func() { + for { + select { + case <-_cleanupTicker.C: + resetDirectories() + } + } + }() +} + +// StopCleanupTimer will stop the previous cleanup timer +func stopCleanupTimer() { + if _cleanupTicker != nil { + _cleanupTicker.Stop() + } +} + func resetDirectories() { log.Trace("Resetting file directories to a clean slate.") diff --git a/core/status.go b/core/status.go index 6c892334a..c512915f0 100644 --- a/core/status.go +++ b/core/status.go @@ -27,6 +27,8 @@ func GetStatus() models.Status { //SetStreamAsConnected sets the stream as connected func SetStreamAsConnected() { + stopCleanupTimer() + _stats.StreamConnected = true _stats.LastConnectTime = utils.NullTime{time.Now(), true} _stats.LastDisconnectTime = utils.NullTime{time.Now(), false} @@ -50,4 +52,5 @@ func SetStreamAsDisconnected() { _stats.LastDisconnectTime = utils.NullTime{time.Now(), true} ffmpeg.ShowStreamOfflineState() + startCleanupTimer() }