diff --git a/grpc/gen/kv.pb.go b/grpc/gen/kv.pb.go index faa79f962b..e66c4080dc 100644 --- a/grpc/gen/kv.pb.go +++ b/grpc/gen/kv.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v3.21.12 +// protoc-gen-go v1.36.2 +// protoc (unknown) // source: kv.proto package gen @@ -87,24 +87,21 @@ func (Op) EnumDescriptor() ([]byte, []int) { } type Cursor struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Op Op `protobuf:"varint,1,opt,name=op,proto3,enum=database.Op" json:"op,omitempty"` + BucketName []byte `protobuf:"bytes,2,opt,name=bucket_name,json=bucketName,proto3" json:"bucket_name,omitempty"` + Cursor uint32 `protobuf:"varint,3,opt,name=cursor,proto3" json:"cursor,omitempty"` + K []byte `protobuf:"bytes,4,opt,name=k,proto3" json:"k,omitempty"` + V []byte `protobuf:"bytes,5,opt,name=v,proto3" json:"v,omitempty"` // not used unknownFields protoimpl.UnknownFields - - Op Op `protobuf:"varint,1,opt,name=op,proto3,enum=database.Op" json:"op,omitempty"` - BucketName []byte `protobuf:"bytes,2,opt,name=bucket_name,json=bucketName,proto3" json:"bucket_name,omitempty"` - Cursor uint32 `protobuf:"varint,3,opt,name=cursor,proto3" json:"cursor,omitempty"` - K []byte `protobuf:"bytes,4,opt,name=k,proto3" json:"k,omitempty"` - V []byte `protobuf:"bytes,5,opt,name=v,proto3" json:"v,omitempty"` // not used + sizeCache protoimpl.SizeCache } func (x *Cursor) Reset() { *x = Cursor{} - if protoimpl.UnsafeEnabled { - mi := &file_kv_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_kv_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Cursor) String() string { @@ -115,7 +112,7 @@ func (*Cursor) ProtoMessage() {} func (x *Cursor) ProtoReflect() protoreflect.Message { mi := &file_kv_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -166,24 +163,21 @@ func (x *Cursor) GetV() []byte { } type Pair struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + K []byte `protobuf:"bytes,1,opt,name=k,proto3" json:"k,omitempty"` + V []byte `protobuf:"bytes,2,opt,name=v,proto3" json:"v,omitempty"` + CursorId uint32 `protobuf:"varint,3,opt,name=cursor_id,json=cursorId,proto3" json:"cursor_id,omitempty"` + ViewId uint64 `protobuf:"varint,4,opt,name=view_id,json=viewId,proto3" json:"view_id,omitempty"` // not used + TxId uint64 `protobuf:"varint,5,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"` // not used unknownFields protoimpl.UnknownFields - - K []byte `protobuf:"bytes,1,opt,name=k,proto3" json:"k,omitempty"` - V []byte `protobuf:"bytes,2,opt,name=v,proto3" json:"v,omitempty"` - CursorId uint32 `protobuf:"varint,3,opt,name=cursor_id,json=cursorId,proto3" json:"cursor_id,omitempty"` - ViewId uint64 `protobuf:"varint,4,opt,name=view_id,json=viewId,proto3" json:"view_id,omitempty"` // not used - TxId uint64 `protobuf:"varint,5,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"` // not used + sizeCache protoimpl.SizeCache } func (x *Pair) Reset() { *x = Pair{} - if protoimpl.UnsafeEnabled { - mi := &file_kv_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_kv_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Pair) String() string { @@ -194,7 +188,7 @@ func (*Pair) ProtoMessage() {} func (x *Pair) ProtoReflect() protoreflect.Message { mi := &file_kv_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -245,22 +239,19 @@ func (x *Pair) GetTxId() uint64 { } type VersionReply struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Major uint32 `protobuf:"varint,1,opt,name=major,proto3" json:"major,omitempty"` + Minor uint32 `protobuf:"varint,2,opt,name=minor,proto3" json:"minor,omitempty"` + Patch uint32 `protobuf:"varint,3,opt,name=patch,proto3" json:"patch,omitempty"` unknownFields protoimpl.UnknownFields - - Major uint32 `protobuf:"varint,1,opt,name=major,proto3" json:"major,omitempty"` - Minor uint32 `protobuf:"varint,2,opt,name=minor,proto3" json:"minor,omitempty"` - Patch uint32 `protobuf:"varint,3,opt,name=patch,proto3" json:"patch,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VersionReply) Reset() { *x = VersionReply{} - if protoimpl.UnsafeEnabled { - mi := &file_kv_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_kv_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *VersionReply) String() string { @@ -271,7 +262,7 @@ func (*VersionReply) ProtoMessage() {} func (x *VersionReply) ProtoReflect() protoreflect.Message { mi := &file_kv_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -364,7 +355,7 @@ func file_kv_proto_rawDescGZIP() []byte { var file_kv_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_kv_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_kv_proto_goTypes = []interface{}{ +var file_kv_proto_goTypes = []any{ (Op)(0), // 0: database.Op (*Cursor)(nil), // 1: database.Cursor (*Pair)(nil), // 2: database.Pair @@ -389,44 +380,6 @@ func file_kv_proto_init() { if File_kv_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_kv_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Cursor); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_kv_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Pair); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_kv_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VersionReply); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/grpc/gen/kv_grpc.pb.go b/grpc/gen/kv_grpc.pb.go index d64c885b5c..b0bf2f3486 100644 --- a/grpc/gen/kv_grpc.pb.go +++ b/grpc/gen/kv_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.2.0 -// - protoc v3.21.12 +// - protoc-gen-go-grpc v1.5.1 +// - protoc (unknown) // source: kv.proto package gen @@ -16,15 +16,20 @@ import ( // This is a compile-time assertion to ensure that this generated file // 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 ( + KV_Version_FullMethodName = "/database.KV/Version" + KV_Tx_FullMethodName = "/database.KV/Tx" +) // KVClient is the client API for KV service. // // 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 KVClient interface { Version(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*VersionReply, error) - Tx(ctx context.Context, opts ...grpc.CallOption) (KV_TxClient, error) + Tx(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[Cursor, Pair], error) } type kVClient struct { @@ -36,65 +41,52 @@ func NewKVClient(cc grpc.ClientConnInterface) KVClient { } func (c *kVClient) Version(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*VersionReply, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(VersionReply) - err := c.cc.Invoke(ctx, "/database.KV/Version", in, out, opts...) + err := c.cc.Invoke(ctx, KV_Version_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *kVClient) Tx(ctx context.Context, opts ...grpc.CallOption) (KV_TxClient, error) { - stream, err := c.cc.NewStream(ctx, &KV_ServiceDesc.Streams[0], "/database.KV/Tx", opts...) +func (c *kVClient) Tx(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[Cursor, Pair], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &KV_ServiceDesc.Streams[0], KV_Tx_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &kVTxClient{stream} + x := &grpc.GenericClientStream[Cursor, Pair]{ClientStream: stream} return x, nil } -type KV_TxClient interface { - Send(*Cursor) error - Recv() (*Pair, error) - grpc.ClientStream -} - -type kVTxClient struct { - grpc.ClientStream -} - -func (x *kVTxClient) Send(m *Cursor) error { - return x.ClientStream.SendMsg(m) -} - -func (x *kVTxClient) Recv() (*Pair, error) { - m := new(Pair) - 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 KV_TxClient = grpc.BidiStreamingClient[Cursor, Pair] // KVServer is the server API for KV service. // All implementations must embed UnimplementedKVServer -// for forward compatibility +// for forward compatibility. type KVServer interface { Version(context.Context, *emptypb.Empty) (*VersionReply, error) - Tx(KV_TxServer) error + Tx(grpc.BidiStreamingServer[Cursor, Pair]) error mustEmbedUnimplementedKVServer() } -// UnimplementedKVServer must be embedded to have forward compatible implementations. -type UnimplementedKVServer struct { -} +// UnimplementedKVServer 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 UnimplementedKVServer struct{} func (UnimplementedKVServer) Version(context.Context, *emptypb.Empty) (*VersionReply, error) { return nil, status.Errorf(codes.Unimplemented, "method Version not implemented") } -func (UnimplementedKVServer) Tx(KV_TxServer) error { +func (UnimplementedKVServer) Tx(grpc.BidiStreamingServer[Cursor, Pair]) error { return status.Errorf(codes.Unimplemented, "method Tx not implemented") } func (UnimplementedKVServer) mustEmbedUnimplementedKVServer() {} +func (UnimplementedKVServer) testEmbeddedByValue() {} // UnsafeKVServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to KVServer will @@ -104,6 +96,13 @@ type UnsafeKVServer interface { } func RegisterKVServer(s grpc.ServiceRegistrar, srv KVServer) { + // If the following call pancis, it indicates UnimplementedKVServer 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(&KV_ServiceDesc, srv) } @@ -117,7 +116,7 @@ func _KV_Version_Handler(srv interface{}, ctx context.Context, dec func(interfac } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/database.KV/Version", + FullMethod: KV_Version_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(KVServer).Version(ctx, req.(*emptypb.Empty)) @@ -126,30 +125,11 @@ func _KV_Version_Handler(srv interface{}, ctx context.Context, dec func(interfac } func _KV_Tx_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(KVServer).Tx(&kVTxServer{stream}) -} - -type KV_TxServer interface { - Send(*Pair) error - Recv() (*Cursor, error) - grpc.ServerStream -} - -type kVTxServer struct { - grpc.ServerStream + return srv.(KVServer).Tx(&grpc.GenericServerStream[Cursor, Pair]{ServerStream: stream}) } -func (x *kVTxServer) Send(m *Pair) error { - return x.ServerStream.SendMsg(m) -} - -func (x *kVTxServer) Recv() (*Cursor, error) { - m := new(Cursor) - 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 KV_TxServer = grpc.BidiStreamingServer[Cursor, Pair] // KV_ServiceDesc is the grpc.ServiceDesc for KV service. // It's only intended for direct use with grpc.RegisterService, diff --git a/p2p/gen/class.pb.go b/p2p/gen/class.pb.go index 12937ec6be..f24e1ff989 100644 --- a/p2p/gen/class.pb.go +++ b/p2p/gen/class.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.0 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: class.proto diff --git a/p2p/gen/common.pb.go b/p2p/gen/common.pb.go index 4ac4472347..bfd7c64e6d 100644 --- a/p2p/gen/common.pb.go +++ b/p2p/gen/common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.0 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: common.proto diff --git a/p2p/gen/event.pb.go b/p2p/gen/event.pb.go index 7aa6874e7d..9daf64a07a 100644 --- a/p2p/gen/event.pb.go +++ b/p2p/gen/event.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.0 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: event.proto diff --git a/p2p/gen/header.pb.go b/p2p/gen/header.pb.go index 3723091acf..7e49b60afd 100644 --- a/p2p/gen/header.pb.go +++ b/p2p/gen/header.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.0 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: header.proto diff --git a/p2p/gen/receipt.pb.go b/p2p/gen/receipt.pb.go index 9d3d970985..5aa4292345 100644 --- a/p2p/gen/receipt.pb.go +++ b/p2p/gen/receipt.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.0 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: receipt.proto diff --git a/p2p/gen/state.pb.go b/p2p/gen/state.pb.go index 381f7b42b0..d35cee3e07 100644 --- a/p2p/gen/state.pb.go +++ b/p2p/gen/state.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.0 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: state.proto diff --git a/p2p/gen/transaction.pb.go b/p2p/gen/transaction.pb.go index ed5487ea0d..7a145bcb30 100644 --- a/p2p/gen/transaction.pb.go +++ b/p2p/gen/transaction.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.0 +// protoc-gen-go v1.36.2 // protoc (unknown) // source: transaction.proto