2 changed files with 96 additions and 34 deletions
@ -0,0 +1,64 @@ |
|||
/* |
|||
This is some stuff... |
|||
|
|||
Authors: |
|||
Georg Hopp <georg@steffers.org> |
|||
|
|||
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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
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:
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue