Do not wait on urgent alarms
This commit is contained in:
parent
8956cafa22
commit
f6dc742630
13
filters.go
13
filters.go
|
|
@ -107,6 +107,15 @@ throughNewMessages:
|
||||||
return msg
|
return msg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func urgentMessage(ev GenericMessage) bool {
|
||||||
|
for _, m := range ev.Messages {
|
||||||
|
if m.Type == satel.PartitionFireAlarm {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func Throttle(inputEvents <-chan GenericMessage, wg *sync.WaitGroup, sleeper Sleeper, logger *log.Logger) <-chan GenericMessage {
|
func Throttle(inputEvents <-chan GenericMessage, wg *sync.WaitGroup, sleeper Sleeper, logger *log.Logger) <-chan GenericMessage {
|
||||||
returnChan := make(chan GenericMessage)
|
returnChan := make(chan GenericMessage)
|
||||||
timeoutEvents := make(chan interface{})
|
timeoutEvents := make(chan interface{})
|
||||||
|
|
@ -124,7 +133,9 @@ func Throttle(inputEvents <-chan GenericMessage, wg *sync.WaitGroup, sleeper Sle
|
||||||
if !ok {
|
if !ok {
|
||||||
break loop
|
break loop
|
||||||
}
|
}
|
||||||
if currentEvent == nil {
|
if urgentMessage(ev) {
|
||||||
|
returnChan <- ev
|
||||||
|
} else if currentEvent == nil {
|
||||||
logger.Print("Waiting for more messages to arrive before sending...")
|
logger.Print("Waiting for more messages to arrive before sending...")
|
||||||
sleeper.Sleep(timeoutEvents)
|
sleeper.Sleep(timeoutEvents)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue