mirror of https://github.com/grpc/grpc-go.git
Don't create buffer if compressor is nil
This commit is contained in:
parent
61d7c39d4c
commit
4258b32de7
6
call.go
6
call.go
|
@ -81,7 +81,11 @@ func sendRequest(ctx context.Context, codec Codec, compressor Compressor, callHd
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
outBuf, err := encode(codec, args, compressor, new(bytes.Buffer))
|
var cbuf *bytes.Buffer
|
||||||
|
if compressor != nil {
|
||||||
|
cbuf = new(bytes.Buffer)
|
||||||
|
}
|
||||||
|
outBuf, err := encode(codec, args, compressor, cbuf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, transport.StreamErrorf(codes.Internal, "grpc: %v", err)
|
return nil, transport.StreamErrorf(codes.Internal, "grpc: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -303,7 +303,11 @@ func (s *Server) Serve(lis net.Listener) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) sendResponse(t transport.ServerTransport, stream *transport.Stream, msg interface{}, cp Compressor, opts *transport.Options) error {
|
func (s *Server) sendResponse(t transport.ServerTransport, stream *transport.Stream, msg interface{}, cp Compressor, opts *transport.Options) error {
|
||||||
p, err := encode(s.opts.codec, msg, cp, new(bytes.Buffer))
|
var cbuf *bytes.Buffer
|
||||||
|
if cp != nil {
|
||||||
|
cbuf = new(bytes.Buffer)
|
||||||
|
}
|
||||||
|
p, err := encode(s.opts.codec, msg, cp, cbuf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// This typically indicates a fatal issue (e.g., memory
|
// This typically indicates a fatal issue (e.g., memory
|
||||||
// corruption or hardware faults) the application program
|
// corruption or hardware faults) the application program
|
||||||
|
@ -457,6 +461,9 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp
|
||||||
dg: s.opts.dg,
|
dg: s.opts.dg,
|
||||||
trInfo: trInfo,
|
trInfo: trInfo,
|
||||||
}
|
}
|
||||||
|
if cp != nil {
|
||||||
|
ss.cbuf = new(bytes.Buffer)
|
||||||
|
}
|
||||||
if trInfo != nil {
|
if trInfo != nil {
|
||||||
trInfo.tr.LazyLog(&trInfo.firstLine, false)
|
trInfo.tr.LazyLog(&trInfo.firstLine, false)
|
||||||
defer func() {
|
defer func() {
|
||||||
|
|
24
stream.go
24
stream.go
|
@ -124,6 +124,10 @@ func NewClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth
|
||||||
dg: cc.dopts.dg,
|
dg: cc.dopts.dg,
|
||||||
tracing: EnableTracing,
|
tracing: EnableTracing,
|
||||||
}
|
}
|
||||||
|
if cp != nil {
|
||||||
|
callHdr.SendCompress = cp.Type()
|
||||||
|
cs.cbuf = new(bytes.Buffer)
|
||||||
|
}
|
||||||
if cs.tracing {
|
if cs.tracing {
|
||||||
cs.trInfo.tr = trace.New("grpc.Sent."+methodFamily(method), method)
|
cs.trInfo.tr = trace.New("grpc.Sent."+methodFamily(method), method)
|
||||||
cs.trInfo.firstLine.client = true
|
cs.trInfo.firstLine.client = true
|
||||||
|
@ -164,7 +168,7 @@ type clientStream struct {
|
||||||
desc *StreamDesc
|
desc *StreamDesc
|
||||||
codec Codec
|
codec Codec
|
||||||
cp Compressor
|
cp Compressor
|
||||||
cbuf bytes.Buffer
|
cbuf *bytes.Buffer
|
||||||
dg DecompressorGenerator
|
dg DecompressorGenerator
|
||||||
|
|
||||||
tracing bool // set to EnableTracing when the clientStream is created.
|
tracing bool // set to EnableTracing when the clientStream is created.
|
||||||
|
@ -211,8 +215,12 @@ func (cs *clientStream) SendMsg(m interface{}) (err error) {
|
||||||
}
|
}
|
||||||
err = toRPCErr(err)
|
err = toRPCErr(err)
|
||||||
}()
|
}()
|
||||||
out, err := encode(cs.codec, m, cs.cp, &cs.cbuf)
|
out, err := encode(cs.codec, m, cs.cp, cs.cbuf)
|
||||||
defer cs.cbuf.Reset()
|
defer func() {
|
||||||
|
if cs.cbuf != nil {
|
||||||
|
cs.cbuf.Reset()
|
||||||
|
}
|
||||||
|
}()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return transport.StreamErrorf(codes.Internal, "grpc: %v", err)
|
return transport.StreamErrorf(codes.Internal, "grpc: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -326,7 +334,7 @@ type serverStream struct {
|
||||||
codec Codec
|
codec Codec
|
||||||
cp Compressor
|
cp Compressor
|
||||||
dg DecompressorGenerator
|
dg DecompressorGenerator
|
||||||
cbuf bytes.Buffer
|
cbuf *bytes.Buffer
|
||||||
statusCode codes.Code
|
statusCode codes.Code
|
||||||
statusDesc string
|
statusDesc string
|
||||||
trInfo *traceInfo
|
trInfo *traceInfo
|
||||||
|
@ -365,8 +373,12 @@ func (ss *serverStream) SendMsg(m interface{}) (err error) {
|
||||||
ss.mu.Unlock()
|
ss.mu.Unlock()
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
out, err := encode(ss.codec, m, ss.cp, &ss.cbuf)
|
out, err := encode(ss.codec, m, ss.cp, ss.cbuf)
|
||||||
defer ss.cbuf.Reset()
|
defer func() {
|
||||||
|
if ss.cbuf != nil {
|
||||||
|
ss.cbuf.Reset()
|
||||||
|
}
|
||||||
|
}()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = transport.StreamErrorf(codes.Internal, "grpc: %v", err)
|
err = transport.StreamErrorf(codes.Internal, "grpc: %v", err)
|
||||||
return err
|
return err
|
||||||
|
|
Loading…
Reference in New Issue