| 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) |
| } |