From 3abcc1ceed22f27d0a5d1bbf8809d8923f8f0c1a Mon Sep 17 00:00:00 2001 From: Yavolte Date: Fri, 6 Jun 2025 14:51:58 +0800 Subject: [PATCH] update command proto --- pkg/protoc/command/command.pb.go | 126 ++++++++++++++++++++++++------- pkg/protoc/command/command.proto | 20 +++++ transport/cli/context.go | 6 +- transport/cli/types.go | 24 ++++++ transport/grpc/client.go | 1 + 5 files changed, 147 insertions(+), 30 deletions(-) create mode 100644 pkg/protoc/command/command.proto diff --git a/pkg/protoc/command/command.pb.go b/pkg/protoc/command/command.pb.go index cad963c..a3c9404 100644 --- a/pkg/protoc/command/command.pb.go +++ b/pkg/protoc/command/command.pb.go @@ -11,6 +11,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" descriptorpb "google.golang.org/protobuf/types/descriptorpb" reflect "reflect" + sync "sync" unsafe "unsafe" ) @@ -21,14 +22,66 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -var file_aeus_command_proto_extTypes = []protoimpl.ExtensionInfo{ +type CommandOptions struct { + state protoimpl.MessageState `protogen:"open.v1"` + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CommandOptions) Reset() { + *x = CommandOptions{} + mi := &file_command_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CommandOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommandOptions) ProtoMessage() {} + +func (x *CommandOptions) ProtoReflect() protoreflect.Message { + mi := &file_command_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommandOptions.ProtoReflect.Descriptor instead. +func (*CommandOptions) Descriptor() ([]byte, []int) { + return file_command_proto_rawDescGZIP(), []int{0} +} + +func (x *CommandOptions) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *CommandOptions) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +var file_command_proto_extTypes = []protoimpl.ExtensionInfo{ { ExtendedType: (*descriptorpb.MethodOptions)(nil), - ExtensionType: (*string)(nil), + ExtensionType: (*CommandOptions)(nil), Field: 50001, Name: "aeus.command", Tag: "bytes,50001,opt,name=command", - Filename: "aeus/command.proto", + Filename: "command.proto", }, } @@ -37,49 +90,68 @@ var ( // The 'command' option will be a string. // Choose a field number in the reserved range (50000-99999) to avoid conflicts. // - // optional string command = 50001; - E_Command = &file_aeus_command_proto_extTypes[0] + // optional aeus.CommandOptions command = 50001; + E_Command = &file_command_proto_extTypes[0] ) -var File_aeus_command_proto protoreflect.FileDescriptor +var File_command_proto protoreflect.FileDescriptor -const file_aeus_command_proto_rawDesc = "" + +const file_command_proto_rawDesc = "" + "\n" + - "\x12aeus/command.proto\x12\x04aeus\x1a google/protobuf/descriptor.proto:=\n" + - "\acommand\x12\x1e.google.protobuf.MethodOptions\x18ц\x03 \x01(\tR\acommand\x88\x01\x01B5Z3git.nobla.cn/golang/aeus/pkg/protoc/command;commandb\x06proto3" + "\rcommand.proto\x12\x04aeus\x1a google/protobuf/descriptor.proto\"F\n" + + "\x0eCommandOptions\x12\x12\n" + + "\x04path\x18\x01 \x01(\tR\x04path\x12 \n" + + "\vdescription\x18\x02 \x01(\tR\vdescription:S\n" + + "\acommand\x12\x1e.google.protobuf.MethodOptions\x18ц\x03 \x01(\v2\x14.aeus.CommandOptionsR\acommand\x88\x01\x01B-Z+git.nobla.cn/golang/aeus/pkg/protoc/commandb\x06proto3" -var file_aeus_command_proto_goTypes = []any{ - (*descriptorpb.MethodOptions)(nil), // 0: google.protobuf.MethodOptions +var ( + file_command_proto_rawDescOnce sync.Once + file_command_proto_rawDescData []byte +) + +func file_command_proto_rawDescGZIP() []byte { + file_command_proto_rawDescOnce.Do(func() { + file_command_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_command_proto_rawDesc), len(file_command_proto_rawDesc))) + }) + return file_command_proto_rawDescData } -var file_aeus_command_proto_depIdxs = []int32{ - 0, // 0: aeus.command:extendee -> google.protobuf.MethodOptions - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name + +var file_command_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_command_proto_goTypes = []any{ + (*CommandOptions)(nil), // 0: aeus.CommandOptions + (*descriptorpb.MethodOptions)(nil), // 1: google.protobuf.MethodOptions +} +var file_command_proto_depIdxs = []int32{ + 1, // 0: aeus.command:extendee -> google.protobuf.MethodOptions + 0, // 1: aeus.command:type_name -> aeus.CommandOptions + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 1, // [1:2] is the sub-list for extension type_name 0, // [0:1] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name } -func init() { file_aeus_command_proto_init() } -func file_aeus_command_proto_init() { - if File_aeus_command_proto != nil { +func init() { file_command_proto_init() } +func file_command_proto_init() { + if File_command_proto != nil { return } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_aeus_command_proto_rawDesc), len(file_aeus_command_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_command_proto_rawDesc), len(file_command_proto_rawDesc)), NumEnums: 0, - NumMessages: 0, + NumMessages: 1, NumExtensions: 1, NumServices: 0, }, - GoTypes: file_aeus_command_proto_goTypes, - DependencyIndexes: file_aeus_command_proto_depIdxs, - ExtensionInfos: file_aeus_command_proto_extTypes, + GoTypes: file_command_proto_goTypes, + DependencyIndexes: file_command_proto_depIdxs, + MessageInfos: file_command_proto_msgTypes, + ExtensionInfos: file_command_proto_extTypes, }.Build() - File_aeus_command_proto = out.File - file_aeus_command_proto_goTypes = nil - file_aeus_command_proto_depIdxs = nil + File_command_proto = out.File + file_command_proto_goTypes = nil + file_command_proto_depIdxs = nil } diff --git a/pkg/protoc/command/command.proto b/pkg/protoc/command/command.proto new file mode 100644 index 0000000..6d536b6 --- /dev/null +++ b/pkg/protoc/command/command.proto @@ -0,0 +1,20 @@ +syntax = "proto3"; + +package aeus; + +import "google/protobuf/descriptor.proto"; + +option go_package = "git.nobla.cn/golang/aeus/pkg/protoc/command"; + + +message CommandOptions { + string path = 1; + string description = 2; + } + +// Extend MethodOptions to add a custom 'command' option to RPC methods. +extend google.protobuf.MethodOptions { + // The 'command' option will be a string. + // Choose a field number in the reserved range (50000-99999) to avoid conflicts. + optional CommandOptions command = 50001; +} diff --git a/transport/cli/context.go b/transport/cli/context.go index 433c71d..bf3c783 100644 --- a/transport/cli/context.go +++ b/transport/cli/context.go @@ -116,14 +116,14 @@ func (ctx *Context) send(res responsePayload) (err error) { } if res.Data == nil { buf = OK - goto __END + goto __end } if marshal, ok = res.Data.(encoder); ok { buf, err = marshal.Marshal() - goto __END + goto __end } buf, err = serialize(res.Data) -__END: +__end: if err != nil { return } diff --git a/transport/cli/types.go b/transport/cli/types.go index 84743b2..a295bf2 100644 --- a/transport/cli/types.go +++ b/transport/cli/types.go @@ -85,3 +85,27 @@ type ( RemoteAddr string `json:"remote_addr"` } ) + +func WithAddress(addr string) Option { + return func(o *options) { + o.address = addr + } +} + +func WithNetwork(network string) Option { + return func(o *options) { + o.network = network + } +} + +func WithLogger(logger logger.Logger) Option { + return func(o *options) { + o.logger = logger + } +} + +func WithContext(ctx context.Context) Option { + return func(o *options) { + o.context = ctx + } +} diff --git a/transport/grpc/client.go b/transport/grpc/client.go index d334555..6e1055f 100644 --- a/transport/grpc/client.go +++ b/transport/grpc/client.go @@ -9,6 +9,7 @@ import ( grpcinsecure "google.golang.org/grpc/credentials/insecure" ) +// dial new gRPC "channel" for the target URI provided. func Dial(ctx context.Context, target string, cbs ...ClientOption) (conn *grpc.ClientConn, err error) { grpc.WithResolvers() opts := &clientOptions{}