matrix: send 'connect' message upon cell creation
This commit is contained in:
		
							parent
							
								
									5a7cbba536
								
							
						
					
					
						commit
						0f054c36e8
					
				
					 3 changed files with 19 additions and 10 deletions
				
			
		| 
						 | 
					@ -5,6 +5,7 @@ import (
 | 
				
			||||||
	"git.sr.ht/~cco/go-scopes/config"
 | 
						"git.sr.ht/~cco/go-scopes/config"
 | 
				
			||||||
	"git.sr.ht/~cco/go-scopes/core"
 | 
						"git.sr.ht/~cco/go-scopes/core"
 | 
				
			||||||
	"git.sr.ht/~cco/go-scopes/core/action"
 | 
						"git.sr.ht/~cco/go-scopes/core/action"
 | 
				
			||||||
 | 
						"git.sr.ht/~cco/go-scopes/core/message"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Start(ctx lib.Context) {
 | 
					func Start(ctx lib.Context) {
 | 
				
			||||||
| 
						 | 
					@ -13,16 +14,18 @@ func Start(ctx lib.Context) {
 | 
				
			||||||
	core.Start(ctx)
 | 
						core.Start(ctx)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type celLConfig struct {
 | 
					 | 
				
			||||||
	*config.BaseCfg
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func create(act lib.Action) bool {
 | 
					func create(act lib.Action) bool {
 | 
				
			||||||
	ctx := act.Context()
 | 
						msg := act.Message()
 | 
				
			||||||
	//msg := act.Message()
 | 
					 | 
				
			||||||
	//spec := act.ActionSpec()
 | 
						//spec := act.ActionSpec()
 | 
				
			||||||
	cctx := ctx.ChildContext(config.Base("", core.Start))
 | 
						cctx := createCell(act.Context())
 | 
				
			||||||
	core.Start(cctx)
 | 
						nmsg := message.New("matrix", "connect").WithSender(cctx)
 | 
				
			||||||
	// msg.Sender().Cell().Send(message.New("matrix", "connect").WithSender(cctx))
 | 
						msg.Sender().Cell().Send(nmsg)
 | 
				
			||||||
	return true
 | 
						return true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func createCell(ctx lib.Context) lib.Context {
 | 
				
			||||||
 | 
						cfg := config.Base("", core.Start)
 | 
				
			||||||
 | 
						cctx := ctx.ChildContext(cfg)
 | 
				
			||||||
 | 
						cfg.Starter()(cctx)
 | 
				
			||||||
 | 
						return cctx
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,6 +16,7 @@ type ContextState interface{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Context interface {
 | 
					type Context interface {
 | 
				
			||||||
	stdlib_context.Context
 | 
						stdlib_context.Context
 | 
				
			||||||
 | 
						Addressable
 | 
				
			||||||
	Config() Config
 | 
						Config() Config
 | 
				
			||||||
	Name() string
 | 
						Name() string
 | 
				
			||||||
	Parent() Context
 | 
						Parent() Context
 | 
				
			||||||
| 
						 | 
					@ -56,6 +57,7 @@ type Addressable interface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Address interface {
 | 
					type Address interface {
 | 
				
			||||||
	fmt.Stringer
 | 
						fmt.Stringer
 | 
				
			||||||
 | 
						Addressable
 | 
				
			||||||
	Url() string
 | 
						Url() string
 | 
				
			||||||
	Service() string
 | 
						Service() string
 | 
				
			||||||
	Interaction() (string, string)
 | 
						Interaction() (string, string)
 | 
				
			||||||
| 
						 | 
					@ -131,10 +133,14 @@ func HandleMsg(ctx Context, msg Message) bool {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Send(ctx Context, addr Address, msg Message) {
 | 
					func Send(ctx Context, addr Address, msg Message) {
 | 
				
			||||||
 | 
						if msg.Sender() == nil {
 | 
				
			||||||
 | 
							msg.WithSender(ctx)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	if svc, ok := ctx.Services()[addr.Service()]; ok {
 | 
						if svc, ok := ctx.Services()[addr.Service()]; ok {
 | 
				
			||||||
		// TODO: check Address for sid, iid
 | 
							// TODO: check Address for sid, iid
 | 
				
			||||||
		svc.Send(msg)
 | 
							svc.Send(msg)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						// TODO: Warn().Msg("receiver not found")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func GetState[St ContextState](ctx Context) St {
 | 
					func GetState[St ContextState](ctx Context) St {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ func TestMatrixApp(tb *tbase.T) {
 | 
				
			||||||
	t := testing.SetUpApp(tb, etc.ConfigMx())
 | 
						t := testing.SetUpApp(tb, etc.ConfigMx())
 | 
				
			||||||
	t.Run("app-matrix", MxTest)
 | 
						t.Run("app-matrix", MxTest)
 | 
				
			||||||
	t.TearDownApp("matrix")
 | 
						t.TearDownApp("matrix")
 | 
				
			||||||
	t.AssertEqual(t.LogCheck(logfile, true), 7)
 | 
						t.AssertEqual(t.LogCheck(logfile, true), 8)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func MxTest(t *testing.T) {
 | 
					func MxTest(t *testing.T) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue