mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-04 06:54:45 +08:00
新增RawGoNode与RawCastGo接口,支持RPC附带原始数据
This commit is contained in:
@@ -2,6 +2,7 @@ package rpc
|
||||
|
||||
import (
|
||||
"github.com/golang/protobuf/proto"
|
||||
"fmt"
|
||||
"sync"
|
||||
)
|
||||
|
||||
@@ -22,11 +23,68 @@ func init(){
|
||||
}
|
||||
}
|
||||
|
||||
func (slf *PBRpcRequestData) MakeRequest(seq uint64,serviceMethod string,noReply bool,inParam []byte) *PBRpcRequestData{
|
||||
func (m *PBRpcRequestData) GetParamValue() interface{}{
|
||||
if m.GetAddtionParam() == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
switch x := m.AddtionParam.AdditionOneof.(type) {
|
||||
case *AdditionParam_SParam:
|
||||
return x.SParam
|
||||
case *AdditionParam_UParam:
|
||||
return x.UParam
|
||||
case *AdditionParam_StrParam:
|
||||
return x.StrParam
|
||||
case *AdditionParam_BParam:
|
||||
return x.BParam
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *PBRpcRequestData) GetAdditionParams() IRawAdditionParam{
|
||||
if m.GetAddtionParam() == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (slf *PBRpcRequestData) MakeRequest(seq uint64,serviceMethod string,noReply bool,inParam []byte,inAdditionParam interface{}) *PBRpcRequestData{
|
||||
slf.Seq = proto.Uint64(seq)
|
||||
slf.ServiceMethod = proto.String(serviceMethod)
|
||||
slf.NoReply = proto.Bool(noReply)
|
||||
slf.InParam = inParam
|
||||
|
||||
if inAdditionParam == nil {
|
||||
return slf
|
||||
}
|
||||
|
||||
switch inAdditionParam.(type) {
|
||||
case *int:
|
||||
slf.AddtionParam = &AdditionParam{AdditionOneof:&AdditionParam_SParam{int64(*inAdditionParam.(*int))}}
|
||||
case *int32:
|
||||
slf.AddtionParam = &AdditionParam{AdditionOneof:&AdditionParam_SParam{int64(*inAdditionParam.(*int32))}}
|
||||
case *int16:
|
||||
slf.AddtionParam = &AdditionParam{AdditionOneof:&AdditionParam_SParam{int64(*inAdditionParam.(*int16))}}
|
||||
case *int64:
|
||||
slf.AddtionParam = &AdditionParam{AdditionOneof:&AdditionParam_SParam{*inAdditionParam.(*int64)}}
|
||||
case *uint:
|
||||
slf.AddtionParam = &AdditionParam{AdditionOneof:&AdditionParam_UParam{uint64(*inAdditionParam.(*uint))}}
|
||||
case *uint32:
|
||||
slf.AddtionParam = &AdditionParam{AdditionOneof:&AdditionParam_UParam{uint64(*inAdditionParam.(*uint32))}}
|
||||
case *uint16:
|
||||
slf.AddtionParam = &AdditionParam{AdditionOneof:&AdditionParam_UParam{uint64(*inAdditionParam.(*uint16))}}
|
||||
case *uint64:
|
||||
slf.AddtionParam = &AdditionParam{AdditionOneof:&AdditionParam_UParam{*inAdditionParam.(*uint64)}}
|
||||
case *string:
|
||||
slf.AddtionParam = &AdditionParam{AdditionOneof:&AdditionParam_StrParam{*inAdditionParam.(*string)}}
|
||||
case *[]byte:
|
||||
slf.AddtionParam = &AdditionParam{AdditionOneof: &AdditionParam_BParam{*inAdditionParam.(*[]byte)}}
|
||||
default:
|
||||
panic(fmt.Sprintf("not support type %+v",inAdditionParam))
|
||||
}
|
||||
|
||||
return slf
|
||||
}
|
||||
|
||||
@@ -50,9 +108,9 @@ func (slf *PBProcessor) Unmarshal(data []byte, msg interface{}) error{
|
||||
}
|
||||
|
||||
|
||||
func (slf *PBProcessor) MakeRpcRequest(seq uint64,serviceMethod string,noReply bool,inParam []byte) IRpcRequestData{
|
||||
func (slf *PBProcessor) MakeRpcRequest(seq uint64,serviceMethod string,noReply bool,inParam []byte,inAdditionParam interface{}) IRpcRequestData{
|
||||
pPbRpcRequestData := rpcPbRequestDataPool.Get().(*PBRpcRequestData)
|
||||
pPbRpcRequestData.MakeRequest(seq,serviceMethod,noReply,inParam)
|
||||
pPbRpcRequestData.MakeRequest(seq,serviceMethod,noReply,inParam,inAdditionParam)
|
||||
return pPbRpcRequestData
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user