Ocean/Log/DeviceDatabase/CacheRefreshSenderNames.go
2015-06-23 17:22:24 +02:00

50 lines
1.4 KiB
Go

package DeviceDatabase
import (
"github.com/SommerEngineering/Ocean/Log"
LM "github.com/SommerEngineering/Ocean/Log/Meta"
"github.com/SommerEngineering/Ocean/Shutdown"
"time"
)
// Function for the thread which maintain the sender name cache.
func cacheRefreshSenderNames() {
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameSTARTUP, `The sender names' refresh thread is now running.`)
// Use an extra thread:
go func() {
// Endless lopp:
for true {
// Read the sender names from the DB:
data := readSenderNamesFromDB()
// Case: The project name was not set now. This happens by the logging system
// after adding this logging device.
if len(data) == 0 {
// Wait for a moment:
time.Sleep(time.Second * 3)
// Try it again:
continue
}
mutexCacheSenderNames.Lock()
// Overwrite the cache:
cacheSenderNames = data
mutexCacheSenderNames.Unlock()
// Sleep some time:
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelTALKATIVE, LM.MessageNameEXECUTE, `The sender names' cache was refreshed.`)
time.Sleep(time.Duration(nameCachesRefreshTimeSeconds) * time.Second)
// Case: The server is going down now.
if Shutdown.IsDown() {
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelWARN, LM.SeverityLow, LM.ImpactLow, LM.MessageNameSHUTDOWN, `The sender name's refresh thread is now shutting down.`)
return
}
}
}()
}