f33f7b5c29
+ Refactored all imports + Fixed a bug for the logging regarding removing \n \t \r + Updated to current MGO release + Changed the name of ICCC
46 lines
1.1 KiB
Go
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()
|
|
}
|