From 4b705a6732bc16d4639448433cf2b9011f9596de Mon Sep 17 00:00:00 2001 From: Peter Kurfer Date: Tue, 12 Sep 2023 18:05:19 +0200 Subject: [PATCH] feat: add binary name RPC --- .../wasi/v1/rpcv1connect/wasi.connect.go | 27 ++ generated/wasi/v1/wasi.pb.go | 392 ++++++++++++------ generated/wasi/v1/wasi_vtproto.pb.go | 331 +++++++++++++++ wasi/v1/wasi.proto | 10 + 4 files changed, 639 insertions(+), 121 deletions(-) diff --git a/generated/wasi/v1/rpcv1connect/wasi.connect.go b/generated/wasi/v1/rpcv1connect/wasi.connect.go index 3dfa9d1..dfc20c4 100644 --- a/generated/wasi/v1/rpcv1connect/wasi.connect.go +++ b/generated/wasi/v1/rpcv1connect/wasi.connect.go @@ -45,6 +45,9 @@ const ( // WasiExecutorServiceHelpProcedure is the fully-qualified name of the WasiExecutorService's Help // RPC. WasiExecutorServiceHelpProcedure = "/buildr.rpc.v1.WasiExecutorService/Help" + // WasiExecutorServiceBinaryNameProcedure is the fully-qualified name of the WasiExecutorService's + // BinaryName RPC. + WasiExecutorServiceBinaryNameProcedure = "/buildr.rpc.v1.WasiExecutorService/BinaryName" // ExecutorHostServiceProcessStartProcedure is the fully-qualified name of the ExecutorHostService's // ProcessStart RPC. ExecutorHostServiceProcessStartProcedure = "/buildr.rpc.v1.ExecutorHostService/ProcessStart" @@ -58,6 +61,7 @@ type WasiExecutorServiceClient interface { PluginInventory(context.Context, *connect.Request[v1.PluginInventoryRequest]) (*connect.Response[v1.PluginInventoryResponse], error) StartTask(context.Context, *connect.Request[v11.StartTaskRequest]) (*connect.Response[v1.StartTaskResponse], error) Help(context.Context, *connect.Request[v1.HelpRequest]) (*connect.Response[v1.HelpResponse], error) + BinaryName(context.Context, *connect.Request[v1.BinaryNameRequest]) (*connect.Response[v1.BinaryNameResponse], error) } // NewWasiExecutorServiceClient constructs a client for the buildr.rpc.v1.WasiExecutorService @@ -85,6 +89,11 @@ func NewWasiExecutorServiceClient(httpClient connect.HTTPClient, baseURL string, baseURL+WasiExecutorServiceHelpProcedure, opts..., ), + binaryName: connect.NewClient[v1.BinaryNameRequest, v1.BinaryNameResponse]( + httpClient, + baseURL+WasiExecutorServiceBinaryNameProcedure, + opts..., + ), } } @@ -93,6 +102,7 @@ type wasiExecutorServiceClient struct { pluginInventory *connect.Client[v1.PluginInventoryRequest, v1.PluginInventoryResponse] startTask *connect.Client[v11.StartTaskRequest, v1.StartTaskResponse] help *connect.Client[v1.HelpRequest, v1.HelpResponse] + binaryName *connect.Client[v1.BinaryNameRequest, v1.BinaryNameResponse] } // PluginInventory calls buildr.rpc.v1.WasiExecutorService.PluginInventory. @@ -110,11 +120,17 @@ func (c *wasiExecutorServiceClient) Help(ctx context.Context, req *connect.Reque return c.help.CallUnary(ctx, req) } +// BinaryName calls buildr.rpc.v1.WasiExecutorService.BinaryName. +func (c *wasiExecutorServiceClient) BinaryName(ctx context.Context, req *connect.Request[v1.BinaryNameRequest]) (*connect.Response[v1.BinaryNameResponse], error) { + return c.binaryName.CallUnary(ctx, req) +} + // WasiExecutorServiceHandler is an implementation of the buildr.rpc.v1.WasiExecutorService service. type WasiExecutorServiceHandler interface { PluginInventory(context.Context, *connect.Request[v1.PluginInventoryRequest]) (*connect.Response[v1.PluginInventoryResponse], error) StartTask(context.Context, *connect.Request[v11.StartTaskRequest]) (*connect.Response[v1.StartTaskResponse], error) Help(context.Context, *connect.Request[v1.HelpRequest]) (*connect.Response[v1.HelpResponse], error) + BinaryName(context.Context, *connect.Request[v1.BinaryNameRequest]) (*connect.Response[v1.BinaryNameResponse], error) } // NewWasiExecutorServiceHandler builds an HTTP handler from the service implementation. It returns @@ -138,6 +154,11 @@ func NewWasiExecutorServiceHandler(svc WasiExecutorServiceHandler, opts ...conne svc.Help, opts..., ) + wasiExecutorServiceBinaryNameHandler := connect.NewUnaryHandler( + WasiExecutorServiceBinaryNameProcedure, + svc.BinaryName, + opts..., + ) return "/buildr.rpc.v1.WasiExecutorService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case WasiExecutorServicePluginInventoryProcedure: @@ -146,6 +167,8 @@ func NewWasiExecutorServiceHandler(svc WasiExecutorServiceHandler, opts ...conne wasiExecutorServiceStartTaskHandler.ServeHTTP(w, r) case WasiExecutorServiceHelpProcedure: wasiExecutorServiceHelpHandler.ServeHTTP(w, r) + case WasiExecutorServiceBinaryNameProcedure: + wasiExecutorServiceBinaryNameHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -167,6 +190,10 @@ func (UnimplementedWasiExecutorServiceHandler) Help(context.Context, *connect.Re return nil, connect.NewError(connect.CodeUnimplemented, errors.New("buildr.rpc.v1.WasiExecutorService.Help is not implemented")) } +func (UnimplementedWasiExecutorServiceHandler) BinaryName(context.Context, *connect.Request[v1.BinaryNameRequest]) (*connect.Response[v1.BinaryNameResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("buildr.rpc.v1.WasiExecutorService.BinaryName is not implemented")) +} + // ExecutorHostServiceClient is a client for the buildr.rpc.v1.ExecutorHostService service. type ExecutorHostServiceClient interface { ProcessStart(context.Context, *connect.Request[v1.ProcessStartRequest]) (*connect.Response[v1.ProcessStartResponse], error) diff --git a/generated/wasi/v1/wasi.pb.go b/generated/wasi/v1/wasi.pb.go index 61f3811..cda79c1 100644 --- a/generated/wasi/v1/wasi.pb.go +++ b/generated/wasi/v1/wasi.pb.go @@ -327,6 +327,108 @@ func (x *StartTaskResponse) GetError() string { return "" } +type BinaryNameRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ModuleReference *v1.ModuleReference `protobuf:"bytes,1,opt,name=module_reference,json=moduleReference,proto3" json:"module_reference,omitempty"` + Spec *v1.ModuleSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` +} + +func (x *BinaryNameRequest) Reset() { + *x = BinaryNameRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_wasi_v1_wasi_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BinaryNameRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BinaryNameRequest) ProtoMessage() {} + +func (x *BinaryNameRequest) ProtoReflect() protoreflect.Message { + mi := &file_wasi_v1_wasi_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BinaryNameRequest.ProtoReflect.Descriptor instead. +func (*BinaryNameRequest) Descriptor() ([]byte, []int) { + return file_wasi_v1_wasi_proto_rawDescGZIP(), []int{6} +} + +func (x *BinaryNameRequest) GetModuleReference() *v1.ModuleReference { + if x != nil { + return x.ModuleReference + } + return nil +} + +func (x *BinaryNameRequest) GetSpec() *v1.ModuleSpec { + if x != nil { + return x.Spec + } + return nil +} + +type BinaryNameResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *BinaryNameResponse) Reset() { + *x = BinaryNameResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_wasi_v1_wasi_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BinaryNameResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BinaryNameResponse) ProtoMessage() {} + +func (x *BinaryNameResponse) ProtoReflect() protoreflect.Message { + mi := &file_wasi_v1_wasi_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BinaryNameResponse.ProtoReflect.Descriptor instead. +func (*BinaryNameResponse) Descriptor() ([]byte, []int) { + return file_wasi_v1_wasi_proto_rawDescGZIP(), []int{7} +} + +func (x *BinaryNameResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + type ProcessStartRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -342,7 +444,7 @@ type ProcessStartRequest struct { func (x *ProcessStartRequest) Reset() { *x = ProcessStartRequest{} if protoimpl.UnsafeEnabled { - mi := &file_wasi_v1_wasi_proto_msgTypes[6] + mi := &file_wasi_v1_wasi_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -355,7 +457,7 @@ func (x *ProcessStartRequest) String() string { func (*ProcessStartRequest) ProtoMessage() {} func (x *ProcessStartRequest) ProtoReflect() protoreflect.Message { - mi := &file_wasi_v1_wasi_proto_msgTypes[6] + mi := &file_wasi_v1_wasi_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -368,7 +470,7 @@ func (x *ProcessStartRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProcessStartRequest.ProtoReflect.Descriptor instead. func (*ProcessStartRequest) Descriptor() ([]byte, []int) { - return file_wasi_v1_wasi_proto_rawDescGZIP(), []int{6} + return file_wasi_v1_wasi_proto_rawDescGZIP(), []int{8} } func (x *ProcessStartRequest) GetCommand() string { @@ -419,7 +521,7 @@ type ProcessStartResponse struct { func (x *ProcessStartResponse) Reset() { *x = ProcessStartResponse{} if protoimpl.UnsafeEnabled { - mi := &file_wasi_v1_wasi_proto_msgTypes[7] + mi := &file_wasi_v1_wasi_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -432,7 +534,7 @@ func (x *ProcessStartResponse) String() string { func (*ProcessStartResponse) ProtoMessage() {} func (x *ProcessStartResponse) ProtoReflect() protoreflect.Message { - mi := &file_wasi_v1_wasi_proto_msgTypes[7] + mi := &file_wasi_v1_wasi_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -445,7 +547,7 @@ func (x *ProcessStartResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ProcessStartResponse.ProtoReflect.Descriptor instead. func (*ProcessStartResponse) Descriptor() ([]byte, []int) { - return file_wasi_v1_wasi_proto_rawDescGZIP(), []int{7} + return file_wasi_v1_wasi_proto_rawDescGZIP(), []int{9} } func (x *ProcessStartResponse) GetExitCode() int32 { @@ -480,7 +582,7 @@ type LookupPathRequest struct { func (x *LookupPathRequest) Reset() { *x = LookupPathRequest{} if protoimpl.UnsafeEnabled { - mi := &file_wasi_v1_wasi_proto_msgTypes[8] + mi := &file_wasi_v1_wasi_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -493,7 +595,7 @@ func (x *LookupPathRequest) String() string { func (*LookupPathRequest) ProtoMessage() {} func (x *LookupPathRequest) ProtoReflect() protoreflect.Message { - mi := &file_wasi_v1_wasi_proto_msgTypes[8] + mi := &file_wasi_v1_wasi_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -506,7 +608,7 @@ func (x *LookupPathRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupPathRequest.ProtoReflect.Descriptor instead. func (*LookupPathRequest) Descriptor() ([]byte, []int) { - return file_wasi_v1_wasi_proto_rawDescGZIP(), []int{8} + return file_wasi_v1_wasi_proto_rawDescGZIP(), []int{10} } func (x *LookupPathRequest) GetCommand() string { @@ -528,7 +630,7 @@ type LookupPathResponse struct { func (x *LookupPathResponse) Reset() { *x = LookupPathResponse{} if protoimpl.UnsafeEnabled { - mi := &file_wasi_v1_wasi_proto_msgTypes[9] + mi := &file_wasi_v1_wasi_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -541,7 +643,7 @@ func (x *LookupPathResponse) String() string { func (*LookupPathResponse) ProtoMessage() {} func (x *LookupPathResponse) ProtoReflect() protoreflect.Message { - mi := &file_wasi_v1_wasi_proto_msgTypes[9] + mi := &file_wasi_v1_wasi_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -554,7 +656,7 @@ func (x *LookupPathResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LookupPathResponse.ProtoReflect.Descriptor instead. func (*LookupPathResponse) Descriptor() ([]byte, []int) { - return file_wasi_v1_wasi_proto_rawDescGZIP(), []int{9} + return file_wasi_v1_wasi_proto_rawDescGZIP(), []int{11} } func (x *LookupPathResponse) GetPath() string { @@ -583,7 +685,7 @@ type PluginInventoryResponse_InventorySpec struct { func (x *PluginInventoryResponse_InventorySpec) Reset() { *x = PluginInventoryResponse_InventorySpec{} if protoimpl.UnsafeEnabled { - mi := &file_wasi_v1_wasi_proto_msgTypes[10] + mi := &file_wasi_v1_wasi_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -596,7 +698,7 @@ func (x *PluginInventoryResponse_InventorySpec) String() string { func (*PluginInventoryResponse_InventorySpec) ProtoMessage() {} func (x *PluginInventoryResponse_InventorySpec) ProtoReflect() protoreflect.Message { - mi := &file_wasi_v1_wasi_proto_msgTypes[10] + mi := &file_wasi_v1_wasi_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -673,78 +775,95 @@ var file_wasi_v1_wasi_proto_rawDesc = []byte{ 0x70, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x22, 0x29, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x22, 0x9d, 0x02, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, - 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x55, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x62, 0x75, 0x69, - 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x64, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x73, 0x74, 0x64, - 0x69, 0x6e, 0x1a, 0x3e, 0x0a, 0x10, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x61, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, - 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, - 0x78, 0x69, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, - 0x74, 0x64, 0x65, 0x72, 0x72, 0x22, 0x2d, 0x0a, 0x11, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x50, - 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x3e, 0x0a, 0x12, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x50, 0x61, - 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x32, 0x88, 0x02, 0x0a, 0x13, 0x57, 0x61, 0x73, 0x69, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x60, 0x0a, 0x0f, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x12, - 0x25, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x76, - 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, - 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1f, 0x2e, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, - 0x0a, 0x04, 0x48, 0x65, 0x6c, 0x70, 0x12, 0x1a, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x6c, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, - 0x76, 0x31, 0x2e, 0x48, 0x65, 0x6c, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, - 0xc1, 0x01, 0x0a, 0x13, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x48, 0x6f, 0x73, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x57, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x22, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x51, 0x0a, 0x0a, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, - 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x21, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x42, 0xaa, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x62, 0x75, 0x69, 0x6c, - 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x42, 0x09, 0x57, 0x61, 0x73, 0x69, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x02, 0x50, 0x01, 0x5a, 0x32, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x69, - 0x63, 0x62, 0x34, 0x64, 0x63, 0x30, 0x2e, 0x64, 0x65, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2f, 0x77, - 0x61, 0x73, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x70, 0x63, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x42, - 0x52, 0x58, 0xaa, 0x02, 0x0d, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x52, 0x70, 0x63, 0x2e, - 0x56, 0x31, 0xca, 0x02, 0x0d, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x5c, 0x52, 0x70, 0x63, 0x5c, - 0x56, 0x31, 0xe2, 0x02, 0x19, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x5c, 0x52, 0x70, 0x63, 0x5c, - 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x0f, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x3a, 0x3a, 0x52, 0x70, 0x63, 0x3a, 0x3a, 0x56, 0x31, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x72, 0x22, 0x8d, 0x01, 0x0a, 0x11, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x10, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x52, 0x0f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, + 0x65, 0x63, 0x22, 0x28, 0x0a, 0x12, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9d, 0x02, 0x0a, + 0x13, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, + 0x67, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, + 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, + 0x55, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x64, 0x69, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x73, 0x74, 0x64, 0x69, 0x6e, 0x1a, 0x3e, 0x0a, 0x10, + 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x61, 0x0a, 0x14, + 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x78, 0x69, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x22, + 0x2d, 0x0a, 0x11, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x3e, + 0x0a, 0x12, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x32, 0xdb, + 0x02, 0x0a, 0x13, 0x57, 0x61, 0x73, 0x69, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x60, 0x0a, 0x0f, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x25, 0x2e, 0x62, 0x75, 0x69, 0x6c, + 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x26, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1f, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x04, 0x48, 0x65, 0x6c, 0x70, + 0x12, 0x1a, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, + 0x2e, 0x48, 0x65, 0x6c, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x6c, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0a, 0x42, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, + 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4e, 0x61, + 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x62, 0x75, 0x69, 0x6c, + 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xc1, 0x01, 0x0a, + 0x13, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x57, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x12, 0x22, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, + 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, + 0x0a, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x2e, 0x62, 0x75, + 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, + 0x75, 0x70, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, + 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x42, 0xaa, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x42, 0x09, 0x57, 0x61, 0x73, 0x69, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x48, 0x02, 0x50, 0x01, 0x5a, 0x32, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x69, 0x63, 0x62, 0x34, + 0x64, 0x63, 0x30, 0x2e, 0x64, 0x65, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2f, 0x77, 0x61, 0x73, 0x69, + 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x70, 0x63, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x42, 0x52, 0x58, 0xaa, + 0x02, 0x0d, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x2e, 0x52, 0x70, 0x63, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x0d, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56, 0x31, 0xe2, + 0x02, 0x19, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x72, 0x5c, 0x52, 0x70, 0x63, 0x5c, 0x56, 0x31, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x42, 0x75, + 0x69, 0x6c, 0x64, 0x72, 0x3a, 0x3a, 0x52, 0x70, 0x63, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -759,7 +878,7 @@ func file_wasi_v1_wasi_proto_rawDescGZIP() []byte { return file_wasi_v1_wasi_proto_rawDescData } -var file_wasi_v1_wasi_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_wasi_v1_wasi_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_wasi_v1_wasi_proto_goTypes = []interface{}{ (*HelpRequest)(nil), // 0: buildr.rpc.v1.HelpRequest (*TaskExample)(nil), // 1: buildr.rpc.v1.TaskExample @@ -767,38 +886,45 @@ var file_wasi_v1_wasi_proto_goTypes = []interface{}{ (*PluginInventoryRequest)(nil), // 3: buildr.rpc.v1.PluginInventoryRequest (*PluginInventoryResponse)(nil), // 4: buildr.rpc.v1.PluginInventoryResponse (*StartTaskResponse)(nil), // 5: buildr.rpc.v1.StartTaskResponse - (*ProcessStartRequest)(nil), // 6: buildr.rpc.v1.ProcessStartRequest - (*ProcessStartResponse)(nil), // 7: buildr.rpc.v1.ProcessStartResponse - (*LookupPathRequest)(nil), // 8: buildr.rpc.v1.LookupPathRequest - (*LookupPathResponse)(nil), // 9: buildr.rpc.v1.LookupPathResponse - (*PluginInventoryResponse_InventorySpec)(nil), // 10: buildr.rpc.v1.PluginInventoryResponse.InventorySpec - nil, // 11: buildr.rpc.v1.ProcessStartRequest.EnvironmentEntry - (*v1.ModuleReference)(nil), // 12: buildr.rpc.v1.ModuleReference - (*v1.TaskSpec)(nil), // 13: buildr.rpc.v1.TaskSpec - (*v11.StartTaskRequest)(nil), // 14: buildr.rpc.v1.StartTaskRequest + (*BinaryNameRequest)(nil), // 6: buildr.rpc.v1.BinaryNameRequest + (*BinaryNameResponse)(nil), // 7: buildr.rpc.v1.BinaryNameResponse + (*ProcessStartRequest)(nil), // 8: buildr.rpc.v1.ProcessStartRequest + (*ProcessStartResponse)(nil), // 9: buildr.rpc.v1.ProcessStartResponse + (*LookupPathRequest)(nil), // 10: buildr.rpc.v1.LookupPathRequest + (*LookupPathResponse)(nil), // 11: buildr.rpc.v1.LookupPathResponse + (*PluginInventoryResponse_InventorySpec)(nil), // 12: buildr.rpc.v1.PluginInventoryResponse.InventorySpec + nil, // 13: buildr.rpc.v1.ProcessStartRequest.EnvironmentEntry + (*v1.ModuleReference)(nil), // 14: buildr.rpc.v1.ModuleReference + (*v1.TaskSpec)(nil), // 15: buildr.rpc.v1.TaskSpec + (*v1.ModuleSpec)(nil), // 16: buildr.rpc.v1.ModuleSpec + (*v11.StartTaskRequest)(nil), // 17: buildr.rpc.v1.StartTaskRequest } var file_wasi_v1_wasi_proto_depIdxs = []int32{ - 12, // 0: buildr.rpc.v1.HelpRequest.module_reference:type_name -> buildr.rpc.v1.ModuleReference - 13, // 1: buildr.rpc.v1.TaskExample.task_spec:type_name -> buildr.rpc.v1.TaskSpec + 14, // 0: buildr.rpc.v1.HelpRequest.module_reference:type_name -> buildr.rpc.v1.ModuleReference + 15, // 1: buildr.rpc.v1.TaskExample.task_spec:type_name -> buildr.rpc.v1.TaskSpec 1, // 2: buildr.rpc.v1.HelpResponse.examples:type_name -> buildr.rpc.v1.TaskExample - 10, // 3: buildr.rpc.v1.PluginInventoryResponse.specs:type_name -> buildr.rpc.v1.PluginInventoryResponse.InventorySpec - 11, // 4: buildr.rpc.v1.ProcessStartRequest.environment:type_name -> buildr.rpc.v1.ProcessStartRequest.EnvironmentEntry - 12, // 5: buildr.rpc.v1.PluginInventoryResponse.InventorySpec.module_ref:type_name -> buildr.rpc.v1.ModuleReference - 3, // 6: buildr.rpc.v1.WasiExecutorService.PluginInventory:input_type -> buildr.rpc.v1.PluginInventoryRequest - 14, // 7: buildr.rpc.v1.WasiExecutorService.StartTask:input_type -> buildr.rpc.v1.StartTaskRequest - 0, // 8: buildr.rpc.v1.WasiExecutorService.Help:input_type -> buildr.rpc.v1.HelpRequest - 6, // 9: buildr.rpc.v1.ExecutorHostService.ProcessStart:input_type -> buildr.rpc.v1.ProcessStartRequest - 8, // 10: buildr.rpc.v1.ExecutorHostService.LookupPath:input_type -> buildr.rpc.v1.LookupPathRequest - 4, // 11: buildr.rpc.v1.WasiExecutorService.PluginInventory:output_type -> buildr.rpc.v1.PluginInventoryResponse - 5, // 12: buildr.rpc.v1.WasiExecutorService.StartTask:output_type -> buildr.rpc.v1.StartTaskResponse - 2, // 13: buildr.rpc.v1.WasiExecutorService.Help:output_type -> buildr.rpc.v1.HelpResponse - 7, // 14: buildr.rpc.v1.ExecutorHostService.ProcessStart:output_type -> buildr.rpc.v1.ProcessStartResponse - 9, // 15: buildr.rpc.v1.ExecutorHostService.LookupPath:output_type -> buildr.rpc.v1.LookupPathResponse - 11, // [11:16] is the sub-list for method output_type - 6, // [6:11] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 12, // 3: buildr.rpc.v1.PluginInventoryResponse.specs:type_name -> buildr.rpc.v1.PluginInventoryResponse.InventorySpec + 14, // 4: buildr.rpc.v1.BinaryNameRequest.module_reference:type_name -> buildr.rpc.v1.ModuleReference + 16, // 5: buildr.rpc.v1.BinaryNameRequest.spec:type_name -> buildr.rpc.v1.ModuleSpec + 13, // 6: buildr.rpc.v1.ProcessStartRequest.environment:type_name -> buildr.rpc.v1.ProcessStartRequest.EnvironmentEntry + 14, // 7: buildr.rpc.v1.PluginInventoryResponse.InventorySpec.module_ref:type_name -> buildr.rpc.v1.ModuleReference + 3, // 8: buildr.rpc.v1.WasiExecutorService.PluginInventory:input_type -> buildr.rpc.v1.PluginInventoryRequest + 17, // 9: buildr.rpc.v1.WasiExecutorService.StartTask:input_type -> buildr.rpc.v1.StartTaskRequest + 0, // 10: buildr.rpc.v1.WasiExecutorService.Help:input_type -> buildr.rpc.v1.HelpRequest + 6, // 11: buildr.rpc.v1.WasiExecutorService.BinaryName:input_type -> buildr.rpc.v1.BinaryNameRequest + 8, // 12: buildr.rpc.v1.ExecutorHostService.ProcessStart:input_type -> buildr.rpc.v1.ProcessStartRequest + 10, // 13: buildr.rpc.v1.ExecutorHostService.LookupPath:input_type -> buildr.rpc.v1.LookupPathRequest + 4, // 14: buildr.rpc.v1.WasiExecutorService.PluginInventory:output_type -> buildr.rpc.v1.PluginInventoryResponse + 5, // 15: buildr.rpc.v1.WasiExecutorService.StartTask:output_type -> buildr.rpc.v1.StartTaskResponse + 2, // 16: buildr.rpc.v1.WasiExecutorService.Help:output_type -> buildr.rpc.v1.HelpResponse + 7, // 17: buildr.rpc.v1.WasiExecutorService.BinaryName:output_type -> buildr.rpc.v1.BinaryNameResponse + 9, // 18: buildr.rpc.v1.ExecutorHostService.ProcessStart:output_type -> buildr.rpc.v1.ProcessStartResponse + 11, // 19: buildr.rpc.v1.ExecutorHostService.LookupPath:output_type -> buildr.rpc.v1.LookupPathResponse + 14, // [14:20] is the sub-list for method output_type + 8, // [8:14] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_wasi_v1_wasi_proto_init() } @@ -880,7 +1006,7 @@ func file_wasi_v1_wasi_proto_init() { } } file_wasi_v1_wasi_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProcessStartRequest); i { + switch v := v.(*BinaryNameRequest); i { case 0: return &v.state case 1: @@ -892,7 +1018,7 @@ func file_wasi_v1_wasi_proto_init() { } } file_wasi_v1_wasi_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProcessStartResponse); i { + switch v := v.(*BinaryNameResponse); i { case 0: return &v.state case 1: @@ -904,7 +1030,7 @@ func file_wasi_v1_wasi_proto_init() { } } file_wasi_v1_wasi_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LookupPathRequest); i { + switch v := v.(*ProcessStartRequest); i { case 0: return &v.state case 1: @@ -916,7 +1042,7 @@ func file_wasi_v1_wasi_proto_init() { } } file_wasi_v1_wasi_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LookupPathResponse); i { + switch v := v.(*ProcessStartResponse); i { case 0: return &v.state case 1: @@ -928,6 +1054,30 @@ func file_wasi_v1_wasi_proto_init() { } } file_wasi_v1_wasi_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LookupPathRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_wasi_v1_wasi_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LookupPathResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_wasi_v1_wasi_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PluginInventoryResponse_InventorySpec); i { case 0: return &v.state @@ -946,7 +1096,7 @@ func file_wasi_v1_wasi_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_wasi_v1_wasi_proto_rawDesc, NumEnums: 0, - NumMessages: 12, + NumMessages: 14, NumExtensions: 0, NumServices: 2, }, diff --git a/generated/wasi/v1/wasi_vtproto.pb.go b/generated/wasi/v1/wasi_vtproto.pb.go index 5ec4b25..1660f46 100644 --- a/generated/wasi/v1/wasi_vtproto.pb.go +++ b/generated/wasi/v1/wasi_vtproto.pb.go @@ -346,6 +346,99 @@ func (m *StartTaskResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *BinaryNameRequest) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *BinaryNameRequest) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *BinaryNameRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.Spec != nil { + size, err := m.Spec.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x12 + } + if m.ModuleReference != nil { + size, err := m.ModuleReference.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *BinaryNameResponse) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *BinaryNameResponse) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *BinaryNameResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarint(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *ProcessStartRequest) MarshalVT() (dAtA []byte, err error) { if m == nil { return nil, nil @@ -696,6 +789,38 @@ func (m *StartTaskResponse) SizeVT() (n int) { return n } +func (m *BinaryNameRequest) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ModuleReference != nil { + l = m.ModuleReference.SizeVT() + n += 1 + l + sov(uint64(l)) + } + if m.Spec != nil { + l = m.Spec.SizeVT() + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *BinaryNameResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + n += len(m.unknownFields) + return n +} + func (m *ProcessStartRequest) SizeVT() (n int) { if m == nil { return 0 @@ -1518,6 +1643,212 @@ func (m *StartTaskResponse) UnmarshalVT(dAtA []byte) error { } return nil } +func (m *BinaryNameRequest) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: BinaryNameRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BinaryNameRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ModuleReference", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ModuleReference == nil { + m.ModuleReference = &v1.ModuleReference{} + } + if err := m.ModuleReference.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Spec == nil { + m.Spec = &v1.ModuleSpec{} + } + if err := m.Spec.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *BinaryNameResponse) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: BinaryNameResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BinaryNameResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *ProcessStartRequest) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/wasi/v1/wasi.proto b/wasi/v1/wasi.proto index a47319e..98e06f3 100644 --- a/wasi/v1/wasi.proto +++ b/wasi/v1/wasi.proto @@ -37,10 +37,20 @@ message StartTaskResponse { string error = 1; } +message BinaryNameRequest { + ModuleReference module_reference = 1; + ModuleSpec spec = 2; +} + +message BinaryNameResponse { + string name = 1; +} + service WasiExecutorService { rpc PluginInventory(PluginInventoryRequest) returns (PluginInventoryResponse); rpc StartTask(StartTaskRequest) returns (StartTaskResponse); rpc Help(HelpRequest) returns (HelpResponse); + rpc BinaryName(BinaryNameRequest) returns (BinaryNameResponse); } message ProcessStartRequest {