/* This is some stuff... Authors: Georg Hopp Changes: 2018-09-30 [Georg Hopp] File created. Copyright © 2018 Georg Hopp This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ package test import ( "os" "os/signal" "syscall" "gitlab.weird-web-workers.org/golang/logger" ) type Signal interface { Hangup() Shutdown() } func Wait(sig Signal) { interrupt := make(chan os.Signal, 1) signal.Notify( interrupt, os.Interrupt, syscall.SIGTERM, syscall.SIGINT, syscall.SIGHUP, ) for run, ok := true, true; run && ok; { select { case s := <-interrupt: logger.Default.Info("Interrupted by signal: %s", sig) switch s { case syscall.SIGHUP: sig.Hangup() default: sig.Shutdown() run = false } } } } // vim: ts=4 sts=4 sw=4 noet tw=72: