Simple library to make it easier to manage the death of your application.
go get github.com/vrecan/death
package main
import (
DEATH "github.com/vrecan/death"
SYS "syscall"
)
func main() {
death := DEATH.NewDeath(SYS.SIGINT, SYS.SIGTERM) //pass the signals you want to end your application
//when you want to block for shutdown signals
death.WaitForDeath() // this will finish when a signal of your type is sent to your application
}
One simple feature of death is that it can also close other objects when shutdown starts
package main
import (
DEATH "github.com/vrecan/death"
SYS "syscall"
"io"
)
func main() {
death := DEATH.NewDeath(SYS.SIGINT, SYS.SIGTERM) //pass the signals you want to end your application
objects := make([]io.Closer, 0)
objects = append(objects, &NewType{}) // this will work as long as the type implements a Close method
//when you want to block for shutdown signals
death.WaitForDeath(objects...) // this will finish when a signal of your type is sent to your application
}
type NewType struct {
}
func (c *NewType) Close() error {
return nil
}
package main
import (
DEATH "github.com/vrecan/death"
SYS "syscall"
)
func main() {
death := DEATH.NewDeath(SYS.SIGINT, SYS.SIGTERM) //pass the signals you want to end your application
//when you want to block for shutdown signals
death.WaitForDeathWithFunc(func(){
//do whatever you want on death
})
}