Properly close Satel connection on interrupt

command_handler
Michał Rudowicz 2024-02-18 19:36:54 +01:00
rodzic 9360d89fe1
commit 0e01644c3b
2 zmienionych plików z 6 dodań i 19 usunięć

Wyświetl plik

@ -151,8 +151,10 @@ func main() {
tgSenderWorker(tgEvents, &wg, sleeper, log.New(os.Stderr, "TgSender", log.Lmicroseconds)),
tgSender, &wg, log.New(os.Stderr, "SendToTg", log.Lmicroseconds)))
go CloseSatelOnCtrlC(s)
for e := range FilterByIndex(FilterByType(
FilterByLastSeen(CloseChanOnCtrlC(s.Events), "hs_wro_last_seen.bin", log.New(os.Stderr, "FilterByLastSeen", log.Lmicroseconds)),
FilterByLastSeen(s.Events, "hs_wro_last_seen.bin", log.New(os.Stderr, "FilterByLastSeen", log.Lmicroseconds)),
allowedTypes),
allowedIndexes) {
logger.Print("Received change from SATEL: ", e)

Wyświetl plik

@ -93,26 +93,11 @@ var SATEL_STRING_TO_CHANGE_TYPE = map[string]satel.ChangeType{
"zone-isolate": satel.ZoneIsolate,
}
func CloseChanOnCtrlC(ev <-chan satel.Event) <-chan satel.Event {
returnChan := make(chan satel.Event)
func CloseSatelOnCtrlC(s *satel.Satel) {
exitSignal := make(chan os.Signal, 1)
signal.Notify(exitSignal, os.Interrupt)
go func() {
defer close(returnChan)
loop:
for {
select {
case <-exitSignal:
return
case e, ok := <-ev:
if !ok {
break loop
}
returnChan <- e
}
}
}()
return returnChan
<-exitSignal
s.Close()
}
func StringToSatelChangeType(s string) (satel.ChangeType, error) {