From 508aa4b7e4afa4da593021568afad1d565e8b968 Mon Sep 17 00:00:00 2001 From: xengineering Date: Wed, 27 Dec 2023 12:59:52 +0100 Subject: Add HTTP server without handlers This adds the infrastructure to add HTTP handlers. It already sets up the HTTP server and makes sure it is started and stopped. --- main.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/main.go b/main.go index 5665d86..6b3a0a9 100644 --- a/main.go +++ b/main.go @@ -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") + } +} -- cgit v1.2.3-70-g09d2