server: handleStream() cleanup (#2352)
This commit is contained in:
44
server.go
44
server.go
@ -1133,8 +1133,18 @@ func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Str
|
|||||||
}
|
}
|
||||||
service := sm[:pos]
|
service := sm[:pos]
|
||||||
method := sm[pos+1:]
|
method := sm[pos+1:]
|
||||||
srv, ok := s.m[service]
|
|
||||||
if !ok {
|
if srv, ok := s.m[service]; ok {
|
||||||
|
if md, ok := srv.md[method]; ok {
|
||||||
|
s.processUnaryRPC(t, stream, srv, md, trInfo)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if sd, ok := srv.sd[method]; ok {
|
||||||
|
s.processStreamingRPC(t, stream, srv, sd, trInfo)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Unknown service, or known server unknown method.
|
||||||
if unknownDesc := s.opts.unknownStreamDesc; unknownDesc != nil {
|
if unknownDesc := s.opts.unknownStreamDesc; unknownDesc != nil {
|
||||||
s.processStreamingRPC(t, stream, nil, unknownDesc, trInfo)
|
s.processStreamingRPC(t, stream, nil, unknownDesc, trInfo)
|
||||||
return
|
return
|
||||||
@ -1154,36 +1164,6 @@ func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Str
|
|||||||
if trInfo != nil {
|
if trInfo != nil {
|
||||||
trInfo.tr.Finish()
|
trInfo.tr.Finish()
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
|
||||||
// Unary RPC or Streaming RPC?
|
|
||||||
if md, ok := srv.md[method]; ok {
|
|
||||||
s.processUnaryRPC(t, stream, srv, md, trInfo)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if sd, ok := srv.sd[method]; ok {
|
|
||||||
s.processStreamingRPC(t, stream, srv, sd, trInfo)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if trInfo != nil {
|
|
||||||
trInfo.tr.LazyLog(&fmtStringer{"Unknown method %v", []interface{}{method}}, true)
|
|
||||||
trInfo.tr.SetError()
|
|
||||||
}
|
|
||||||
if unknownDesc := s.opts.unknownStreamDesc; unknownDesc != nil {
|
|
||||||
s.processStreamingRPC(t, stream, nil, unknownDesc, trInfo)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
errDesc := fmt.Sprintf("unknown method %v", method)
|
|
||||||
if err := t.WriteStatus(stream, status.New(codes.Unimplemented, errDesc)); err != nil {
|
|
||||||
if trInfo != nil {
|
|
||||||
trInfo.tr.LazyLog(&fmtStringer{"%v", []interface{}{err}}, true)
|
|
||||||
trInfo.tr.SetError()
|
|
||||||
}
|
|
||||||
grpclog.Warningf("grpc: Server.handleStream failed to write status: %v", err)
|
|
||||||
}
|
|
||||||
if trInfo != nil {
|
|
||||||
trInfo.tr.Finish()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// The key to save ServerTransportStream in the context.
|
// The key to save ServerTransportStream in the context.
|
||||||
|
Reference in New Issue
Block a user