geezer-example/cmd/app/main.go
Alexander Kiryukhin 30b2d125ab
first commit
2022-02-06 22:38:56 +03:00

39 lines
737 B
Go

package main
import (
"context"
"flag"
"log"
"net/http"
"os"
"os/signal"
"github.com/neonxp/geezer"
"github.com/neonxp/geezer-example/services/hello"
)
var listen string
func main() {
flag.StringVar(&listen, "listen", ":3000", "Host and port to listen (ex: '0.0.0.0:3000')")
flag.Parse()
ctx, cancel := signal.NotifyContext(context.Background(), os.Kill, os.Interrupt)
defer cancel()
app := geezer.NewHttpKernel()
hello.RegisterHooks(app)
_ = app.Register(hello.ServiceName, &hello.Service{})
log.Printf("Started on %s\n", listen)
srv := http.Server{Addr: listen, Handler: app}
go func() {
<-ctx.Done()
srv.Close()
}()
if err := srv.ListenAndServe(); err != http.ErrServerClosed {
log.Fatalln(err)
}
}