prepare v4 (need swap target!) #195
2
go.mod
2
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
|
go 1.22.0
|
||||||
|
|
||||||
|
45
grpc.go
45
grpc.go
@@ -44,13 +44,6 @@ const (
|
|||||||
DefaultContentType = "application/grpc"
|
DefaultContentType = "application/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
|
||||||
type ServerReflection struct {
|
|
||||||
srv *grpc.Server
|
|
||||||
s *serverReflectionServer
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
type streamWrapper struct {
|
type streamWrapper struct {
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
grpc.ServerStream
|
grpc.ServerStream
|
||||||
@@ -99,22 +92,6 @@ func newServer(opts ...server.Option) *Server {
|
|||||||
return g
|
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 {
|
func (g *Server) configure(opts ...server.Option) error {
|
||||||
g.Lock()
|
g.Lock()
|
||||||
defer g.Unlock()
|
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")
|
return status.Errorf(codes.Internal, "method does not exist in context")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var gmd map[string][]string
|
||||||
// get grpc metadata
|
// get grpc metadata
|
||||||
gmd, ok := gmetadata.FromIncomingContext(ctx)
|
gmd, ok = gmetadata.FromIncomingContext(ctx)
|
||||||
if !ok {
|
if !ok {
|
||||||
gmd = gmetadata.MD{}
|
gmd = gmetadata.MD{}
|
||||||
}
|
}
|
||||||
@@ -244,12 +222,10 @@ func (g *Server) handler(srv interface{}, stream grpc.ServerStream) error {
|
|||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
md := metadata.New(len(gmd))
|
md := metadata.Copy(gmd)
|
||||||
for k, v := range gmd {
|
|
||||||
md[k] = v
|
md.Set("path", fullMethod)
|
||||||
}
|
md.Set("micro-server", "grpc")
|
||||||
md.Set("Path", fullMethod)
|
|
||||||
md.Set("Micro-Server", "grpc")
|
|
||||||
md.Set(metadata.HeaderEndpoint, methodName)
|
md.Set(metadata.HeaderEndpoint, methodName)
|
||||||
md.Set(metadata.HeaderService, serviceName)
|
md.Set(metadata.HeaderService, serviceName)
|
||||||
|
|
||||||
@@ -259,8 +235,8 @@ func (g *Server) handler(srv interface{}, stream grpc.ServerStream) error {
|
|||||||
md.Del("timeout")
|
md.Del("timeout")
|
||||||
td = v[0]
|
td = v[0]
|
||||||
}
|
}
|
||||||
if v, ok := md.Get("Grpc-Timeout"); ok && len(v) > 0 {
|
if v, ok := md.Get("grpc-timeout"); ok && len(v) > 0 {
|
||||||
md.Del("Grpc-Timeout")
|
md.Del("grpc-timeout")
|
||||||
td = v[0][:len(v)-1]
|
td = v[0][:len(v)-1]
|
||||||
switch v[0][len(v)-1:] {
|
switch v[0][len(v)-1:] {
|
||||||
case "S":
|
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 {
|
if ctype, ok := md.Get("content-type"); ok && len(ctype) > 0 {
|
||||||
ct = 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
|
// create new context
|
||||||
@@ -318,7 +291,7 @@ func (g *Server) handler(srv interface{}, stream grpc.ServerStream) error {
|
|||||||
|
|
||||||
// get peer from context
|
// get peer from context
|
||||||
if p, ok := peer.FromContext(ctx); ok {
|
if p, ok := peer.FromContext(ctx); ok {
|
||||||
md.Set("Remote", p.Addr.String())
|
md.Set("remote", p.Addr.String())
|
||||||
ctx = peer.NewContext(ctx, p)
|
ctx = peer.NewContext(ctx, p)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user
v4