优化rpc返回协议

Signed-off-by: boyce <boyce@atbc.com>
This commit is contained in:
boyce
2020-07-10 16:17:56 +08:00
parent 7e72782c16
commit 93b9c4f89a
9 changed files with 46 additions and 42 deletions

View File

@@ -105,7 +105,7 @@ func (slf *Client) generateSeq() uint64{
return atomic.AddUint64(&slf.startSeq,1)
}
func (slf *Client) AsycGo(rpcHandler IRpcHandler,serviceMethod string,callback reflect.Value, args interface{},replyParam interface{}) error {
func (slf *Client) AsycCall(rpcHandler IRpcHandler,serviceMethod string,callback reflect.Value, args interface{},replyParam interface{}) error {
call := MakeCall()
call.Reply = replyParam
call.callback = &callback
@@ -161,21 +161,27 @@ func (slf *Client) Go(noReply bool,serviceMethod string, args interface{},reply
request := &RpcRequest{}
call.Arg = args
call.Seq = slf.generateSeq()
if noReply == false {
slf.AddPending(call)
}
request.RpcRequestData = processor.MakeRpcRequest(slf.startSeq,serviceMethod,noReply,InParam)
bytes,err := processor.Marshal(request.RpcRequestData)
processor.ReleaseRpcRequest(request.RpcRequestData)
if err != nil {
call.Err = err
slf.RemovePending(call.Seq)
return call
}
if slf.conn == nil {
call.Err = fmt.Errorf("call %s is fail,rpc client is disconnect.",serviceMethod)
slf.RemovePending(call.Seq)
return call
}
err = slf.conn.WriteMsg(bytes)
if err != nil {
slf.RemovePending(call.Seq)
call.Err = err
}