From 61c12592261c49ecb9647edaceaf6034da3d4d23 Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Thu, 15 Oct 2015 10:59:39 -0700 Subject: [PATCH] some cleanup --- rpc_util.go | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/rpc_util.go b/rpc_util.go index f7d0ea50..5394034e 100644 --- a/rpc_util.go +++ b/rpc_util.go @@ -128,19 +128,14 @@ type parser struct { s io.Reader } -// msgFixedHeader defines the header of a gRPC message. Find more detail -// at http://www.grpc.io/docs/guides/wire.html. -type msgFixedHeader struct { - T payloadFormat - Length uint32 -} - // recvMsg is to read a complete gRPC message from the stream. It is blocking if // the message has not been complete yet. It returns the message and its type, // EOF is returned with nil msg and 0 pf if the entire stream is done. Other // non-nil error is returned if something is wrong on reading. func (p *parser) recvMsg() (pf payloadFormat, msg []byte, err error) { - var buf [5]byte // see msgFixedHeader + // The header of a gRPC message. Find more detail + // at http://www.grpc.io/docs/guides/wire.html. + var buf [5]byte if _, err := io.ReadFull(p.s, buf[:]); err != nil { return 0, nil, err @@ -169,7 +164,7 @@ func encode(c Codec, msg interface{}, pf payloadFormat) ([]byte, error) { // Write message into the fixed header. buf.WriteByte(uint8(pf)) var b []byte - var length int + var length uint32 if msg != nil { var err error // TODO(zhaoq): optimize to reduce memory alloc and copying. @@ -177,13 +172,13 @@ func encode(c Codec, msg interface{}, pf payloadFormat) ([]byte, error) { if err != nil { return nil, err } - length = len(b) + length = uint32(len(b)) } if length > math.MaxUint32 { return nil, Errorf(codes.InvalidArgument, "grpc: message too large (%d bytes)", length) } var szHdr [4]byte - binary.BigEndian.PutUint32(szHdr[:], uint32(length)) + binary.BigEndian.PutUint32(szHdr[:], length) buf.Write(szHdr[:]) buf.Write(b) return buf.Bytes(), nil @@ -258,6 +253,8 @@ func Errorf(c codes.Code, format string, a ...interface{}) error { // toRPCErr converts an error into a rpcError. func toRPCErr(err error) error { switch e := err.(type) { + case rpcError: + return err case transport.StreamError: return rpcError{ code: e.Code,