Browse Source

update generated protocol for grpc transport

Shelikhoo 1 year ago
parent
commit
3f419f93ec

+ 2 - 2
transport/internet/grpc/config.pb.go

@@ -111,7 +111,7 @@ func file_transport_internet_grpc_config_proto_rawDescGZIP() []byte {
 }
 }
 
 
 var file_transport_internet_grpc_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_transport_internet_grpc_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_transport_internet_grpc_config_proto_goTypes = []interface{}{
+var file_transport_internet_grpc_config_proto_goTypes = []any{
 	(*Config)(nil), // 0: v2ray.core.transport.internet.grpc.encoding.Config
 	(*Config)(nil), // 0: v2ray.core.transport.internet.grpc.encoding.Config
 }
 }
 var file_transport_internet_grpc_config_proto_depIdxs = []int32{
 var file_transport_internet_grpc_config_proto_depIdxs = []int32{
@@ -128,7 +128,7 @@ func file_transport_internet_grpc_config_proto_init() {
 		return
 		return
 	}
 	}
 	if !protoimpl.UnsafeEnabled {
 	if !protoimpl.UnsafeEnabled {
-		file_transport_internet_grpc_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+		file_transport_internet_grpc_config_proto_msgTypes[0].Exporter = func(v any, i int) any {
 			switch v := v.(*Config); i {
 			switch v := v.(*Config); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state

+ 1 - 1
transport/internet/grpc/encoding/customSeviceName.go

@@ -31,7 +31,7 @@ func (c *gunServiceClient) TunCustomName(ctx context.Context, name string, opts
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
-	x := &gunServiceTunClient{stream}
+	x := &grpc.GenericClientStream[Hunk, Hunk]{ClientStream: stream}
 	return x, nil
 	return x, nil
 }
 }
 
 

+ 2 - 2
transport/internet/grpc/encoding/stream.pb.go

@@ -106,7 +106,7 @@ func file_transport_internet_grpc_encoding_stream_proto_rawDescGZIP() []byte {
 }
 }
 
 
 var file_transport_internet_grpc_encoding_stream_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
 var file_transport_internet_grpc_encoding_stream_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_transport_internet_grpc_encoding_stream_proto_goTypes = []interface{}{
+var file_transport_internet_grpc_encoding_stream_proto_goTypes = []any{
 	(*Hunk)(nil), // 0: v2ray.core.transport.internet.grpc.encoding.Hunk
 	(*Hunk)(nil), // 0: v2ray.core.transport.internet.grpc.encoding.Hunk
 }
 }
 var file_transport_internet_grpc_encoding_stream_proto_depIdxs = []int32{
 var file_transport_internet_grpc_encoding_stream_proto_depIdxs = []int32{
@@ -125,7 +125,7 @@ func file_transport_internet_grpc_encoding_stream_proto_init() {
 		return
 		return
 	}
 	}
 	if !protoimpl.UnsafeEnabled {
 	if !protoimpl.UnsafeEnabled {
-		file_transport_internet_grpc_encoding_stream_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+		file_transport_internet_grpc_encoding_stream_proto_msgTypes[0].Exporter = func(v any, i int) any {
 			switch v := v.(*Hunk); i {
 			switch v := v.(*Hunk); i {
 			case 0:
 			case 0:
 				return &v.state
 				return &v.state

+ 29 - 55
transport/internet/grpc/encoding/stream_grpc.pb.go

@@ -9,8 +9,8 @@ import (
 
 
 // This is a compile-time assertion to ensure that this generated file
 // This is a compile-time assertion to ensure that this generated file
 // is compatible with the grpc package it is being compiled against.
 // is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.32.0 or later.
-const _ = grpc.SupportPackageIsVersion7
+// Requires gRPC-Go v1.64.0 or later.
+const _ = grpc.SupportPackageIsVersion9
 
 
 const (
 const (
 	GunService_Tun_FullMethodName = "/v2ray.core.transport.internet.grpc.encoding.GunService/Tun"
 	GunService_Tun_FullMethodName = "/v2ray.core.transport.internet.grpc.encoding.GunService/Tun"
@@ -20,7 +20,7 @@ const (
 //
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
 type GunServiceClient interface {
 type GunServiceClient interface {
-	Tun(ctx context.Context, opts ...grpc.CallOption) (GunService_TunClient, error)
+	Tun(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[Hunk, Hunk], error)
 }
 }
 
 
 type gunServiceClient struct {
 type gunServiceClient struct {
@@ -31,53 +31,39 @@ func NewGunServiceClient(cc grpc.ClientConnInterface) GunServiceClient {
 	return &gunServiceClient{cc}
 	return &gunServiceClient{cc}
 }
 }
 
 
-func (c *gunServiceClient) Tun(ctx context.Context, opts ...grpc.CallOption) (GunService_TunClient, error) {
-	stream, err := c.cc.NewStream(ctx, &GunService_ServiceDesc.Streams[0], GunService_Tun_FullMethodName, opts...)
+func (c *gunServiceClient) Tun(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[Hunk, Hunk], error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	stream, err := c.cc.NewStream(ctx, &GunService_ServiceDesc.Streams[0], GunService_Tun_FullMethodName, cOpts...)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
-	x := &gunServiceTunClient{stream}
+	x := &grpc.GenericClientStream[Hunk, Hunk]{ClientStream: stream}
 	return x, nil
 	return x, nil
 }
 }
 
 
-type GunService_TunClient interface {
-	Send(*Hunk) error
-	Recv() (*Hunk, error)
-	grpc.ClientStream
-}
-
-type gunServiceTunClient struct {
-	grpc.ClientStream
-}
-
-func (x *gunServiceTunClient) Send(m *Hunk) error {
-	return x.ClientStream.SendMsg(m)
-}
-
-func (x *gunServiceTunClient) Recv() (*Hunk, error) {
-	m := new(Hunk)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type GunService_TunClient = grpc.BidiStreamingClient[Hunk, Hunk]
 
 
 // GunServiceServer is the server API for GunService service.
 // GunServiceServer is the server API for GunService service.
 // All implementations must embed UnimplementedGunServiceServer
 // All implementations must embed UnimplementedGunServiceServer
-// for forward compatibility
+// for forward compatibility.
 type GunServiceServer interface {
 type GunServiceServer interface {
-	Tun(GunService_TunServer) error
+	Tun(grpc.BidiStreamingServer[Hunk, Hunk]) error
 	mustEmbedUnimplementedGunServiceServer()
 	mustEmbedUnimplementedGunServiceServer()
 }
 }
 
 
-// UnimplementedGunServiceServer must be embedded to have forward compatible implementations.
-type UnimplementedGunServiceServer struct {
-}
+// UnimplementedGunServiceServer must be embedded to have
+// forward compatible implementations.
+//
+// NOTE: this should be embedded by value instead of pointer to avoid a nil
+// pointer dereference when methods are called.
+type UnimplementedGunServiceServer struct{}
 
 
-func (UnimplementedGunServiceServer) Tun(GunService_TunServer) error {
+func (UnimplementedGunServiceServer) Tun(grpc.BidiStreamingServer[Hunk, Hunk]) error {
 	return status.Errorf(codes.Unimplemented, "method Tun not implemented")
 	return status.Errorf(codes.Unimplemented, "method Tun not implemented")
 }
 }
 func (UnimplementedGunServiceServer) mustEmbedUnimplementedGunServiceServer() {}
 func (UnimplementedGunServiceServer) mustEmbedUnimplementedGunServiceServer() {}
+func (UnimplementedGunServiceServer) testEmbeddedByValue()                    {}
 
 
 // UnsafeGunServiceServer may be embedded to opt out of forward compatibility for this service.
 // UnsafeGunServiceServer may be embedded to opt out of forward compatibility for this service.
 // Use of this interface is not recommended, as added methods to GunServiceServer will
 // Use of this interface is not recommended, as added methods to GunServiceServer will
@@ -87,34 +73,22 @@ type UnsafeGunServiceServer interface {
 }
 }
 
 
 func RegisterGunServiceServer(s grpc.ServiceRegistrar, srv GunServiceServer) {
 func RegisterGunServiceServer(s grpc.ServiceRegistrar, srv GunServiceServer) {
+	// If the following call pancis, it indicates UnimplementedGunServiceServer was
+	// embedded by pointer and is nil.  This will cause panics if an
+	// unimplemented method is ever invoked, so we test this at initialization
+	// time to prevent it from happening at runtime later due to I/O.
+	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
+		t.testEmbeddedByValue()
+	}
 	s.RegisterService(&GunService_ServiceDesc, srv)
 	s.RegisterService(&GunService_ServiceDesc, srv)
 }
 }
 
 
 func _GunService_Tun_Handler(srv interface{}, stream grpc.ServerStream) error {
 func _GunService_Tun_Handler(srv interface{}, stream grpc.ServerStream) error {
-	return srv.(GunServiceServer).Tun(&gunServiceTunServer{stream})
-}
-
-type GunService_TunServer interface {
-	Send(*Hunk) error
-	Recv() (*Hunk, error)
-	grpc.ServerStream
-}
-
-type gunServiceTunServer struct {
-	grpc.ServerStream
+	return srv.(GunServiceServer).Tun(&grpc.GenericServerStream[Hunk, Hunk]{ServerStream: stream})
 }
 }
 
 
-func (x *gunServiceTunServer) Send(m *Hunk) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func (x *gunServiceTunServer) Recv() (*Hunk, error) {
-	m := new(Hunk)
-	if err := x.ServerStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
+// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
+type GunService_TunServer = grpc.BidiStreamingServer[Hunk, Hunk]
 
 
 // GunService_ServiceDesc is the grpc.ServiceDesc for GunService service.
 // GunService_ServiceDesc is the grpc.ServiceDesc for GunService service.
 // It's only intended for direct use with grpc.RegisterService,
 // It's only intended for direct use with grpc.RegisterService,