From c2eab315271da199bdb7a4f8173a145ea5db48a4 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Mon, 24 Jul 2023 10:53:59 +0200 Subject: [PATCH] Context.Send() for basic send functionality --- core/context/context.go | 4 ++++ core/message/address.go | 10 ++++++++++ scopes.go | 5 +++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/core/context/context.go b/core/context/context.go index ff25c0a..d3660a6 100644 --- a/core/context/context.go +++ b/core/context/context.go @@ -60,6 +60,10 @@ func (ctx *context) Done() <-chan struct{} { return ctx.parent.Done() } +func (ctx *context) Send(msg lib.Message) { + ctx.Mailbox() <- msg +} + func (ctx *context) Stop() { // ctx.Warn("Only application-level service can be stopped } diff --git a/core/message/address.go b/core/message/address.go index 49bacc0..7dc686e 100644 --- a/core/message/address.go +++ b/core/message/address.go @@ -61,3 +61,13 @@ func ParseAddress(s string) lib.Address { } return &addr } + +// Addressable interface + +func (addr *address) Address() lib.Address { + return addr +} + +func (_ *address) Cell() lib.Context { + return nil +} diff --git a/scopes.go b/scopes.go index 2fefaeb..0a953ee 100644 --- a/scopes.go +++ b/scopes.go @@ -25,6 +25,7 @@ type Context interface { Mailbox() chan Message WaitGroup() *sync.WaitGroup Stop() + Send(Message) } // message, address @@ -128,8 +129,8 @@ func HandleMsg(ctx Context, msg Message) bool { } func Send(ctx Context, addr Address, msg Message) { - if srv, ok := ctx.Services()[addr.Service()]; ok { - srv.Mailbox() <- msg + if svc, ok := ctx.Services()[addr.Service()]; ok { + svc.Send(msg) } }