From bed55a63a2c8cc37adab6c97822232fbac1beafe Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 29 Jun 2023 17:39:48 +0200 Subject: [PATCH] minor renamings; use generic functions for access to state and config data via type assertions --- config/config.go | 12 ++++++------ lib/core/core.go | 6 +++--- lib/lib.go | 8 ++++++++ server/server.go | 7 +++---- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/config/config.go b/config/config.go index cdd3221..acf0194 100644 --- a/config/config.go +++ b/config/config.go @@ -91,17 +91,17 @@ func Base(name string, starter lib.StartProc) *base { return &base{ name: name, starter: starter, - step: Step, - msgHandler: MsgHandler, - doneHandler: DoneHandler, + step: DefaultStep, + msgHandler: DefaultMsgHandler, + doneHandler: DefaultDoneHandler, actions: nil, } } // will be set by core.init() -var Step lib.StepProc -var MsgHandler lib.MessageHandler -var DoneHandler lib.StepProc +var DefaultStep lib.StepProc +var DefaultMsgHandler lib.MessageHandler +var DefaultDoneHandler lib.StepProc // action configuration diff --git a/lib/core/core.go b/lib/core/core.go index 6898d9a..1e5a4ca 100644 --- a/lib/core/core.go +++ b/lib/core/core.go @@ -44,7 +44,7 @@ func HandleDone(ctx lib.Context) bool { } func init() { - config.Step = Step // avoid import cycle - config.MsgHandler = HandleMessage - config.DoneHandler = HandleDone + config.DefaultStep = Step // avoid import cycle + config.DefaultMsgHandler = HandleMessage + config.DefaultDoneHandler = HandleDone } diff --git a/lib/lib.go b/lib/lib.go index f59da5f..34e8b74 100644 --- a/lib/lib.go +++ b/lib/lib.go @@ -88,3 +88,11 @@ func Send(ctx Context, addr Address, msg Message) { srv.Mailbox() <- msg } } + +func GetState[St ContextState](ctx Context) St { + return ctx.State().(St) +} + +func GetCfg[C Config](ctx Context) C { + return ctx.Config().(C) +} diff --git a/server/server.go b/server/server.go index 2467199..5c14ce9 100644 --- a/server/server.go +++ b/server/server.go @@ -19,14 +19,13 @@ type ServerState struct { } func Start(ctx lib.Context) { - ctx.Config().(*Cfg).BaseCfg.WithDoneHandler(HandleDone) + lib.GetCfg[*Cfg](ctx).BaseCfg.WithDoneHandler(HandleDone) Serve(ctx) lib.RunCtx(ctx, core.Listen) } func HandleDone(ctx lib.Context) bool { - state := ctx.State().(ServerState) - state.server.Shutdown(ctx) + lib.GetState[*ServerState](ctx).server.Shutdown(ctx) return false } @@ -39,7 +38,7 @@ func Serve(ctx lib.Context) { Addr: ":8123", Handler: r, } - ctx.WithState(ServerState{ + ctx.WithState(&ServerState{ server: srv, }) lib.RunCtx(ctx, func(ctx lib.Context) {