core.Delayed(): more generally usable version
This commit is contained in:
parent
a67c31e0b5
commit
eef9fba161
2 changed files with 9 additions and 12 deletions
19
core/core.go
19
core/core.go
|
@ -10,6 +10,14 @@ import (
|
||||||
"git.sr.ht/~cco/go-scopes/logging"
|
"git.sr.ht/~cco/go-scopes/logging"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func Delayed(proc lib.Proc, delay time.Duration) lib.Proc {
|
||||||
|
return func(ctx lib.Context) {
|
||||||
|
logging.Debug(ctx).Int("delay", int(delay)).Msg("lib.Delayed")
|
||||||
|
time.Sleep(delay * time.Millisecond)
|
||||||
|
proc(ctx)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func None(_ lib.Context) {}
|
func None(_ lib.Context) {}
|
||||||
|
|
||||||
func Start(ctx lib.Context) {
|
func Start(ctx lib.Context) {
|
||||||
|
@ -17,17 +25,6 @@ func Start(ctx lib.Context) {
|
||||||
lib.RunCtx(ctx, Listen)
|
lib.RunCtx(ctx, Listen)
|
||||||
}
|
}
|
||||||
|
|
||||||
func DelayedStart(starter lib.StartProc, delay time.Duration) lib.StartProc {
|
|
||||||
if starter == nil {
|
|
||||||
starter = Start
|
|
||||||
}
|
|
||||||
return func(ctx lib.Context) {
|
|
||||||
logging.Debug(ctx).Int("delay", int(delay)).Msg("core.DelayedStart")
|
|
||||||
time.Sleep(delay * time.Millisecond)
|
|
||||||
starter(ctx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func Listen(ctx lib.Context) {
|
func Listen(ctx lib.Context) {
|
||||||
step := ctx.Config().Step()
|
step := ctx.Config().Step()
|
||||||
for step(ctx) {
|
for step(ctx) {
|
||||||
|
|
|
@ -35,7 +35,7 @@ func Config() lib.Config {
|
||||||
server_c.AddRoute("/api", server.MsgHandler("demo", nil, "test-receiver"))
|
server_c.AddRoute("/api", server.MsgHandler("demo", nil, "test-receiver"))
|
||||||
|
|
||||||
test_client := &client.Cfg{
|
test_client := &client.Cfg{
|
||||||
BaseCfg: b("test-client", core.DelayedStart(core.Start, 50)),
|
BaseCfg: b("test-client", core.Delayed(core.Start, 50)),
|
||||||
Url: ovr("http://localhost:8123/api", SERVER_URL),
|
Url: ovr("http://localhost:8123/api", SERVER_URL),
|
||||||
}
|
}
|
||||||
test_client.AddAction("demo", action.Base(client.Send))
|
test_client.AddAction("demo", action.Base(client.Send))
|
||||||
|
|
Loading…
Add table
Reference in a new issue