Context.Send() for basic send functionality

This commit is contained in:
Helmut Merz 2023-07-24 10:53:59 +02:00
parent 9a609ce880
commit c2eab31527
3 changed files with 17 additions and 2 deletions

View file

@ -60,6 +60,10 @@ func (ctx *context) Done() <-chan struct{} {
return ctx.parent.Done() return ctx.parent.Done()
} }
func (ctx *context) Send(msg lib.Message) {
ctx.Mailbox() <- msg
}
func (ctx *context) Stop() { func (ctx *context) Stop() {
// ctx.Warn("Only application-level service can be stopped // ctx.Warn("Only application-level service can be stopped
} }

View file

@ -61,3 +61,13 @@ func ParseAddress(s string) lib.Address {
} }
return &addr return &addr
} }
// Addressable interface
func (addr *address) Address() lib.Address {
return addr
}
func (_ *address) Cell() lib.Context {
return nil
}

View file

@ -25,6 +25,7 @@ type Context interface {
Mailbox() chan Message Mailbox() chan Message
WaitGroup() *sync.WaitGroup WaitGroup() *sync.WaitGroup
Stop() Stop()
Send(Message)
} }
// message, address // message, address
@ -128,8 +129,8 @@ func HandleMsg(ctx Context, msg Message) bool {
} }
func Send(ctx Context, addr Address, msg Message) { func Send(ctx Context, addr Address, msg Message) {
if srv, ok := ctx.Services()[addr.Service()]; ok { if svc, ok := ctx.Services()[addr.Service()]; ok {
srv.Mailbox() <- msg svc.Send(msg)
} }
} }