Options to listen different signals

This commit is contained in:
Alexander Kiryukhin 2019-04-01 11:38:03 +03:00
parent da95ae7f82
commit 1772990500
2 changed files with 5 additions and 4 deletions

2
go.mod
View file

@ -1,3 +1 @@
module github.com/neonxp/rutina module github.com/neonxp/rutina
go 1.12

View file

@ -122,10 +122,13 @@ func (r *Rutina) Go(doer func(ctx context.Context) error, opts ...Options) {
} }
// OS signals handler // OS signals handler
func (r *Rutina) ListenOsSignals() { func (r *Rutina) ListenOsSignals(signals ...os.Signal) {
if len(signals) == 0 {
signals = []os.Signal{os.Kill, os.Interrupt}
}
r.Go(func(ctx context.Context) error { r.Go(func(ctx context.Context) error {
sig := make(chan os.Signal, 1) sig := make(chan os.Signal, 1)
signal.Notify(sig, os.Interrupt, os.Kill) signal.Notify(sig, signals...)
select { select {
case s := <-sig: case s := <-sig:
if r.logger != nil { if r.logger != nil {