beginnings of page functions, and server shutdown gracefully
This commit is contained in:
@@ -11,6 +11,12 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"os/signal"
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.erbosoft.com/amy/amsterdam/config"
|
"git.erbosoft.com/amy/amsterdam/config"
|
||||||
"git.erbosoft.com/amy/amsterdam/ui"
|
"git.erbosoft.com/amy/amsterdam/ui"
|
||||||
"github.com/labstack/echo-contrib/session"
|
"github.com/labstack/echo-contrib/session"
|
||||||
@@ -28,10 +34,7 @@ func setupEcho() *echo.Echo {
|
|||||||
e.Use(session.Middleware(ui.SessionStore))
|
e.Use(session.Middleware(ui.SessionStore))
|
||||||
|
|
||||||
e.GET("/img/*", ui.AmWrap(ui.AmServeImage))
|
e.GET("/img/*", ui.AmWrap(ui.AmServeImage))
|
||||||
e.GET("/", ui.AmWrap(func(ctxt ui.AmContext) (string, any, error) {
|
e.GET("/", ui.AmWrap(TopPage))
|
||||||
ctxt.VarMap().Set("amsterdam_pageTitle", "My Front Page")
|
|
||||||
return "framed_template", "top.jet", nil
|
|
||||||
}))
|
|
||||||
|
|
||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
@@ -43,7 +46,25 @@ func main() {
|
|||||||
ui.SetupTemplates()
|
ui.SetupTemplates()
|
||||||
ui.SetupSessionManager()
|
ui.SetupSessionManager()
|
||||||
|
|
||||||
// Set up Echo and start it. Won't return.
|
// Set up Echo.
|
||||||
e := setupEcho()
|
e := setupEcho()
|
||||||
e.Logger.Fatal(e.Start(":1323"))
|
|
||||||
|
// Set up to trap SIGINT and shut down gracefully
|
||||||
|
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
|
||||||
|
defer stop()
|
||||||
|
|
||||||
|
// Start server
|
||||||
|
go func() {
|
||||||
|
if err := e.Start(":1323"); err != nil && err != http.ErrServerClosed {
|
||||||
|
e.Logger.Fatalf("shutting down the server: %v", err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
// Wait for the interrupt signal and then gracefully shut the server down.
|
||||||
|
<-ctx.Done()
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
if err := e.Shutdown(ctx); err != nil {
|
||||||
|
e.Logger.Fatal(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
* Amsterdam Web Communities System
|
||||||
|
* Copyright (c) 2025 Erbosoft Metaverse Design Solutions, All Rights Reserved
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
// Package main contains the high-level Amsterdam logic.
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "git.erbosoft.com/amy/amsterdam/ui"
|
||||||
|
|
||||||
|
func TopPage(ctxt ui.AmContext) (string, any, error) {
|
||||||
|
ctxt.VarMap().Set("amsterdam_pageTitle", "My Front Page")
|
||||||
|
return "framed_template", "top.jet", nil
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user