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