Implement #5: SIGUSR1 #6

Merged
lauri merged 1 commits from sigusr1 into master 2023-08-25 06:03:56 +00:00

View File

@ -134,7 +134,7 @@ func main() {
godoorBuildInfo.WithLabelValues(Version, Commit).Set(1)
go func() {
setup()
setup(ctx)
}()
<-ctx.Done()
@ -188,7 +188,7 @@ func loadConfig() {
}
}
func setup() {
func setup(ctx context.Context) {
log.Println("Started Setup")
if config.mock {
@ -239,6 +239,8 @@ func setup() {
}
}()
go listenSig1(ctx, wiegand)
log.Println("Initialized longpoll event loop")
go cardRunner(wiegand)
@ -246,6 +248,24 @@ func setup() {
log.Println("Setup completed")
}
func listenSig1(ctx context.Context, wiegand Wiegand) {
usrSig := make(chan os.Signal)
signal.Notify(usrSig, syscall.SIGUSR1)
for {
select {
case <-usrSig:
err := OpenAndCloseDoor(wiegand)
log.Printf("Emergecy opening door as prompted by SIGUSR1")
if err != nil {
log.Printf("opening door: %v", err)
}
case <-ctx.Done():
return
}
}
}
func runHttpServer() {
http.Handle("/metrics", promhttp.Handler())
log.Printf("Running prometheus metrics on http://%s/metrics", config.prometheusMetricsBind)