diff --git a/filters.go b/filters.go index 3ffe4ce..7b43cf7 100644 --- a/filters.go +++ b/filters.go @@ -107,6 +107,15 @@ throughNewMessages: 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 { returnChan := make(chan GenericMessage) timeoutEvents := make(chan interface{}) @@ -124,7 +133,9 @@ func Throttle(inputEvents <-chan GenericMessage, wg *sync.WaitGroup, sleeper Sle if !ok { break loop } - if currentEvent == nil { + if urgentMessage(ev) { + returnChan <- ev + } else if currentEvent == nil { logger.Print("Waiting for more messages to arrive before sending...") sleeper.Sleep(timeoutEvents) }