diff --git a/cmd/async/main.go b/cmd/async/main.go index cd3a926..b40f29f 100644 --- a/cmd/async/main.go +++ b/cmd/async/main.go @@ -5,7 +5,9 @@ import ( "flag" "fmt" "os" + "os/signal" "path" + "syscall" "git.defalsify.org/vise.git/asm" "git.defalsify.org/vise.git/db" @@ -210,6 +212,19 @@ func main() { Writer: os.Stdout, Config: cfg, } + + cint := make(chan os.Signal) + cterm := make(chan os.Signal) + signal.Notify(cint, os.Interrupt, syscall.SIGINT) + signal.Notify(cterm, os.Interrupt, syscall.SIGTERM) + go func() { + select { + case _ = <-cint: + case _ = <-cterm: + } + sh.Shutdown() + }() + for true { rqs, err = sh.Process(rqs) if err != nil { diff --git a/cmd/http/main.go b/cmd/http/main.go index 819abca..2006a47 100644 --- a/cmd/http/main.go +++ b/cmd/http/main.go @@ -20,6 +20,7 @@ import ( "git.defalsify.org/vise.git/logging" "git.grassecon.net/urdt/ussd/internal/handlers/ussd" + "git.grassecon.net/urdt/ussd/internal/handlers" httpserver "git.grassecon.net/urdt/ussd/internal/http" ) @@ -191,7 +192,8 @@ func main() { rp := &httpserver.DefaultRequestParser{} //sh := httpserver.NewSessionHandler(cfg, rs, stateStore, userdataStore, rp, hl.Init) - sh := httpserver.NewSessionHandler(cfg, rs, stateStore, userdataStore, rp, hl) + bsh := handlers.NewBaseSessionHandler(cfg, rs, stateStore, userdataStore, rp, hl) + sh := httpserver.ToSessionHandler(bsh) s := &http.Server{ Addr: fmt.Sprintf("%s:%s", host, strconv.Itoa(int(port))), Handler: sh, diff --git a/internal/handlers/single.go b/internal/handlers/single.go index 40b0594..3910be8 100644 --- a/internal/handlers/single.go +++ b/internal/handlers/single.go @@ -38,6 +38,7 @@ type RequestSession struct { type engineMaker func(cfg engine.Config, rs resource.Resource, pr *persist.Persister) engine.Engine +// TODO: seems like can remove this. type RequestParser interface { GetSessionId(rq any) (string, error) GetInput(rq any) ([]byte, error) @@ -50,5 +51,5 @@ type RequestHandler interface { Process(rs RequestSession) (RequestSession, error) Output(rs RequestSession) (RequestSession, error) Reset(rs RequestSession) (RequestSession, error) - ShutDown() + Shutdown() }