Implement #5: SIGUSR1
continuous-integration/drone/push Build is passing Details

#5
This commit is contained in:
rasmus 2023-08-18 02:47:55 +03:00 committed by Lauri Võsandi
parent 2008c9f999
commit 6ad260078e
1 changed files with 22 additions and 2 deletions

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)