diff options
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -1,12 +1,16 @@ package main import ( + "context" "log" + "net/http" "os" "os/signal" "syscall" "xengineering.eu/ceres/model" + + "github.com/gorilla/mux" ) func main() { @@ -16,9 +20,37 @@ func main() { model.InitDatabase() defer model.CloseDatabase() + var srv *http.Server = startServer("127.0.0.1:8080") + go srv.ListenAndServe() + defer stopServer(srv) + listener := make(chan os.Signal) signal.Notify(listener, syscall.SIGTERM) signal.Notify(listener, syscall.SIGINT) sig := <-listener log.Printf("Cleaning up due to OS signal '%v'\n", sig) } + +func startServer(addr string) *http.Server { + var r *mux.Router = mux.NewRouter() + + muxer := http.NewServeMux() + muxer.Handle("/", r) + + var srv http.Server + srv.Addr = addr + srv.Handler = muxer + + log.Printf("Configured server to listen on http://%s\n", srv.Addr) + + return &srv +} + +func stopServer(srv *http.Server) { + var err error = srv.Shutdown(context.Background()) + if err != nil { + log.Printf("Failed to shutdown HTTP server: %v\n", err) + } else { + log.Println("Stopped HTTP server") + } +} |