diff --git a/server/config.go b/server/config.go index da8431e..ca67e5d 100644 --- a/server/config.go +++ b/server/config.go @@ -3,7 +3,7 @@ package server import ( lib "git.sr.ht/~cco/go-scopes" "git.sr.ht/~cco/go-scopes/config" - "git.sr.ht/~cco/go-scopes/core" + "git.sr.ht/~cco/go-scopes/core/action" ) type Cfg struct { @@ -41,6 +41,8 @@ func FileServer(docRoot string) *fsSpec { return &fsSpec{docRoot} } -func MsgHandler() lib.Config { - return config.Base("", core.Start) +func MsgHandler(pattern string, rcvs ...string) lib.Config { + cfg := config.Base("", nil) + cfg.AddAction(pattern, action.Base(action.Forward, rcvs...)) + return cfg } diff --git a/server/server.go b/server/server.go index 3e0883a..673fb46 100644 --- a/server/server.go +++ b/server/server.go @@ -61,10 +61,10 @@ func setRoute(ctx lib.Context, rcfg routeCfg, r *gin.Engine) { func handle(ctx lib.Context, cfg lib.Config, gc *gin.Context) { head := strings.Split(gc.Param("msg"), "/")[1:] - msg := message.New(head...) - //fmt.Printf("*** RCell called: msg: %+v, method: %s\n", msg, gc.Request.Method) cctx := ctx.ChildContext(cfg) + msg := message.New(head...).WithSender(cctx) + //fmt.Printf("*** RCell called: msg: %+v, method: %s\n", msg, gc.Request.Method) core.HandleMessage(cctx, msg) - // cfg.Starter()(cctx) + // if cfg.sync: wait for response message gc.String(http.StatusOK, "Hello World") } diff --git a/tests/etc/etc.go b/tests/etc/etc.go index 03f5034..b1d3a86 100644 --- a/tests/etc/etc.go +++ b/tests/etc/etc.go @@ -32,9 +32,7 @@ func Config() lib.Config { Port: ovr("8123", SERVER_PORT), } server_c.AddRoute("/docs", server.FileServer("html")) - server_mh := server.MsgHandler() - server_mh.AddAction("demo", action.Base(action.Forward, "test-receiver")) - server_c.AddRoute("/api", server_mh) + server_c.AddRoute("/api", server.MsgHandler("demo", "test-receiver")) test_client := &client.Cfg{ BaseCfg: b("test-client", core.Start),