From e912c8899357d4907b1b825bcdfed752cbe14032 Mon Sep 17 00:00:00 2001 From: mountain Date: Mon, 10 Jul 2023 10:29:16 +0900 Subject: [PATCH] =?UTF-8?q?rpc.call=20helper=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rpc/rpc.go | 14 ++++++++++---- rpc/rpc_test.go | 7 +++++++ 2 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 rpc/rpc_test.go diff --git a/rpc/rpc.go b/rpc/rpc.go index 69e3515..304e88c 100644 --- a/rpc/rpc.go +++ b/rpc/rpc.go @@ -134,16 +134,14 @@ func (re *rpcEngine) loop(ctx context.Context, redisClient *redis.Client, chanNa var errNoReceiver = errors.New("no receiver") -type RpcCallContext struct { +type callContext struct { r Receiver t primitive.ObjectID } var ErrCanExecuteHere = errors.New("go ahead") -func MakeCallContext(r Receiver) RpcCallContext { return RpcCallContext{r: r} } -func (c *RpcCallContext) Target(t primitive.ObjectID) { c.t = t } -func (c *RpcCallContext) Call(args ...any) error { +func (c callContext) call(args ...any) error { if c.r.TargetExists(c.t) { // 여기 있네? return ErrCanExecuteHere @@ -168,6 +166,14 @@ func (c *RpcCallContext) Call(args ...any) error { return engine.publish(serialized) } +func CallOrGo(r Receiver, target primitive.ObjectID, args ...any) error { + cc := callContext{ + r: r, + t: target, + } + return cc.call(args...) +} + func encode(target primitive.ObjectID, receiver string, funcname string, args ...any) ([]byte, error) { buff := new(bytes.Buffer) diff --git a/rpc/rpc_test.go b/rpc/rpc_test.go new file mode 100644 index 0000000..941db5a --- /dev/null +++ b/rpc/rpc_test.go @@ -0,0 +1,7 @@ +package rpc + +import "testing" + +func TestRpc(t *testing.T) { + +}