blob: 3178818ce2948b4bf6f5fb927fd074fb8ec16798 [file] [log] [blame]
package main
import (
"context"
"flag"
"net/http"
"time"
"code.hackerspace.pl/hscloud/go/mirko"
"github.com/golang/glog"
)
var (
flagListen = "127.0.0.1:8080"
)
func main() {
flag.StringVar(&flagListen, "pub_listen", flagListen, "Address to listen on for HTTP traffic")
flag.Parse()
m := mirko.New()
if err := m.Listen(); err != nil {
glog.Exitf("Listen(): %v", err)
}
if err := m.Serve(); err != nil {
glog.Exitf("Serve(): %v", err)
}
mux := http.NewServeMux()
// TODO(q3k): implement admission controller
srv := &http.Server{Addr: flagListen, Handler: mux}
glog.Infof("Listening on %q...", flagListen)
go func() {
if err := srv.ListenAndServe(); err != nil {
glog.Error(err)
}
}()
<-m.Done()
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
srv.Shutdown(ctx)
}