42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
|
package ICCC
|
||
|
|
||
|
import "fmt"
|
||
|
import "time"
|
||
|
import "labix.org/v2/mgo/bson"
|
||
|
import "github.com/SommerEngineering/Ocean/Shutdown"
|
||
|
import "github.com/SommerEngineering/Ocean/ICCC/Scheme"
|
||
|
import "github.com/SommerEngineering/Ocean/Log"
|
||
|
import LM "github.com/SommerEngineering/Ocean/Log/Meta"
|
||
|
|
||
|
func initCacheTimer() {
|
||
|
|
||
|
go func() {
|
||
|
for {
|
||
|
|
||
|
if Shutdown.IsDown() {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
lastCount := cacheListenerDatabase.Len()
|
||
|
selection := bson.D{{`IsActive`, true}}
|
||
|
entriesIterator := collectionListener.Find(selection).Iter()
|
||
|
entry := Scheme.Listener{}
|
||
|
|
||
|
cacheListenerDatabaseLock.Lock()
|
||
|
cacheListenerDatabase.Init()
|
||
|
for entriesIterator.Next(&entry) {
|
||
|
cacheListenerDatabase.PushBack(entry)
|
||
|
}
|
||
|
|
||
|
cacheListenerDatabaseLock.Unlock()
|
||
|
nextDuration := time.Duration(5) * time.Minute
|
||
|
if cacheListenerDatabase.Len() == 0 {
|
||
|
nextDuration = time.Duration(10) * time.Second
|
||
|
}
|
||
|
|
||
|
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameEXECUTE, `The listener cache was refreshed with the values from the database.`, fmt.Sprintf(`last count=%d`, lastCount), fmt.Sprintf(`new count=%d`, cacheListenerDatabase.Len()))
|
||
|
time.Sleep(nextDuration)
|
||
|
}
|
||
|
}()
|
||
|
}
|