parameter를 좀더 명확하게

This commit is contained in:
2023-07-10 14:30:24 +09:00
parent 8598d59ab4
commit a842845685
2 changed files with 10 additions and 7 deletions

View File

@ -151,14 +151,14 @@ func (re *rpcEngine) loop(ctx context.Context, redisClient *redis.Client, chanNa
var errNoReceiver = errors.New("no receiver") var errNoReceiver = errors.New("no receiver")
type callContext struct { type CallContext struct {
r Receiver r Receiver
t primitive.ObjectID t primitive.ObjectID
} }
var ErrCanExecuteHere = errors.New("go ahead") var ErrCanExecuteHere = errors.New("go ahead")
func (c callContext) call(args ...any) error { func (c *CallContext) Call(args ...any) error {
if c.r.TargetExists(c.t) { if c.r.TargetExists(c.t) {
// 여기 있네? // 여기 있네?
return ErrCanExecuteHere return ErrCanExecuteHere
@ -184,12 +184,15 @@ func (c callContext) call(args ...any) error {
return engine.publish(serialized) return engine.publish(serialized)
} }
func CallOrGo(r Receiver, target primitive.ObjectID, args ...any) error { func Make(r Receiver) *CallContext {
cc := callContext{ return &CallContext{
r: r, r: r,
t: target,
} }
return cc.call(args...) }
func (cc *CallContext) To(target primitive.ObjectID) *CallContext {
cc.t = target
return cc
} }
func encode(target primitive.ObjectID, receiver string, funcname string, args ...any) ([]byte, error) { func encode(target primitive.ObjectID, receiver string, funcname string, args ...any) ([]byte, error) {

View File

@ -22,7 +22,7 @@ func (tr *testReceiver) TargetExists(tid primitive.ObjectID) bool {
func (tr *testReceiver) TestFunc(a string, b string, c int) { func (tr *testReceiver) TestFunc(a string, b string, c int) {
target := primitive.NewObjectID() target := primitive.NewObjectID()
target[0] = byte(rand.Intn(2) * 20) target[0] = byte(rand.Intn(2) * 20)
if CallOrGo(tr, target, a, b) != ErrCanExecuteHere { if Make(tr).To(target).Call(a, b, c) != ErrCanExecuteHere {
return return
} }