package main import ( _ "embed" "log" "net/http" "os" "os/signal" "syscall" "time" "github.com/gorilla/mux" ) const ( Addr = "127.0.0.1:8000" ReadTimeout = 15 * time.Second WriteTimeout = 15 * time.Second ) //go:embed VERSION.txt var versionTxt string var router *mux.Router = mux.NewRouter() func init() { log.SetFlags(0) } func main() { run( router, Addr, WriteTimeout, ReadTimeout, []syscall.Signal{syscall.SIGTERM, syscall.SIGINT}, ) } func run( handler http.Handler, addr string, wTimeout time.Duration, rTimeout time.Duration, signals []syscall.Signal, ) { log.Println("finserv finance server was started.") defer log.Println("finserv finance server was stopped.") server := &http.Server{ Handler: handler, Addr: addr, WriteTimeout: wTimeout, ReadTimeout: rTimeout, } go server.ListenAndServe() log.Printf("Serving at http://%s.\n", Addr) await(signals...) } func await(signals ...syscall.Signal) { listener := make(chan os.Signal, 1) for _, s := range signals { signal.Notify(listener, s) } sig := <-listener log.Printf("Received OS signal '%v'.\n", sig) }