minor renamings; use generic functions for access to state and config data via type assertions

This commit is contained in:
Helmut Merz 2023-06-29 17:39:48 +02:00
parent fb423d795d
commit bed55a63a2
4 changed files with 20 additions and 13 deletions

View file

@ -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

View file

@ -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
}

View file

@ -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)
}

View file

@ -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) {