Ocean/Log/DeviceDatabase/ReadMessageNames.go
Thorsten 95b0dcb653 Logging Web Interface
**Work in progress**
2015-02-26 16:37:36 +01:00

50 lines
1.6 KiB
Go

package DeviceDatabase
import (
"github.com/SommerEngineering/Ocean/Log"
LM "github.com/SommerEngineering/Ocean/Log/Meta"
"github.com/SommerEngineering/Ocean/Shutdown"
"gopkg.in/mgo.v2/bson"
"sort"
"time"
)
func ReadMessageNames() (messageNames []string) {
mutexCacheMessageNames.RLock()
defer mutexCacheMessageNames.RUnlock()
messageNames = cacheMessageNames
return
}
func cacheRefreshMessageNames() {
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameSTARTUP, `The message names' refresh thread is now running.`)
go func() {
for true {
mutexCacheMessageNames.Lock()
cacheMessageNames = readMessageNamesFromDB()
mutexCacheMessageNames.Unlock()
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelTALKATIVE, LM.MessageNameEXECUTE, `The message names' cache was refreshed.`)
time.Sleep(time.Duration(nameCachesRefreshTimeSeconds) * time.Second)
if Shutdown.IsDown() {
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelWARN, LM.SeverityLow, LM.ImpactLow, LM.MessageNameSHUTDOWN, `The message name's refresh thread is now shutting down.`)
return
}
}
}()
}
func readMessageNamesFromDB() (result []string) {
var nextMessageNames []string
if err := logDBCollection.Find(bson.D{}).Distinct(`MessageName`, &nextMessageNames); err != nil {
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.MessageNameDATABASE, `Was not able to read the message names from the database.`, err.Error())
return
}
sort.Strings(nextMessageNames)
result = nextMessageNames
return
}