package core import ( "fmt" "git.sr.ht/~cco/go-scopes/lib" ) 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 = ctx.HandleMsg(msg) case <-ctx.Done(): loop = false } return } func HandleMessage(ctx lib.Context, msg lib.Message) bool { fmt.Println("HandleMessage", msg) return true }