Documentation
¶
Overview ¶
Package `shutdown` is intended for graceful shutdown for your app/processes.
The simplest way to use `Shutdown`:
package main import "github.com/efureev/go-shutdown"
func main() { //.. shutdown.Wait() }
For a full guide visit https://github.com/efureev/go-shutdown
Example (Basic) ¶
package main import ( "fmt" "os" "syscall" "time" ) var fn = func(s os.Signal) { time.Sleep(1 * time.Second) p, err := os.FindProcess(os.Getpid()) if err != nil { panic(err.Error()) } err = p.Signal(s) if err != nil { panic(err.Error()) } } func main() { go fn(syscall.SIGTERM) err := Wait(syscall.SIGTERM) fmt.Fprint(os.Stdout, err) }
Output: <nil>
Example (With_destroy_func) ¶
logger := new(mockLogger) go fn(syscall.SIGTERM) test := `` err := OnDestroy(func() error { test = `test` return nil }). SetLogger(logger). Wait() fmt.Fprintln(os.Stdout, logger.Logs[0]) fmt.Fprintln(os.Stdout, logger.Logs[1]) fmt.Fprintln(os.Stdout, err) fmt.Fprintln(os.Stdout, test)
Output: shutdown started... shutdown complete... <nil> test
Example (With_logger) ¶
logger := new(mockLogger) go fn(syscall.SIGTERM) err := WaitWithLogger(logger, syscall.SIGINT, syscall.SIGTERM) fmt.Fprintln(os.Stdout, logger.Logs[0]) fmt.Fprintln(os.Stdout, logger.Logs[1]) fmt.Fprintln(os.Stdout, err)
Output: shutdown started... shutdown complete... <nil>
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var DefaultShutdown = New()
DefaultShutdown is a default instance.
Functions ¶
Types ¶
type ILogger ¶
type ILogger interface { Trace(args ...interface{}) Info(args ...interface{}) }
ILogger interface
type Shutdown ¶
type Shutdown struct {
// contains filtered or unexported fields
}
Shutdown struct
Click to show internal directories.
Click to hide internal directories.