mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-04 06:54:45 +08:00
RPC数据传输优化
This commit is contained in:
99
rpc/gogopbprocessor.go
Normal file
99
rpc/gogopbprocessor.go
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
package rpc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gogo/protobuf/proto"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GoGoPBProcessor struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
var rpcGoGoPbResponseDataPool sync.Pool
|
||||||
|
var rpcGoGoPbRequestDataPool sync.Pool
|
||||||
|
|
||||||
|
|
||||||
|
func init(){
|
||||||
|
rpcGoGoPbResponseDataPool.New = func()interface{}{
|
||||||
|
return &GoGoPBRpcResponseData{}
|
||||||
|
}
|
||||||
|
|
||||||
|
rpcGoGoPbRequestDataPool.New = func()interface{}{
|
||||||
|
return &GoGoPBRpcRequestData{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *GoGoPBRpcRequestData) MakeRequest(seq uint64,rpcMethodId uint32,serviceMethod string,noReply bool,inParam []byte) *GoGoPBRpcRequestData{
|
||||||
|
slf.Seq = seq
|
||||||
|
slf.RpcMethodId = rpcMethodId
|
||||||
|
slf.ServiceMethod = serviceMethod
|
||||||
|
slf.NoReply = noReply
|
||||||
|
slf.InParam = inParam
|
||||||
|
|
||||||
|
return slf
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func (slf *GoGoPBRpcResponseData) MakeRespone(seq uint64,err RpcError,reply []byte) *GoGoPBRpcResponseData{
|
||||||
|
slf.Seq = seq
|
||||||
|
slf.Error = err.Error()
|
||||||
|
slf.Reply = reply
|
||||||
|
|
||||||
|
return slf
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *GoGoPBProcessor) Marshal(v interface{}) ([]byte, error){
|
||||||
|
return proto.Marshal(v.(proto.Message))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *GoGoPBProcessor) Unmarshal(data []byte, msg interface{}) error{
|
||||||
|
protoMsg := msg.(proto.Message)
|
||||||
|
return proto.Unmarshal(data, protoMsg)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *GoGoPBProcessor) MakeRpcRequest(seq uint64,rpcMethodId uint32,serviceMethod string,noReply bool,inParam []byte) IRpcRequestData{
|
||||||
|
pGogoPbRpcRequestData := rpcGoGoPbRequestDataPool.Get().(*GoGoPBRpcRequestData)
|
||||||
|
pGogoPbRpcRequestData.MakeRequest(seq,rpcMethodId,serviceMethod,noReply,inParam)
|
||||||
|
return pGogoPbRpcRequestData
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *GoGoPBProcessor) MakeRpcResponse(seq uint64,err RpcError,reply []byte) IRpcResponseData {
|
||||||
|
pGoGoPBRpcResponseData := rpcGoGoPbResponseDataPool.Get().(*GoGoPBRpcResponseData)
|
||||||
|
pGoGoPBRpcResponseData.MakeRespone(seq,err,reply)
|
||||||
|
return pGoGoPBRpcResponseData
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *GoGoPBProcessor) ReleaseRpcRequest(rpcRequestData IRpcRequestData){
|
||||||
|
rpcGoGoPbRequestDataPool.Put(rpcRequestData)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *GoGoPBProcessor) ReleaseRpcResponse(rpcResponseData IRpcResponseData){
|
||||||
|
rpcGoGoPbResponseDataPool.Put(rpcResponseData)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *GoGoPBProcessor) IsParse(param interface{}) bool {
|
||||||
|
_,ok := param.(proto.Message)
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *GoGoPBProcessor) GetProcessorType() RpcProcessorType{
|
||||||
|
return RpcProcessorGoGoPB
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *GoGoPBRpcRequestData) IsNoReply() bool{
|
||||||
|
return slf.GetNoReply()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *GoGoPBRpcResponseData) GetErr() *RpcError {
|
||||||
|
if slf.GetError() == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return Errorf(slf.GetError())
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
770
rpc/gogorpc.pb.go
Normal file
770
rpc/gogorpc.pb.go
Normal file
@@ -0,0 +1,770 @@
|
|||||||
|
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||||
|
// source: bin/gogopb/gogorpc.proto
|
||||||
|
|
||||||
|
package rpc
|
||||||
|
|
||||||
|
import (
|
||||||
|
fmt "fmt"
|
||||||
|
proto "github.com/gogo/protobuf/proto"
|
||||||
|
io "io"
|
||||||
|
math "math"
|
||||||
|
math_bits "math/bits"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
var _ = proto.Marshal
|
||||||
|
var _ = fmt.Errorf
|
||||||
|
var _ = math.Inf
|
||||||
|
|
||||||
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
|
// is compatible with the proto package it is being compiled against.
|
||||||
|
// A compilation error at this line likely means your copy of the
|
||||||
|
// proto package needs to be updated.
|
||||||
|
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
|
||||||
|
|
||||||
|
type GoGoPBRpcRequestData struct {
|
||||||
|
Seq uint64 `protobuf:"varint,1,opt,name=Seq,proto3" json:"Seq,omitempty"`
|
||||||
|
RpcMethodId uint32 `protobuf:"varint,2,opt,name=RpcMethodId,proto3" json:"RpcMethodId,omitempty"`
|
||||||
|
ServiceMethod string `protobuf:"bytes,3,opt,name=ServiceMethod,proto3" json:"ServiceMethod,omitempty"`
|
||||||
|
NoReply bool `protobuf:"varint,4,opt,name=NoReply,proto3" json:"NoReply,omitempty"`
|
||||||
|
InParam []byte `protobuf:"bytes,5,opt,name=InParam,proto3" json:"InParam,omitempty"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcRequestData) Reset() { *m = GoGoPBRpcRequestData{} }
|
||||||
|
func (m *GoGoPBRpcRequestData) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GoGoPBRpcRequestData) ProtoMessage() {}
|
||||||
|
func (*GoGoPBRpcRequestData) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_b3b900b0f45d7fb5, []int{0}
|
||||||
|
}
|
||||||
|
func (m *GoGoPBRpcRequestData) XXX_Unmarshal(b []byte) error {
|
||||||
|
return m.Unmarshal(b)
|
||||||
|
}
|
||||||
|
func (m *GoGoPBRpcRequestData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
if deterministic {
|
||||||
|
return xxx_messageInfo_GoGoPBRpcRequestData.Marshal(b, m, deterministic)
|
||||||
|
} else {
|
||||||
|
b = b[:cap(b)]
|
||||||
|
n, err := m.MarshalToSizedBuffer(b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return b[:n], nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func (m *GoGoPBRpcRequestData) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_GoGoPBRpcRequestData.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *GoGoPBRpcRequestData) XXX_Size() int {
|
||||||
|
return m.Size()
|
||||||
|
}
|
||||||
|
func (m *GoGoPBRpcRequestData) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_GoGoPBRpcRequestData.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_GoGoPBRpcRequestData proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcRequestData) GetSeq() uint64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Seq
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcRequestData) GetRpcMethodId() uint32 {
|
||||||
|
if m != nil {
|
||||||
|
return m.RpcMethodId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcRequestData) GetServiceMethod() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.ServiceMethod
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcRequestData) GetNoReply() bool {
|
||||||
|
if m != nil {
|
||||||
|
return m.NoReply
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcRequestData) GetInParam() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.InParam
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type GoGoPBRpcResponseData struct {
|
||||||
|
Seq uint64 `protobuf:"varint,1,opt,name=Seq,proto3" json:"Seq,omitempty"`
|
||||||
|
Error string `protobuf:"bytes,2,opt,name=Error,proto3" json:"Error,omitempty"`
|
||||||
|
Reply []byte `protobuf:"bytes,3,opt,name=Reply,proto3" json:"Reply,omitempty"`
|
||||||
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
|
XXX_unrecognized []byte `json:"-"`
|
||||||
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcResponseData) Reset() { *m = GoGoPBRpcResponseData{} }
|
||||||
|
func (m *GoGoPBRpcResponseData) String() string { return proto.CompactTextString(m) }
|
||||||
|
func (*GoGoPBRpcResponseData) ProtoMessage() {}
|
||||||
|
func (*GoGoPBRpcResponseData) Descriptor() ([]byte, []int) {
|
||||||
|
return fileDescriptor_b3b900b0f45d7fb5, []int{1}
|
||||||
|
}
|
||||||
|
func (m *GoGoPBRpcResponseData) XXX_Unmarshal(b []byte) error {
|
||||||
|
return m.Unmarshal(b)
|
||||||
|
}
|
||||||
|
func (m *GoGoPBRpcResponseData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
|
if deterministic {
|
||||||
|
return xxx_messageInfo_GoGoPBRpcResponseData.Marshal(b, m, deterministic)
|
||||||
|
} else {
|
||||||
|
b = b[:cap(b)]
|
||||||
|
n, err := m.MarshalToSizedBuffer(b)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return b[:n], nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func (m *GoGoPBRpcResponseData) XXX_Merge(src proto.Message) {
|
||||||
|
xxx_messageInfo_GoGoPBRpcResponseData.Merge(m, src)
|
||||||
|
}
|
||||||
|
func (m *GoGoPBRpcResponseData) XXX_Size() int {
|
||||||
|
return m.Size()
|
||||||
|
}
|
||||||
|
func (m *GoGoPBRpcResponseData) XXX_DiscardUnknown() {
|
||||||
|
xxx_messageInfo_GoGoPBRpcResponseData.DiscardUnknown(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
var xxx_messageInfo_GoGoPBRpcResponseData proto.InternalMessageInfo
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcResponseData) GetSeq() uint64 {
|
||||||
|
if m != nil {
|
||||||
|
return m.Seq
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcResponseData) GetError() string {
|
||||||
|
if m != nil {
|
||||||
|
return m.Error
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcResponseData) GetReply() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.Reply
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
proto.RegisterType((*GoGoPBRpcRequestData)(nil), "rpc.GoGoPBRpcRequestData")
|
||||||
|
proto.RegisterType((*GoGoPBRpcResponseData)(nil), "rpc.GoGoPBRpcResponseData")
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { proto.RegisterFile("bin/gogopb/gogorpc.proto", fileDescriptor_b3b900b0f45d7fb5) }
|
||||||
|
|
||||||
|
var fileDescriptor_b3b900b0f45d7fb5 = []byte{
|
||||||
|
// 241 bytes of a gzipped FileDescriptorProto
|
||||||
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x48, 0xca, 0xcc, 0xd3,
|
||||||
|
0x4f, 0xcf, 0x4f, 0xcf, 0x2f, 0x48, 0x02, 0x53, 0x45, 0x05, 0xc9, 0x7a, 0x05, 0x45, 0xf9, 0x25,
|
||||||
|
0xf9, 0x42, 0xcc, 0x45, 0x05, 0xc9, 0x4a, 0x4b, 0x18, 0xb9, 0x44, 0xdc, 0xf3, 0xdd, 0xf3, 0x03,
|
||||||
|
0x9c, 0x82, 0x0a, 0x92, 0x83, 0x52, 0x0b, 0x4b, 0x53, 0x8b, 0x4b, 0x5c, 0x12, 0x4b, 0x12, 0x85,
|
||||||
|
0x04, 0xb8, 0x98, 0x83, 0x53, 0x0b, 0x25, 0x18, 0x15, 0x18, 0x35, 0x58, 0x82, 0x40, 0x4c, 0x21,
|
||||||
|
0x05, 0x2e, 0xee, 0xa0, 0x82, 0x64, 0xdf, 0xd4, 0x92, 0x8c, 0xfc, 0x14, 0xcf, 0x14, 0x09, 0x26,
|
||||||
|
0x05, 0x46, 0x0d, 0xde, 0x20, 0x64, 0x21, 0x21, 0x15, 0x2e, 0xde, 0xe0, 0xd4, 0xa2, 0xb2, 0xcc,
|
||||||
|
0xe4, 0x54, 0x88, 0x90, 0x04, 0xb3, 0x02, 0xa3, 0x06, 0x67, 0x10, 0xaa, 0xa0, 0x90, 0x04, 0x17,
|
||||||
|
0xbb, 0x5f, 0x7e, 0x50, 0x6a, 0x41, 0x4e, 0xa5, 0x04, 0x8b, 0x02, 0xa3, 0x06, 0x47, 0x10, 0x8c,
|
||||||
|
0x0b, 0x92, 0xf1, 0xcc, 0x0b, 0x48, 0x2c, 0x4a, 0xcc, 0x95, 0x60, 0x55, 0x60, 0xd4, 0xe0, 0x09,
|
||||||
|
0x82, 0x71, 0x95, 0x42, 0xb9, 0x44, 0x91, 0x5c, 0x59, 0x5c, 0x90, 0x9f, 0x57, 0x9c, 0x8a, 0xc3,
|
||||||
|
0x99, 0x22, 0x5c, 0xac, 0xae, 0x45, 0x45, 0xf9, 0x45, 0x60, 0x07, 0x72, 0x06, 0x41, 0x38, 0x20,
|
||||||
|
0x51, 0x88, 0x95, 0xcc, 0x60, 0x83, 0x21, 0x1c, 0x27, 0xe1, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c,
|
||||||
|
0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x31, 0x8a, 0x55, 0x4f, 0xbf, 0xa8, 0x20, 0x39, 0x89, 0x0d,
|
||||||
|
0x1c, 0x3c, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe8, 0x18, 0x52, 0x1a, 0x3a, 0x01, 0x00,
|
||||||
|
0x00,
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcRequestData) Marshal() (dAtA []byte, err error) {
|
||||||
|
size := m.Size()
|
||||||
|
dAtA = make([]byte, size)
|
||||||
|
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return dAtA[:n], nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcRequestData) MarshalTo(dAtA []byte) (int, error) {
|
||||||
|
size := m.Size()
|
||||||
|
return m.MarshalToSizedBuffer(dAtA[:size])
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcRequestData) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||||
|
i := len(dAtA)
|
||||||
|
_ = i
|
||||||
|
var l int
|
||||||
|
_ = l
|
||||||
|
if m.XXX_unrecognized != nil {
|
||||||
|
i -= len(m.XXX_unrecognized)
|
||||||
|
copy(dAtA[i:], m.XXX_unrecognized)
|
||||||
|
}
|
||||||
|
if len(m.InParam) > 0 {
|
||||||
|
i -= len(m.InParam)
|
||||||
|
copy(dAtA[i:], m.InParam)
|
||||||
|
i = encodeVarintGogorpc(dAtA, i, uint64(len(m.InParam)))
|
||||||
|
i--
|
||||||
|
dAtA[i] = 0x2a
|
||||||
|
}
|
||||||
|
if m.NoReply {
|
||||||
|
i--
|
||||||
|
if m.NoReply {
|
||||||
|
dAtA[i] = 1
|
||||||
|
} else {
|
||||||
|
dAtA[i] = 0
|
||||||
|
}
|
||||||
|
i--
|
||||||
|
dAtA[i] = 0x20
|
||||||
|
}
|
||||||
|
if len(m.ServiceMethod) > 0 {
|
||||||
|
i -= len(m.ServiceMethod)
|
||||||
|
copy(dAtA[i:], m.ServiceMethod)
|
||||||
|
i = encodeVarintGogorpc(dAtA, i, uint64(len(m.ServiceMethod)))
|
||||||
|
i--
|
||||||
|
dAtA[i] = 0x1a
|
||||||
|
}
|
||||||
|
if m.RpcMethodId != 0 {
|
||||||
|
i = encodeVarintGogorpc(dAtA, i, uint64(m.RpcMethodId))
|
||||||
|
i--
|
||||||
|
dAtA[i] = 0x10
|
||||||
|
}
|
||||||
|
if m.Seq != 0 {
|
||||||
|
i = encodeVarintGogorpc(dAtA, i, uint64(m.Seq))
|
||||||
|
i--
|
||||||
|
dAtA[i] = 0x8
|
||||||
|
}
|
||||||
|
return len(dAtA) - i, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcResponseData) Marshal() (dAtA []byte, err error) {
|
||||||
|
size := m.Size()
|
||||||
|
dAtA = make([]byte, size)
|
||||||
|
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return dAtA[:n], nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcResponseData) MarshalTo(dAtA []byte) (int, error) {
|
||||||
|
size := m.Size()
|
||||||
|
return m.MarshalToSizedBuffer(dAtA[:size])
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcResponseData) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||||
|
i := len(dAtA)
|
||||||
|
_ = i
|
||||||
|
var l int
|
||||||
|
_ = l
|
||||||
|
if m.XXX_unrecognized != nil {
|
||||||
|
i -= len(m.XXX_unrecognized)
|
||||||
|
copy(dAtA[i:], m.XXX_unrecognized)
|
||||||
|
}
|
||||||
|
if len(m.Reply) > 0 {
|
||||||
|
i -= len(m.Reply)
|
||||||
|
copy(dAtA[i:], m.Reply)
|
||||||
|
i = encodeVarintGogorpc(dAtA, i, uint64(len(m.Reply)))
|
||||||
|
i--
|
||||||
|
dAtA[i] = 0x1a
|
||||||
|
}
|
||||||
|
if len(m.Error) > 0 {
|
||||||
|
i -= len(m.Error)
|
||||||
|
copy(dAtA[i:], m.Error)
|
||||||
|
i = encodeVarintGogorpc(dAtA, i, uint64(len(m.Error)))
|
||||||
|
i--
|
||||||
|
dAtA[i] = 0x12
|
||||||
|
}
|
||||||
|
if m.Seq != 0 {
|
||||||
|
i = encodeVarintGogorpc(dAtA, i, uint64(m.Seq))
|
||||||
|
i--
|
||||||
|
dAtA[i] = 0x8
|
||||||
|
}
|
||||||
|
return len(dAtA) - i, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func encodeVarintGogorpc(dAtA []byte, offset int, v uint64) int {
|
||||||
|
offset -= sovGogorpc(v)
|
||||||
|
base := offset
|
||||||
|
for v >= 1<<7 {
|
||||||
|
dAtA[offset] = uint8(v&0x7f | 0x80)
|
||||||
|
v >>= 7
|
||||||
|
offset++
|
||||||
|
}
|
||||||
|
dAtA[offset] = uint8(v)
|
||||||
|
return base
|
||||||
|
}
|
||||||
|
func (m *GoGoPBRpcRequestData) Size() (n int) {
|
||||||
|
if m == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
var l int
|
||||||
|
_ = l
|
||||||
|
if m.Seq != 0 {
|
||||||
|
n += 1 + sovGogorpc(uint64(m.Seq))
|
||||||
|
}
|
||||||
|
if m.RpcMethodId != 0 {
|
||||||
|
n += 1 + sovGogorpc(uint64(m.RpcMethodId))
|
||||||
|
}
|
||||||
|
l = len(m.ServiceMethod)
|
||||||
|
if l > 0 {
|
||||||
|
n += 1 + l + sovGogorpc(uint64(l))
|
||||||
|
}
|
||||||
|
if m.NoReply {
|
||||||
|
n += 2
|
||||||
|
}
|
||||||
|
l = len(m.InParam)
|
||||||
|
if l > 0 {
|
||||||
|
n += 1 + l + sovGogorpc(uint64(l))
|
||||||
|
}
|
||||||
|
if m.XXX_unrecognized != nil {
|
||||||
|
n += len(m.XXX_unrecognized)
|
||||||
|
}
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *GoGoPBRpcResponseData) Size() (n int) {
|
||||||
|
if m == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
var l int
|
||||||
|
_ = l
|
||||||
|
if m.Seq != 0 {
|
||||||
|
n += 1 + sovGogorpc(uint64(m.Seq))
|
||||||
|
}
|
||||||
|
l = len(m.Error)
|
||||||
|
if l > 0 {
|
||||||
|
n += 1 + l + sovGogorpc(uint64(l))
|
||||||
|
}
|
||||||
|
l = len(m.Reply)
|
||||||
|
if l > 0 {
|
||||||
|
n += 1 + l + sovGogorpc(uint64(l))
|
||||||
|
}
|
||||||
|
if m.XXX_unrecognized != nil {
|
||||||
|
n += len(m.XXX_unrecognized)
|
||||||
|
}
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
|
||||||
|
func sovGogorpc(x uint64) (n int) {
|
||||||
|
return (math_bits.Len64(x|1) + 6) / 7
|
||||||
|
}
|
||||||
|
func sozGogorpc(x uint64) (n int) {
|
||||||
|
return sovGogorpc(uint64((x << 1) ^ uint64((int64(x) >> 63))))
|
||||||
|
}
|
||||||
|
func (m *GoGoPBRpcRequestData) Unmarshal(dAtA []byte) error {
|
||||||
|
l := len(dAtA)
|
||||||
|
iNdEx := 0
|
||||||
|
for iNdEx < l {
|
||||||
|
preIndex := iNdEx
|
||||||
|
var wire uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGogorpc
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
wire |= uint64(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fieldNum := int32(wire >> 3)
|
||||||
|
wireType := int(wire & 0x7)
|
||||||
|
if wireType == 4 {
|
||||||
|
return fmt.Errorf("proto: GoGoPBRpcRequestData: wiretype end group for non-group")
|
||||||
|
}
|
||||||
|
if fieldNum <= 0 {
|
||||||
|
return fmt.Errorf("proto: GoGoPBRpcRequestData: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||||
|
}
|
||||||
|
switch fieldNum {
|
||||||
|
case 1:
|
||||||
|
if wireType != 0 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Seq", wireType)
|
||||||
|
}
|
||||||
|
m.Seq = 0
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGogorpc
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
m.Seq |= uint64(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
if wireType != 0 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field RpcMethodId", wireType)
|
||||||
|
}
|
||||||
|
m.RpcMethodId = 0
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGogorpc
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
m.RpcMethodId |= uint32(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field ServiceMethod", wireType)
|
||||||
|
}
|
||||||
|
var stringLen uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGogorpc
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLen |= uint64(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
intStringLen := int(stringLen)
|
||||||
|
if intStringLen < 0 {
|
||||||
|
return ErrInvalidLengthGogorpc
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + intStringLen
|
||||||
|
if postIndex < 0 {
|
||||||
|
return ErrInvalidLengthGogorpc
|
||||||
|
}
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.ServiceMethod = string(dAtA[iNdEx:postIndex])
|
||||||
|
iNdEx = postIndex
|
||||||
|
case 4:
|
||||||
|
if wireType != 0 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field NoReply", wireType)
|
||||||
|
}
|
||||||
|
var v int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGogorpc
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
v |= int(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m.NoReply = bool(v != 0)
|
||||||
|
case 5:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field InParam", wireType)
|
||||||
|
}
|
||||||
|
var byteLen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGogorpc
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
byteLen |= int(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if byteLen < 0 {
|
||||||
|
return ErrInvalidLengthGogorpc
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + byteLen
|
||||||
|
if postIndex < 0 {
|
||||||
|
return ErrInvalidLengthGogorpc
|
||||||
|
}
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.InParam = append(m.InParam[:0], dAtA[iNdEx:postIndex]...)
|
||||||
|
if m.InParam == nil {
|
||||||
|
m.InParam = []byte{}
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
|
default:
|
||||||
|
iNdEx = preIndex
|
||||||
|
skippy, err := skipGogorpc(dAtA[iNdEx:])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if skippy < 0 {
|
||||||
|
return ErrInvalidLengthGogorpc
|
||||||
|
}
|
||||||
|
if (iNdEx + skippy) < 0 {
|
||||||
|
return ErrInvalidLengthGogorpc
|
||||||
|
}
|
||||||
|
if (iNdEx + skippy) > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
|
||||||
|
iNdEx += skippy
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if iNdEx > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (m *GoGoPBRpcResponseData) Unmarshal(dAtA []byte) error {
|
||||||
|
l := len(dAtA)
|
||||||
|
iNdEx := 0
|
||||||
|
for iNdEx < l {
|
||||||
|
preIndex := iNdEx
|
||||||
|
var wire uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGogorpc
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
wire |= uint64(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fieldNum := int32(wire >> 3)
|
||||||
|
wireType := int(wire & 0x7)
|
||||||
|
if wireType == 4 {
|
||||||
|
return fmt.Errorf("proto: GoGoPBRpcResponseData: wiretype end group for non-group")
|
||||||
|
}
|
||||||
|
if fieldNum <= 0 {
|
||||||
|
return fmt.Errorf("proto: GoGoPBRpcResponseData: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||||
|
}
|
||||||
|
switch fieldNum {
|
||||||
|
case 1:
|
||||||
|
if wireType != 0 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Seq", wireType)
|
||||||
|
}
|
||||||
|
m.Seq = 0
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGogorpc
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
m.Seq |= uint64(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
|
||||||
|
}
|
||||||
|
var stringLen uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGogorpc
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLen |= uint64(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
intStringLen := int(stringLen)
|
||||||
|
if intStringLen < 0 {
|
||||||
|
return ErrInvalidLengthGogorpc
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + intStringLen
|
||||||
|
if postIndex < 0 {
|
||||||
|
return ErrInvalidLengthGogorpc
|
||||||
|
}
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.Error = string(dAtA[iNdEx:postIndex])
|
||||||
|
iNdEx = postIndex
|
||||||
|
case 3:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Reply", wireType)
|
||||||
|
}
|
||||||
|
var byteLen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGogorpc
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
byteLen |= int(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if byteLen < 0 {
|
||||||
|
return ErrInvalidLengthGogorpc
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + byteLen
|
||||||
|
if postIndex < 0 {
|
||||||
|
return ErrInvalidLengthGogorpc
|
||||||
|
}
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.Reply = append(m.Reply[:0], dAtA[iNdEx:postIndex]...)
|
||||||
|
if m.Reply == nil {
|
||||||
|
m.Reply = []byte{}
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
|
default:
|
||||||
|
iNdEx = preIndex
|
||||||
|
skippy, err := skipGogorpc(dAtA[iNdEx:])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if skippy < 0 {
|
||||||
|
return ErrInvalidLengthGogorpc
|
||||||
|
}
|
||||||
|
if (iNdEx + skippy) < 0 {
|
||||||
|
return ErrInvalidLengthGogorpc
|
||||||
|
}
|
||||||
|
if (iNdEx + skippy) > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
|
||||||
|
iNdEx += skippy
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if iNdEx > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func skipGogorpc(dAtA []byte) (n int, err error) {
|
||||||
|
l := len(dAtA)
|
||||||
|
iNdEx := 0
|
||||||
|
depth := 0
|
||||||
|
for iNdEx < l {
|
||||||
|
var wire uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return 0, ErrIntOverflowGogorpc
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return 0, io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
wire |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wireType := int(wire & 0x7)
|
||||||
|
switch wireType {
|
||||||
|
case 0:
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return 0, ErrIntOverflowGogorpc
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return 0, io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
iNdEx++
|
||||||
|
if dAtA[iNdEx-1] < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
iNdEx += 8
|
||||||
|
case 2:
|
||||||
|
var length int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return 0, ErrIntOverflowGogorpc
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return 0, io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
length |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if length < 0 {
|
||||||
|
return 0, ErrInvalidLengthGogorpc
|
||||||
|
}
|
||||||
|
iNdEx += length
|
||||||
|
case 3:
|
||||||
|
depth++
|
||||||
|
case 4:
|
||||||
|
if depth == 0 {
|
||||||
|
return 0, ErrUnexpectedEndOfGroupGogorpc
|
||||||
|
}
|
||||||
|
depth--
|
||||||
|
case 5:
|
||||||
|
iNdEx += 4
|
||||||
|
default:
|
||||||
|
return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
|
||||||
|
}
|
||||||
|
if iNdEx < 0 {
|
||||||
|
return 0, ErrInvalidLengthGogorpc
|
||||||
|
}
|
||||||
|
if depth == 0 {
|
||||||
|
return iNdEx, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0, io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
ErrInvalidLengthGogorpc = fmt.Errorf("proto: negative length found during unmarshaling")
|
||||||
|
ErrIntOverflowGogorpc = fmt.Errorf("proto: integer overflow")
|
||||||
|
ErrUnexpectedEndOfGroupGogorpc = fmt.Errorf("proto: unexpected end of group")
|
||||||
|
)
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
package rpc;
|
package rpc;
|
||||||
option go_package =".;rpc";
|
option go_package = "./rpc";
|
||||||
message PBRpcRequestData{
|
|
||||||
|
message GoGoPBRpcRequestData{
|
||||||
uint64 Seq = 1;
|
uint64 Seq = 1;
|
||||||
uint32 RpcMethodId = 2;
|
uint32 RpcMethodId = 2;
|
||||||
string ServiceMethod = 3;
|
string ServiceMethod = 3;
|
||||||
bool NoReply = 4;
|
bool NoReply = 4;
|
||||||
bytes InParam = 5;
|
bytes InParam = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
message PBRpcResponseData{
|
message GoGoPBRpcResponseData{
|
||||||
uint64 Seq = 1;
|
uint64 Seq = 1;
|
||||||
string Error = 2;
|
string Error = 2;
|
||||||
bytes Reply = 3;
|
bytes Reply = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
package rpc
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/golang/protobuf/proto"
|
|
||||||
"sync"
|
|
||||||
)
|
|
||||||
|
|
||||||
type PBProcessor struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
var rpcPbResponseDataPool sync.Pool
|
|
||||||
var rpcPbRequestDataPool sync.Pool
|
|
||||||
|
|
||||||
|
|
||||||
func init(){
|
|
||||||
rpcPbResponseDataPool.New = func()interface{}{
|
|
||||||
return &PBRpcResponseData{}
|
|
||||||
}
|
|
||||||
|
|
||||||
rpcPbRequestDataPool.New = func()interface{}{
|
|
||||||
return &PBRpcRequestData{}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *PBRpcRequestData) MakeRequest(seq uint64,rpcMethodId uint32,serviceMethod string,noReply bool,inParam []byte) *PBRpcRequestData{
|
|
||||||
slf.Seq = seq
|
|
||||||
slf.RpcMethodId = rpcMethodId
|
|
||||||
slf.ServiceMethod = serviceMethod
|
|
||||||
slf.NoReply = noReply
|
|
||||||
slf.InParam = inParam
|
|
||||||
|
|
||||||
return slf
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
func (slf *PBRpcResponseData) MakeRespone(seq uint64,err RpcError,reply []byte) *PBRpcResponseData{
|
|
||||||
slf.Seq = seq
|
|
||||||
slf.Error = err.Error()
|
|
||||||
slf.Reply = reply
|
|
||||||
|
|
||||||
return slf
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *PBProcessor) Marshal(v interface{}) ([]byte, error){
|
|
||||||
return proto.Marshal(v.(proto.Message))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *PBProcessor) Unmarshal(data []byte, msg interface{}) error{
|
|
||||||
protoMsg := msg.(proto.Message)
|
|
||||||
return proto.Unmarshal(data, protoMsg)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *PBProcessor) MakeRpcRequest(seq uint64,rpcMethodId uint32,serviceMethod string,noReply bool,inParam []byte) IRpcRequestData{
|
|
||||||
pPbRpcRequestData := rpcPbRequestDataPool.Get().(*PBRpcRequestData)
|
|
||||||
pPbRpcRequestData.MakeRequest(seq,rpcMethodId,serviceMethod,noReply,inParam)
|
|
||||||
return pPbRpcRequestData
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *PBProcessor) MakeRpcResponse(seq uint64,err RpcError,reply []byte) IRpcResponseData {
|
|
||||||
pPBRpcResponseData := rpcPbResponseDataPool.Get().(*PBRpcResponseData)
|
|
||||||
pPBRpcResponseData.MakeRespone(seq,err,reply)
|
|
||||||
return pPBRpcResponseData
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *PBProcessor) ReleaseRpcRequest(rpcRequestData IRpcRequestData){
|
|
||||||
rpcPbRequestDataPool.Put(rpcRequestData)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *PBProcessor) ReleaseRpcResponse(rpcResponseData IRpcResponseData){
|
|
||||||
rpcPbResponseDataPool.Put(rpcResponseData)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *PBProcessor) IsParse(param interface{}) bool {
|
|
||||||
_,ok := param.(proto.Message)
|
|
||||||
return ok
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *PBProcessor) GetProcessorType() RpcProcessorType{
|
|
||||||
return RpcProcessorPb
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *PBRpcRequestData) IsNoReply() bool{
|
|
||||||
return slf.GetNoReply()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *PBRpcResponseData) GetErr() *RpcError {
|
|
||||||
if slf.GetError() == "" {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return Errorf(slf.GetError())
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
268
rpc/rpc.pb.go
268
rpc/rpc.pb.go
@@ -1,268 +0,0 @@
|
|||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-go v1.23.0
|
|
||||||
// protoc v3.11.4
|
|
||||||
// source: proto/rpcproto/rpc.proto
|
|
||||||
|
|
||||||
package rpc
|
|
||||||
|
|
||||||
import (
|
|
||||||
proto "github.com/golang/protobuf/proto"
|
|
||||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
|
||||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
|
||||||
reflect "reflect"
|
|
||||||
sync "sync"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
// Verify that this generated code is sufficiently up-to-date.
|
|
||||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
|
||||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
|
||||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
|
||||||
)
|
|
||||||
|
|
||||||
// This is a compile-time assertion that a sufficiently up-to-date version
|
|
||||||
// of the legacy proto package is being used.
|
|
||||||
const _ = proto.ProtoPackageIsVersion4
|
|
||||||
|
|
||||||
type PBRpcRequestData struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
Seq uint64 `protobuf:"varint,1,opt,name=Seq,proto3" json:"Seq,omitempty"`
|
|
||||||
RpcMethodId uint32 `protobuf:"varint,2,opt,name=RpcMethodId,proto3" json:"RpcMethodId,omitempty"`
|
|
||||||
ServiceMethod string `protobuf:"bytes,3,opt,name=ServiceMethod,proto3" json:"ServiceMethod,omitempty"`
|
|
||||||
NoReply bool `protobuf:"varint,4,opt,name=NoReply,proto3" json:"NoReply,omitempty"`
|
|
||||||
InParam []byte `protobuf:"bytes,5,opt,name=InParam,proto3" json:"InParam,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PBRpcRequestData) Reset() {
|
|
||||||
*x = PBRpcRequestData{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_proto_rpcproto_rpc_proto_msgTypes[0]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PBRpcRequestData) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*PBRpcRequestData) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *PBRpcRequestData) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_proto_rpcproto_rpc_proto_msgTypes[0]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use PBRpcRequestData.ProtoReflect.Descriptor instead.
|
|
||||||
func (*PBRpcRequestData) Descriptor() ([]byte, []int) {
|
|
||||||
return file_proto_rpcproto_rpc_proto_rawDescGZIP(), []int{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PBRpcRequestData) GetSeq() uint64 {
|
|
||||||
if x != nil {
|
|
||||||
return x.Seq
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PBRpcRequestData) GetRpcMethodId() uint32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.RpcMethodId
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PBRpcRequestData) GetServiceMethod() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.ServiceMethod
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PBRpcRequestData) GetNoReply() bool {
|
|
||||||
if x != nil {
|
|
||||||
return x.NoReply
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PBRpcRequestData) GetInParam() []byte {
|
|
||||||
if x != nil {
|
|
||||||
return x.InParam
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type PBRpcResponseData struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
Seq uint64 `protobuf:"varint,1,opt,name=Seq,proto3" json:"Seq,omitempty"`
|
|
||||||
Error string `protobuf:"bytes,2,opt,name=Error,proto3" json:"Error,omitempty"`
|
|
||||||
Reply []byte `protobuf:"bytes,3,opt,name=Reply,proto3" json:"Reply,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PBRpcResponseData) Reset() {
|
|
||||||
*x = PBRpcResponseData{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_proto_rpcproto_rpc_proto_msgTypes[1]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PBRpcResponseData) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*PBRpcResponseData) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *PBRpcResponseData) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_proto_rpcproto_rpc_proto_msgTypes[1]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use PBRpcResponseData.ProtoReflect.Descriptor instead.
|
|
||||||
func (*PBRpcResponseData) Descriptor() ([]byte, []int) {
|
|
||||||
return file_proto_rpcproto_rpc_proto_rawDescGZIP(), []int{1}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PBRpcResponseData) GetSeq() uint64 {
|
|
||||||
if x != nil {
|
|
||||||
return x.Seq
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PBRpcResponseData) GetError() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Error
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PBRpcResponseData) GetReply() []byte {
|
|
||||||
if x != nil {
|
|
||||||
return x.Reply
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var File_proto_rpcproto_rpc_proto protoreflect.FileDescriptor
|
|
||||||
|
|
||||||
var file_proto_rpcproto_rpc_proto_rawDesc = []byte{
|
|
||||||
0x0a, 0x18, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x70, 0x63, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
|
||||||
0x2f, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x72, 0x70, 0x63, 0x22,
|
|
||||||
0xa0, 0x01, 0x0a, 0x10, 0x50, 0x42, 0x52, 0x70, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
|
||||||
0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28,
|
|
||||||
0x04, 0x52, 0x03, 0x53, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x70, 0x63, 0x4d, 0x65, 0x74,
|
|
||||||
0x68, 0x6f, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x52, 0x70, 0x63,
|
|
||||||
0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76,
|
|
||||||
0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
|
|
||||||
0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18,
|
|
||||||
0x0a, 0x07, 0x4e, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52,
|
|
||||||
0x07, 0x4e, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x6e, 0x50, 0x61,
|
|
||||||
0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x49, 0x6e, 0x50, 0x61, 0x72,
|
|
||||||
0x61, 0x6d, 0x22, 0x51, 0x0a, 0x11, 0x50, 0x42, 0x52, 0x70, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
|
||||||
0x6e, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x71, 0x18, 0x01,
|
|
||||||
0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x53, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x72, 0x72,
|
|
||||||
0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12,
|
|
||||||
0x14, 0x0a, 0x05, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05,
|
|
||||||
0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x07, 0x5a, 0x05, 0x2e, 0x3b, 0x72, 0x70, 0x63, 0x62, 0x06,
|
|
||||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
file_proto_rpcproto_rpc_proto_rawDescOnce sync.Once
|
|
||||||
file_proto_rpcproto_rpc_proto_rawDescData = file_proto_rpcproto_rpc_proto_rawDesc
|
|
||||||
)
|
|
||||||
|
|
||||||
func file_proto_rpcproto_rpc_proto_rawDescGZIP() []byte {
|
|
||||||
file_proto_rpcproto_rpc_proto_rawDescOnce.Do(func() {
|
|
||||||
file_proto_rpcproto_rpc_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_rpcproto_rpc_proto_rawDescData)
|
|
||||||
})
|
|
||||||
return file_proto_rpcproto_rpc_proto_rawDescData
|
|
||||||
}
|
|
||||||
|
|
||||||
var file_proto_rpcproto_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
|
|
||||||
var file_proto_rpcproto_rpc_proto_goTypes = []interface{}{
|
|
||||||
(*PBRpcRequestData)(nil), // 0: rpc.PBRpcRequestData
|
|
||||||
(*PBRpcResponseData)(nil), // 1: rpc.PBRpcResponseData
|
|
||||||
}
|
|
||||||
var file_proto_rpcproto_rpc_proto_depIdxs = []int32{
|
|
||||||
0, // [0:0] is the sub-list for method output_type
|
|
||||||
0, // [0:0] is the sub-list for method input_type
|
|
||||||
0, // [0:0] is the sub-list for extension type_name
|
|
||||||
0, // [0:0] is the sub-list for extension extendee
|
|
||||||
0, // [0:0] is the sub-list for field type_name
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() { file_proto_rpcproto_rpc_proto_init() }
|
|
||||||
func file_proto_rpcproto_rpc_proto_init() {
|
|
||||||
if File_proto_rpcproto_rpc_proto != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if !protoimpl.UnsafeEnabled {
|
|
||||||
file_proto_rpcproto_rpc_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*PBRpcRequestData); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_proto_rpcproto_rpc_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*PBRpcResponseData); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
type x struct{}
|
|
||||||
out := protoimpl.TypeBuilder{
|
|
||||||
File: protoimpl.DescBuilder{
|
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
|
||||||
RawDescriptor: file_proto_rpcproto_rpc_proto_rawDesc,
|
|
||||||
NumEnums: 0,
|
|
||||||
NumMessages: 2,
|
|
||||||
NumExtensions: 0,
|
|
||||||
NumServices: 0,
|
|
||||||
},
|
|
||||||
GoTypes: file_proto_rpcproto_rpc_proto_goTypes,
|
|
||||||
DependencyIndexes: file_proto_rpcproto_rpc_proto_depIdxs,
|
|
||||||
MessageInfos: file_proto_rpcproto_rpc_proto_msgTypes,
|
|
||||||
}.Build()
|
|
||||||
File_proto_rpcproto_rpc_proto = out.File
|
|
||||||
file_proto_rpcproto_rpc_proto_rawDesc = nil
|
|
||||||
file_proto_rpcproto_rpc_proto_goTypes = nil
|
|
||||||
file_proto_rpcproto_rpc_proto_depIdxs = nil
|
|
||||||
}
|
|
||||||
@@ -632,6 +632,6 @@ func (handler *RpcHandler) UnmarshalInParam(rpcProcessor IRpcProcessor,serviceMe
|
|||||||
|
|
||||||
var err error
|
var err error
|
||||||
param := reflect.New(v.inParamValue.Type().Elem()).Interface()
|
param := reflect.New(v.inParamValue.Type().Elem()).Interface()
|
||||||
err = rpcProcessor.Unmarshal(inParam,inParam)
|
err = rpcProcessor.Unmarshal(inParam,param)
|
||||||
return param,err
|
return param,err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import (
|
|||||||
type RpcProcessorType uint8
|
type RpcProcessorType uint8
|
||||||
|
|
||||||
const (
|
const (
|
||||||
RpcProcessorJson RpcProcessorType = 0
|
RpcProcessorJson RpcProcessorType = 0
|
||||||
RpcProcessorPb RpcProcessorType = 1
|
RpcProcessorGoGoPB RpcProcessorType = 1
|
||||||
)
|
)
|
||||||
|
|
||||||
//var processor IRpcProcessor = &JsonProcessor{}
|
//var processor IRpcProcessor = &JsonProcessor{}
|
||||||
var arrayProcessor = []IRpcProcessor{&JsonProcessor{},&PBProcessor{}}
|
var arrayProcessor = []IRpcProcessor{&JsonProcessor{},&GoGoPBProcessor{}}
|
||||||
var arrayProcessorLen uint8 = 2
|
var arrayProcessorLen uint8 = 2
|
||||||
var LittleEndian bool
|
var LittleEndian bool
|
||||||
|
|
||||||
@@ -265,6 +265,7 @@ func (server *Server) selfNodeRpcHandlerGo(processor IRpcProcessor,client *Clien
|
|||||||
ReleaseRpcRequest(req)
|
ReleaseRpcRequest(req)
|
||||||
pCall.Err = err
|
pCall.Err = err
|
||||||
pCall.done <- pCall
|
pCall.done <- pCall
|
||||||
|
return pCall
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//req.inputArgs = inputArgs
|
//req.inputArgs = inputArgs
|
||||||
@@ -275,6 +276,7 @@ func (server *Server) selfNodeRpcHandlerGo(processor IRpcProcessor,client *Clien
|
|||||||
v := client.RemovePending(pCall.Seq)
|
v := client.RemovePending(pCall.Seq)
|
||||||
if v == nil {
|
if v == nil {
|
||||||
log.Error("rpcClient cannot find seq %d in pending",pCall.Seq)
|
log.Error("rpcClient cannot find seq %d in pending",pCall.Seq)
|
||||||
|
ReleaseRpcRequest(req)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if len(Err) == 0 {
|
if len(Err) == 0 {
|
||||||
@@ -283,6 +285,7 @@ func (server *Server) selfNodeRpcHandlerGo(processor IRpcProcessor,client *Clien
|
|||||||
pCall.Err = Err
|
pCall.Err = Err
|
||||||
}
|
}
|
||||||
pCall.done <- pCall
|
pCall.done <- pCall
|
||||||
|
ReleaseRpcRequest(req)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -323,6 +326,7 @@ func (server *Server) selfNodeRpcHandlerAsyncGo(client *Client,callerRpcHandler
|
|||||||
if v == nil {
|
if v == nil {
|
||||||
log.Error("rpcClient cannot find seq %d in pending",pCall.Seq)
|
log.Error("rpcClient cannot find seq %d in pending",pCall.Seq)
|
||||||
//ReleaseCall(pCall)
|
//ReleaseCall(pCall)
|
||||||
|
ReleaseRpcRequest(req)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if len(Err) == 0 {
|
if len(Err) == 0 {
|
||||||
@@ -335,6 +339,7 @@ func (server *Server) selfNodeRpcHandlerAsyncGo(client *Client,callerRpcHandler
|
|||||||
pCall.Reply = Returns
|
pCall.Reply = Returns
|
||||||
}
|
}
|
||||||
pCall.rpcHandler.(*RpcHandler).callResponseCallBack <-pCall
|
pCall.rpcHandler.(*RpcHandler).callResponseCallBack <-pCall
|
||||||
|
ReleaseRpcRequest(req)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user