Enable payload tracing for unary rpc

This commit is contained in:
iamqizhao
2015-09-29 19:05:13 -07:00
parent f3de7c238c
commit ce2ef8c969

View File

@ -52,7 +52,7 @@ import (
"google.golang.org/grpc/transport"
)
type methodHandler func(srv interface{}, ctx context.Context, codec Codec, buf []byte) (interface{}, error)
type methodHandler func(srv interface{}, ctx context.Context, decodeFunc func([]byte, interface{}) error, buf []byte) (interface{}, error)
// MethodDesc represents an RPC service's method specification.
type MethodDesc struct {
@ -320,16 +320,25 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport.
}
return err
}
if traceInfo.tr != nil {
//if traceInfo.tr != nil {
// TODO: set payload.msg to something that
// prints usefully with %s; req is a []byte.
traceInfo.tr.LazyLog(&payload{sent: false}, true)
}
//traceInfo.tr.LazyLog(&payload{sent: false}, true)
//}
switch pf {
case compressionNone:
statusCode := codes.OK
statusDesc := ""
reply, appErr := md.Handler(srv.server, ctx, s.opts.codec, req)
df := func(b []byte, v interface{}) error {
if err := s.opts.codec.Unmarshal(b, v); err != nil {
return err
}
if traceInfo.tr != nil {
traceInfo.tr.LazyLog(&payload{sent: false, msg: v}, true)
}
return nil
}
reply, appErr := md.Handler(srv.server, ctx, df, req)
if appErr != nil {
if err, ok := appErr.(rpcError); ok {
statusCode = err.code