func (p *Exit) ServeHTTP(w http.ResponseWriter, r *http.Request) { index, _ := helpers.FetchIndex() w.WriteHeader(http.StatusOK) styledTemplate.Execute(w, Body{ Class: "goodbye", Body: fmt.Sprintf(` <div class="hello"> Shutting Down </div> <div class="my-index">My Index Is</div> <div class="index">%d</div> <div class="mid-color">Uptime: %s</div> <div class="bottom-color"></div> `, index, time.Since(p.Time)), }) go func() { time.Sleep(100 * time.Millisecond) fmt.Println("Lattice-App shutting down") os.Exit(1) }() }
func (_ *Index) ServeHTTP(w http.ResponseWriter, r *http.Request) { index, err := helpers.FetchIndex() if err != nil { w.Write([]byte(err.Error())) } w.Write([]byte(fmt.Sprintf("%d", index))) }
func main() { flag.Parse() logger := lager.NewLogger("lattice-app") if quiet { logger.RegisterSink(lager.NewWriterSink(os.Stdout, lager.INFO)) } else { logger.RegisterSink(lager.NewWriterSink(os.Stdout, lager.DEBUG)) } ports := getServerPorts() logger.Info("lattice-app.starting", lager.Data{"ports": ports}) handler, err := rata.NewRouter(routes.Routes, handlers.New(logger)) if err != nil { logger.Fatal("router.creation.failed", err) } index, err := helpers.FetchIndex() appName := fetchAppName() go func() { t := time.NewTicker(time.Second) for { <-t.C if err != nil { fmt.Fprintf(os.Stderr, "Failed to fetch index: %s\n", err.Error()) } else { fmt.Println(fmt.Sprintf("%s. Says %s. on index: %d", appName, message, index)) } } }() wg := sync.WaitGroup{} for _, port := range ports { wg.Add(1) go func(wg *sync.WaitGroup, port string) { defer wg.Done() server := ifrit.Envoke(http_server.New(":"+port, handler)) logger.Info("lattice-app.up", lager.Data{"port": port}) err = <-server.Wait() if err != nil { logger.Error("shutting down server", err, lager.Data{"server port": port}) } logger.Info("shutting down server", lager.Data{"server port": port}) }(&wg, port) } wg.Wait() logger.Info("shutting latice app") }
func (p *Hello) ServeHTTP(w http.ResponseWriter, r *http.Request) { index, _ := helpers.FetchIndex() styledTemplate.Execute(w, Body{Body: fmt.Sprintf(` <div class="hello"> Lattice </div> <div class="my-index">My Index Is</div> <div class="index">%d</div> <div class="mid-color">Uptime: %s</div> <div class="bottom-color"></div> `, index, time.Since(p.Time))}) }