github.com/go-srvc/mods/sigmod
go get github.com/go-srvc/mods/sigmod@v1.0.2
README
sigmod
sigmod listens for OS signals and returns from Run when one is received, triggering srvc shutdown.
package main
import (
"fmt"
"net/http"
"os"
"syscall"
"github.com/go-srvc/mods/httpmod"
"github.com/go-srvc/mods/sigmod"
"github.com/go-srvc/srvc"
)
func main() {
srvc.RunAndExit(
// Trigger graceful shutdown of all modules on SIGINT or SIGTERM.
sigmod.New(os.Interrupt, syscall.SIGTERM),
httpmod.New(
httpmod.WithAddr(":8080"),
httpmod.WithHandler(http.HandlerFunc(hello)),
),
)
}
func hello(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "hello, world")
}
Overview
Package sigmod provides signal listening as a module.
Constants
const ID = "sigmod"Types
type Listener
type Listener struct {
// contains filtered or unexported fields
}func (*Listener) ID
func (l *Listener) ID() stringfunc (*Listener) Init
func (l *Listener) Init() errorfunc (*Listener) Run
func (l *Listener) Run() errorfunc (*Listener) Stop
func (l *Listener) Stop() errorExamples
ExampleNew
package main
import (
"os"
"syscall"
"time"
"github.com/go-srvc/mods/sigmod"
"github.com/go-srvc/srvc"
)
func main() {
//nolint: errcheck
go func() {
// Send SIGINT after 1 second.
time.Sleep(time.Second)
p, _ := os.FindProcess(syscall.Getegid())
p.Signal(os.Interrupt)
}()
srvc.RunAndExit(
sigmod.New(os.Interrupt),
)
}