Files
arc-evilsocket/scheduler/scheduler.go
2019-11-20 12:07:36 +01:00

53 lines
1004 B
Go

/*
* Arc - Copyleft of Simone 'evilsocket' Margaritelli.
* evilsocket at protonmail dot com
* https://www.evilsocket.net/
*
* See LICENSE.
*/
package scheduler
import (
"github.com/evilsocket/arc/db"
"github.com/evilsocket/arc/events"
"github.com/evilsocket/islazy/log"
"time"
)
func worker(secs int) {
period := time.Duration(secs) * time.Second
log.Debug("Scheduler started with a %v period.", period)
for {
time.Sleep(period)
db.Lock()
for _, store := range db.GetStores() {
for _, r := range store.Children() {
meta := r.Meta()
if r.Expired() {
if r.WasNotified() == false {
events.Add(events.RecordExpired(r))
r.SetNotified(true)
}
if meta.Prune {
log.Info("Pruning record %d ( %s ) ...", meta.Id, meta.Title)
if _, err := store.Del(meta.Id); err != nil {
log.Error("Error while deleting record %d: %s.", meta.Id, err)
}
}
}
}
}
db.Unlock()
}
}
func Start(period int) {
go worker(period)
}