diff --git a/go.mod b/go.mod index 293a054..af3435d 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module go.unistack.org/micro-server-grpc/v3 +module go.unistack.org/micro-server-grpc/v4 go 1.22.0 diff --git a/grpc.go b/grpc.go index 4926078..b8294f6 100644 --- a/grpc.go +++ b/grpc.go @@ -44,13 +44,6 @@ const ( DefaultContentType = "application/grpc" ) -/* -type ServerReflection struct { - srv *grpc.Server - s *serverReflectionServer -} -*/ - type streamWrapper struct { ctx context.Context grpc.ServerStream @@ -99,22 +92,6 @@ func newServer(opts ...server.Option) *Server { return g } -/* -type grpcRouter struct { - h func(context.Context, server.Request, interface{}) error - m func(context.Context, server.Message) error -} - -func (r grpcRouter) ProcessMessage(ctx context.Context, msg server.Message) error { - return r.m(ctx, msg) -} - -func (r grpcRouter) ServeRequest(ctx context.Context, req server.Request, rsp server.Response) error { - return r.h(ctx, req, rsp) -} - -*/ - func (g *Server) configure(opts ...server.Option) error { g.Lock() defer g.Unlock() @@ -210,8 +187,9 @@ func (g *Server) handler(srv interface{}, stream grpc.ServerStream) error { return status.Errorf(codes.Internal, "method does not exist in context") } + var gmd map[string][]string // get grpc metadata - gmd, ok := gmetadata.FromIncomingContext(ctx) + gmd, ok = gmetadata.FromIncomingContext(ctx) if !ok { gmd = gmetadata.MD{} } @@ -244,12 +222,10 @@ func (g *Server) handler(srv interface{}, stream grpc.ServerStream) error { }() } - md := metadata.New(len(gmd)) - for k, v := range gmd { - md[k] = v - } - md.Set("Path", fullMethod) - md.Set("Micro-Server", "grpc") + md := metadata.Copy(gmd) + + md.Set("path", fullMethod) + md.Set("micro-server", "grpc") md.Set(metadata.HeaderEndpoint, methodName) md.Set(metadata.HeaderService, serviceName) @@ -259,8 +235,8 @@ func (g *Server) handler(srv interface{}, stream grpc.ServerStream) error { md.Del("timeout") td = v[0] } - if v, ok := md.Get("Grpc-Timeout"); ok && len(v) > 0 { - md.Del("Grpc-Timeout") + if v, ok := md.Get("grpc-timeout"); ok && len(v) > 0 { + md.Del("grpc-timeout") td = v[0][:len(v)-1] switch v[0][len(v)-1:] { case "S": @@ -283,9 +259,6 @@ func (g *Server) handler(srv interface{}, stream grpc.ServerStream) error { if ctype, ok := md.Get("content-type"); ok && len(ctype) > 0 { ct = ctype[0] - } else if ctype, ok := md.Get("x-content-type"); ok && len(ctype) > 0 { - ct = ctype[0] - md.Del("x-content-type") } // create new context @@ -318,7 +291,7 @@ func (g *Server) handler(srv interface{}, stream grpc.ServerStream) error { // get peer from context if p, ok := peer.FromContext(ctx); ok { - md.Set("Remote", p.Addr.String()) + md.Set("remote", p.Addr.String()) ctx = peer.NewContext(ctx, p) }