go-scopes/lib/core/core.go

41 lines
735 B
Go

package core
import (
"fmt"
"git.sr.ht/~cco/go-scopes/lib"
"git.sr.ht/~cco/go-scopes/lib/action"
)
func Start(ctx lib.Context) {
fmt.Println("Start:", ctx.Config().Name())
lib.RunCtx(ctx, Listen)
}
func Listen(ctx lib.Context) {
step := ctx.Config().Step()
for step(ctx) {
}
}
func Step(ctx lib.Context) (loop bool) {
loop = true
//defer ctx.LogCatch("Step")
select {
case msg := <-ctx.Mailbox():
loop = lib.HandleMsg(ctx, msg)
case <-ctx.Done():
loop = false
}
return
}
func HandleMessage(ctx lib.Context, msg lib.Message) (loop bool) {
loop = true
fmt.Println("core.HandleMessage", msg)
for _, act := range action.Select(ctx, msg) {
//loop = act.Spec().Handler()(act)
loop = act.Handle()
}
return
}