go-srvc / mods / sigmod

github.com/go-srvc/mods/sigmod

pkg.go.dev source
go get github.com/go-srvc/mods/sigmod@v0.2.3

README

sigmod

package main

import (
	"net/http"
	"os"

	"github.com/go-srvc/mods/httpmod"
	"github.com/go-srvc/mods/sigmod"
	"github.com/go-srvc/srvc"
)

func main() {
	srvc.RunAndExit(
		// Register the signal module to handle SIGINT
		// and trigger graceful shutdown of all modules.
		sigmod.New(os.Interrupt),
		httpmod.New(
			httpmod.WithAddr(":8080"),
			httpmod.WithHandler(http.DefaultServeMux),
		),
	)
}

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() string

func (*Listener) Init

func (l *Listener) Init() error

func (*Listener) Run

func (l *Listener) Run() error

func (*Listener) Stop

func (l *Listener) Stop() error

Examples

ExampleNew

package main

import (
	"os"
	"syscall"
	"time"

	"github.com/go-srvc/mods/sigmod"
	"github.com/go-srvc/srvc"
)

func main() {
	go func() {
		// Send SIGINT after 1 second.
		time.Sleep(time.Second)
		syscall.Kill(syscall.Getpid(), syscall.SIGINT) //nolint: errcheck
	}()

	srvc.RunAndExit(
		sigmod.New(os.Interrupt),
	)
}