// Serve starts the go-horizon system, binding it to a socket, setting up // the shutdown signals and starting the appropriate db-streaming pumps. func (a *App) Serve() { a.web.router.Compile() http.Handle("/", a.web.router) listenStr := fmt.Sprintf(":%d", a.config.Port) listener := bind.Socket(listenStr) log.Infof(a.ctx, "Starting horizon on %s", listener.Addr()) graceful.HandleSignals() bind.Ready() graceful.PreHook(func() { log.Info(a.ctx, "received signal, gracefully stopping") a.Cancel() }) graceful.PostHook(func() { log.Info(a.ctx, "stopped") }) if a.config.Autopump { sse.SetPump(a.ctx, sse.AutoPump) } else { sse.SetPump(a.ctx, db.NewLedgerClosePump(a.ctx, a.historyDb)) } err := graceful.Serve(listener, http.DefaultServeMux) if err != nil { log.Panic(a.ctx, err) } graceful.Wait() }
// Serve starts Goji using reasonable defaults. func Serve() { if !flag.Parsed() { flag.Parse() } log.SetFlags(log.Flags() | log.Lmicroseconds) // Install our handler at the root of the standard net/http default mux. // This allows packages like expvar to continue working as expected. http.Handle("/", DefaultMux) listener := bind.Default() log.Println("Starting Goji on", listener.Addr()) graceful.HandleSignals() bind.Ready() err := graceful.Serve(listener, http.DefaultServeMux) if err != nil { log.Fatal(err) } graceful.Wait() }
// Serve starts kami with reasonable defaults. // It works (exactly) like Goji, looking for Einhorn, the bind flag, GOJI_BIND... func Serve() { if !flag.Parsed() { flag.Parse() } // Install our handler at the root of the standard net/http default mux. // This allows packages like expvar to continue working as expected. http.Handle("/", Handler()) listener := bind.Default() log.Println("Starting kami on", listener.Addr()) graceful.HandleSignals() bind.Ready() graceful.PreHook(func() { log.Printf("kami received signal, gracefully stopping") }) graceful.PostHook(func() { log.Printf("kami stopped") }) err := graceful.Serve(listener, http.DefaultServeMux) if err != nil { log.Fatal(err) } graceful.Wait() }
func serve() { goji.DefaultMux.Compile() // Install our handler at the root of the standard net/http default mux. // This allows packages like expvar to continue working as expected. http.Handle("/", goji.DefaultMux) listener := bind.Socket(bind.Sniff()) log.Println("Starting Goji on", listener.Addr()) graceful.HandleSignals() bind.Ready() graceful.PreHook(func() { log.Printf("Goji received signal, gracefully stopping") }) graceful.PostHook(func() { log.Printf("Goji stopped") log.Printf("Shutting down the server") handler.DB.Close() log.Printf("Database shut down. Terminating the process.") }) err := graceful.Serve(listener, http.DefaultServeMux) if err != nil { log.Fatal(err) } graceful.Wait() }
func main() { appCfg, srvCfg, err := readConfiguration() if err != nil { log.Fatalf("Error parsing configuration. event=config_error error=%q", err) } a, err := app.New(appCfg) if err != nil { log.Fatalf("Error initializing app event=init_error error=%q", err) } defer a.Close() listener, err := net.Listen("tcp", srvCfg.HTTPAddr) if err != nil { log.Fatalf("Error attempting to listen on port, event=listen_error address=%q error=%q", err, srvCfg.HTTPAddr) } graceful.Timeout(httpGrace) graceful.HandleSignals() graceful.PreHook(func() { log.Print("Shutting down. event=app_stop") }) log.Printf("Starting. event=app_start address=%q", listener.Addr()) bind.Ready() err = graceful.Serve(listener, a) if err != nil { log.Fatalf("Shutting down after a fatal error. event=fatal_error error=%q", err) } }
// Serve starts the horizon system, binding it to a socket, setting up // the shutdown signals and starting the appropriate db-streaming pumps. func (a *App) Serve() { a.web.router.Compile() http.Handle("/", a.web.router) listenStr := fmt.Sprintf(":%d", a.config.Port) listener := bind.Socket(listenStr) log.Infof("Starting horizon on %s", listener.Addr()) graceful.HandleSignals() bind.Ready() graceful.PreHook(func() { log.Info("received signal, gracefully stopping") a.Close() }) graceful.PostHook(func() { log.Info("stopped") }) sse.SetPump(a.pump.Subscribe()) err := graceful.Serve(listener, http.DefaultServeMux) if err != nil { log.Panic(err) } graceful.Wait() }
func (s *Server) HTTPServe() { httpSocket := bind.Socket(s.HTTPAddr) graceful.Timeout(10 * time.Second) graceful.PreHook(func() { s.logger.Info("Terminating HTTP listener") }) graceful.HandleSignals() s.logger.WithField("address", s.HTTPAddr).Info("HTTP server listening") bind.Ready() if err := graceful.Serve(httpSocket, s.Handler()); err != nil { s.logger.WithError(err).Error("HTTP server shut down due to error") } graceful.Wait() }
/** *There was no support of TLS in kami *Copy-paste from Goji **/ func ServeTLS(config *tls.Config) { if !flag.Parsed() { flag.Parse() } http.Handle("/", kami.Handler()) listener := tls.NewListener(bind.Default(), config) log.Println("Starting kami on", listener.Addr()) graceful.HandleSignals() bind.Ready() graceful.PreHook(func() { log.Printf("kami received signal, gracefully stopping") }) graceful.PostHook(func() { log.Printf("kami stopped") }) err := graceful.Serve(listener, http.DefaultServeMux) if err != nil { log.Fatal(err) } graceful.Wait() }