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) { + +}