Ocean/Log/DeviceDelay.go
Thorsten Sommer f33f7b5c29 Refactoring, Bugfix & Updates
+ Refactored all imports
+ Fixed a bug for the logging regarding removing \n \t \r
+ Updated to current MGO release
+ Changed the name of ICCC
2014-10-19 19:19:11 +02:00

46 lines
1.1 KiB
Go

package Log
import (
"github.com/SommerEngineering/Ocean/Log/Device"
"github.com/SommerEngineering/Ocean/Log/Meta"
)
func deviceDelay(newEntry Meta.Entry) {
defer checkDeviceDelaySize()
// Insert the new entry at the correct position (time)!
for logEvent := deviceDelayBuffer.Front(); logEvent != nil; logEvent = logEvent.Next() {
currentEvent := logEvent.Value.(Meta.Entry)
if newEntry.Time.Before(currentEvent.Time) {
mutexDeviceDelays.Lock()
deviceDelayBuffer.InsertBefore(newEntry, logEvent)
mutexDeviceDelays.Unlock()
return
}
}
// Default: Insert at the back!
mutexDeviceDelays.Lock()
deviceDelayBuffer.PushBack(newEntry)
mutexDeviceDelays.Unlock()
}
func checkDeviceDelaySize() {
mutexDeviceDelays.Lock()
if deviceDelayBuffer.Len() >= logDeviceDelayNumberEvents {
dataArray := logEntryListToArray(deviceDelayBuffer)
deviceDelayBuffer.Init()
mutexDevices.RLock()
for entry := devices.Front(); entry != nil; entry = entry.Next() {
dev := entry.Value.(Device.Device)
go dev.Log(dataArray)
}
mutexDevices.RUnlock()
}
mutexDeviceDelays.Unlock()
}