From b8fa79f32f8763d2d5f8d06298fd51d4bdde4775 Mon Sep 17 00:00:00 2001 From: Mark Marton Date: Tue, 28 Apr 2026 16:23:39 +0200 Subject: [PATCH 1/7] perf(datapath): remove unused fields from sub/unsub messages mirrored to control-plane Signed-off-by: Mark Marton --- .../proto/controller/v1/controller.pb.go | 554 +++++------------- .../proto/controller/v1/controller_grpc.pb.go | 6 +- .../proto/controlplane/v1/controlplane.pb.go | 383 ++++-------- .../controlplane/v1/controlplane_grpc.pb.go | 30 +- data-plane/Cargo.lock | 7 + data-plane/Cargo.toml | 1 + data-plane/Taskfile.yaml | 8 + data-plane/core/datapath/Cargo.toml | 9 + .../datapath/benches/process_stream_alloc.rs | 53 ++ .../benches/process_stream_benchmark.rs | 31 + .../datapath/benches/process_stream_common.rs | 106 ++++ .../core/datapath/src/message_processing.rs | 47 +- .../core/datapath/src/messages/utils.rs | 41 +- 13 files changed, 604 insertions(+), 672 deletions(-) create mode 100644 data-plane/core/datapath/benches/process_stream_alloc.rs create mode 100644 data-plane/core/datapath/benches/process_stream_benchmark.rs create mode 100644 data-plane/core/datapath/benches/process_stream_common.rs diff --git a/control-plane/common/proto/controller/v1/controller.pb.go b/control-plane/common/proto/controller/v1/controller.pb.go index fe89422b7..82c80c599 100644 --- a/control-plane/common/proto/controller/v1/controller.pb.go +++ b/control-plane/common/proto/controller/v1/controller.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.11 // protoc v5.29.0 // source: controller/v1/controller.proto @@ -2027,397 +2027,167 @@ func (x *ListParticipantsResponse) GetParticipantName() []string { var File_controller_v1_controller_proto protoreflect.FileDescriptor -var file_controller_v1_controller_proto_rawDesc = string([]byte{ - 0x0a, 0x1e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x8b, 0x0f, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x2c, 0x0a, 0x03, 0x61, 0x63, 0x6b, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x6b, - 0x48, 0x00, 0x52, 0x03, 0x61, 0x63, 0x6b, 0x12, 0x6a, 0x0a, 0x19, 0x73, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x17, 0x73, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x6d, 0x0a, 0x1a, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x18, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x64, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, - 0x00, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x67, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x16, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x5e, 0x0a, 0x15, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x13, 0x72, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x61, 0x0a, 0x16, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x14, - 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x17, 0x64, 0x65, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x72, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x48, 0x00, 0x52, 0x15, 0x64, 0x65, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x67, 0x0a, 0x18, 0x64, 0x65, - 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x16, 0x64, 0x65, 0x72, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, - 0x52, 0x14, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x61, 0x0a, 0x16, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x48, 0x00, 0x52, 0x14, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x64, 0x0a, 0x17, 0x61, 0x64, 0x64, - 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x15, 0x61, 0x64, 0x64, 0x50, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x6d, 0x0a, 0x1a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, - 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x48, 0x00, 0x52, 0x18, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x72, 0x74, - 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, - 0x0a, 0x14, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5f, 0x0a, 0x15, - 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x13, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, - 0x19, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, - 0x74, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, - 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, - 0x52, 0x17, 0x6c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6d, 0x0a, 0x1a, 0x6c, 0x69, 0x73, - 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x5f, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, - 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x18, - 0x6c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x14, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, - 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x41, - 0x63, 0x6b, 0x48, 0x00, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x43, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x41, 0x63, 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x22, 0x52, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0x6a, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, - 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, - 0x67, 0x22, 0xf3, 0x02, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, - 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, - 0x6e, 0x74, 0x30, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, - 0x5f, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, - 0x65, 0x6e, 0x74, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x5f, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x32, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x6f, 0x64, - 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x6c, 0x69, 0x6e, 0x6b, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x02, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, - 0x08, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8e, 0x01, 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x6b, 0x12, 0x45, 0x0a, 0x0c, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xcf, 0x02, 0x0a, 0x14, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x12, 0x53, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x6f, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x53, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, - 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x6f, 0x53, 0x65, 0x74, 0x12, 0x59, 0x0a, 0x17, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x5f, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x15, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x6f, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x54, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x17, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x41, 0x63, 0x6b, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, - 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x6b, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x57, 0x0a, 0x14, 0x73, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x6b, 0x52, 0x13, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x22, 0x6b, 0x0a, 0x03, 0x41, 0x63, 0x6b, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x72, 0x69, - 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, - 0x19, 0x0a, 0x17, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x69, - 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0xcc, 0x02, 0x0a, 0x11, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x30, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x30, - 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x31, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, - 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x32, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x32, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x51, 0x0a, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x53, 0x0a, 0x12, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x82, 0x02, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x4c, 0x0a, 0x0f, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x07, 0x6c, - 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, - 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x22, 0x17, 0x0a, - 0x15, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x88, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, - 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, - 0x64, 0x12, 0x3e, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, - 0x73, 0x22, 0x16, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xca, 0x01, 0x0a, 0x11, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6d, - 0x74, 0x6c, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x74, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, - 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x68, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x15, - 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x74, - 0x6c, 0x73, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x42, 0x06, - 0x0a, 0x04, 0x5f, 0x74, 0x6c, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, - 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x55, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x22, - 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x60, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x72, 0x69, - 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x22, 0x46, 0x0a, 0x15, 0x44, 0x65, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, - 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x62, 0x0a, 0x16, 0x44, - 0x65, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, - 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, - 0x59, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x64, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x14, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x50, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, - 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x88, 0x01, - 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, - 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, - 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, - 0x70, 0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, - 0x64, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x69, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x69, - 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x17, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x75, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, - 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, - 0x61, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x2a, - 0x47, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, - 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x10, 0x01, 0x2a, 0x5b, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x21, 0x0a, 0x1d, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, - 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x47, 0x4f, 0x49, 0x4e, 0x47, - 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4d, - 0x49, 0x4e, 0x47, 0x10, 0x01, 0x32, 0x79, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x64, 0x0a, 0x12, 0x4f, 0x70, - 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x23, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, - 0x42, 0x4e, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, - 0x67, 0x6e, 0x74, 0x63, 0x79, 0x2f, 0x73, 0x6c, 0x69, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x2d, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x76, 0x31, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_controller_v1_controller_proto_rawDesc = "" + + "\n" + + "\x1econtroller/v1/controller.proto\x12\x13controller.proto.v1\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x8b\x0f\n" + + "\x0eControlMessage\x12\x1d\n" + + "\n" + + "message_id\x18\x01 \x01(\tR\tmessageId\x12R\n" + + "\x0econfig_command\x18\x02 \x01(\v2).controller.proto.v1.ConfigurationCommandH\x00R\rconfigCommand\x12,\n" + + "\x03ack\x18\x03 \x01(\v2\x18.controller.proto.v1.AckH\x00R\x03ack\x12j\n" + + "\x19subscription_list_request\x18\x04 \x01(\v2,.controller.proto.v1.SubscriptionListRequestH\x00R\x17subscriptionListRequest\x12m\n" + + "\x1asubscription_list_response\x18\x05 \x01(\v2-.controller.proto.v1.SubscriptionListResponseH\x00R\x18subscriptionListResponse\x12d\n" + + "\x17connection_list_request\x18\x06 \x01(\v2*.controller.proto.v1.ConnectionListRequestH\x00R\x15connectionListRequest\x12g\n" + + "\x18connection_list_response\x18\a \x01(\v2+.controller.proto.v1.ConnectionListResponseH\x00R\x16connectionListResponse\x12^\n" + + "\x15register_node_request\x18\b \x01(\v2(.controller.proto.v1.RegisterNodeRequestH\x00R\x13registerNodeRequest\x12a\n" + + "\x16register_node_response\x18\t \x01(\v2).controller.proto.v1.RegisterNodeResponseH\x00R\x14registerNodeResponse\x12d\n" + + "\x17deregister_node_request\x18\n" + + " \x01(\v2*.controller.proto.v1.DeregisterNodeRequestH\x00R\x15deregisterNodeRequest\x12g\n" + + "\x18deregister_node_response\x18\v \x01(\v2+.controller.proto.v1.DeregisterNodeResponseH\x00R\x16deregisterNodeResponse\x12a\n" + + "\x16create_channel_request\x18\f \x01(\v2).controller.proto.v1.CreateChannelRequestH\x00R\x14createChannelRequest\x12a\n" + + "\x16delete_channel_request\x18\r \x01(\v2).controller.proto.v1.DeleteChannelRequestH\x00R\x14deleteChannelRequest\x12d\n" + + "\x17add_participant_request\x18\x0e \x01(\v2*.controller.proto.v1.AddParticipantRequestH\x00R\x15addParticipantRequest\x12m\n" + + "\x1adelete_participant_request\x18\x0f \x01(\v2-.controller.proto.v1.DeleteParticipantRequestH\x00R\x18deleteParticipantRequest\x12\\\n" + + "\x14list_channel_request\x18\x10 \x01(\v2(.controller.proto.v1.ListChannelsRequestH\x00R\x12listChannelRequest\x12_\n" + + "\x15list_channel_response\x18\x11 \x01(\v2).controller.proto.v1.ListChannelsResponseH\x00R\x13listChannelResponse\x12j\n" + + "\x19list_participants_request\x18\x12 \x01(\v2,.controller.proto.v1.ListParticipantsRequestH\x00R\x17listParticipantsRequest\x12m\n" + + "\x1alist_participants_response\x18\x13 \x01(\v2-.controller.proto.v1.ListParticipantsResponseH\x00R\x18listParticipantsResponse\x12\\\n" + + "\x12config_command_ack\x18\x14 \x01(\v2,.controller.proto.v1.ConfigurationCommandAckH\x00R\x10configCommandAckB\t\n" + + "\apayload\"R\n" + + "\n" + + "Connection\x12#\n" + + "\rconnection_id\x18\x01 \x01(\tR\fconnectionId\x12\x1f\n" + + "\vconfig_data\x18\x02 \x01(\tR\n" + + "configData\"j\n" + + "\rConnectionAck\x12#\n" + + "\rconnection_id\x18\x01 \x01(\tR\fconnectionId\x12\x18\n" + + "\asuccess\x18\x02 \x01(\bR\asuccess\x12\x1a\n" + + "\berrorMsg\x18\x03 \x01(\tR\berrorMsg\"\xf3\x02\n" + + "\fSubscription\x12\x1f\n" + + "\vcomponent_0\x18\x01 \x01(\tR\n" + + "component0\x12\x1f\n" + + "\vcomponent_1\x18\x02 \x01(\tR\n" + + "component1\x12\x1f\n" + + "\vcomponent_2\x18\x03 \x01(\tR\n" + + "component2\x12,\n" + + "\x02id\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x02id\x12#\n" + + "\rconnection_id\x18\x05 \x01(\tR\fconnectionId\x12\x1c\n" + + "\anode_id\x18\x06 \x01(\tH\x00R\x06nodeId\x88\x01\x01\x12\x1c\n" + + "\alink_id\x18\a \x01(\tH\x01R\x06linkId\x88\x01\x01\x12K\n" + + "\tdirection\x18\b \x01(\x0e2(.controller.proto.v1.ConnectionDirectionH\x02R\tdirection\x88\x01\x01B\n" + + "\n" + + "\b_node_idB\n" + + "\n" + + "\b_link_idB\f\n" + + "\n" + + "_direction\"\x8e\x01\n" + + "\x0fSubscriptionAck\x12E\n" + + "\fsubscription\x18\x01 \x01(\v2!.controller.proto.v1.SubscriptionR\fsubscription\x12\x18\n" + + "\asuccess\x18\x02 \x01(\bR\asuccess\x12\x1a\n" + + "\berrorMsg\x18\x03 \x01(\tR\berrorMsg\"\xcf\x02\n" + + "\x14ConfigurationCommand\x12S\n" + + "\x15connections_to_create\x18\x01 \x03(\v2\x1f.controller.proto.v1.ConnectionR\x13connectionsToCreate\x12S\n" + + "\x14subscriptions_to_set\x18\x02 \x03(\v2!.controller.proto.v1.SubscriptionR\x12subscriptionsToSet\x12Y\n" + + "\x17subscriptions_to_delete\x18\x03 \x03(\v2!.controller.proto.v1.SubscriptionR\x15subscriptionsToDelete\x122\n" + + "\x15connections_to_delete\x18\x04 \x03(\tR\x13connectionsToDelete\"\xf5\x01\n" + + "\x17ConfigurationCommandAck\x12.\n" + + "\x13original_message_id\x18\x01 \x01(\tR\x11originalMessageId\x12Q\n" + + "\x12connections_status\x18\x02 \x03(\v2\".controller.proto.v1.ConnectionAckR\x11connectionsStatus\x12W\n" + + "\x14subscriptions_status\x18\x03 \x03(\v2$.controller.proto.v1.SubscriptionAckR\x13subscriptionsStatus\"k\n" + + "\x03Ack\x12.\n" + + "\x13original_message_id\x18\x01 \x01(\tR\x11originalMessageId\x12\x18\n" + + "\asuccess\x18\x02 \x01(\bR\asuccess\x12\x1a\n" + + "\bmessages\x18\x03 \x03(\tR\bmessages\"\x19\n" + + "\x17SubscriptionListRequest\"\x8c\x01\n" + + "\x18SubscriptionListResponse\x12.\n" + + "\x13original_message_id\x18\x01 \x01(\tR\x11originalMessageId\x12@\n" + + "\aentries\x18\x02 \x03(\v2&.controller.proto.v1.SubscriptionEntryR\aentries\"\xcc\x02\n" + + "\x11SubscriptionEntry\x12\x1f\n" + + "\vcomponent_0\x18\x01 \x01(\tR\n" + + "component0\x12\x1f\n" + + "\vcomponent_1\x18\x02 \x01(\tR\n" + + "component1\x12\x1f\n" + + "\vcomponent_2\x18\x03 \x01(\tR\n" + + "component2\x12,\n" + + "\x02id\x18\x04 \x01(\v2\x1c.google.protobuf.UInt64ValueR\x02id\x12Q\n" + + "\x11local_connections\x18\x05 \x03(\v2$.controller.proto.v1.ConnectionEntryR\x10localConnections\x12S\n" + + "\x12remote_connections\x18\x06 \x03(\v2$.controller.proto.v1.ConnectionEntryR\x11remoteConnections\"\x82\x02\n" + + "\x0fConnectionEntry\x12\x0e\n" + + "\x02id\x18\x01 \x01(\x04R\x02id\x12L\n" + + "\x0fconnection_type\x18\x02 \x01(\x0e2#.controller.proto.v1.ConnectionTypeR\x0econnectionType\x12\x1f\n" + + "\vconfig_data\x18\x03 \x01(\tR\n" + + "configData\x12\x1c\n" + + "\alink_id\x18\x04 \x01(\tH\x00R\x06linkId\x88\x01\x01\x12F\n" + + "\tdirection\x18\x05 \x01(\x0e2(.controller.proto.v1.ConnectionDirectionR\tdirectionB\n" + + "\n" + + "\b_link_id\"\x17\n" + + "\x15ConnectionListRequest\"\x88\x01\n" + + "\x16ConnectionListResponse\x12.\n" + + "\x13original_message_id\x18\x01 \x01(\tR\x11originalMessageId\x12>\n" + + "\aentries\x18\x02 \x03(\v2$.controller.proto.v1.ConnectionEntryR\aentries\"\x16\n" + + "\x04Node\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"\xca\x01\n" + + "\x11ConnectionDetails\x12\x1a\n" + + "\bendpoint\x18\x01 \x01(\tR\bendpoint\x12#\n" + + "\rmtls_required\x18\x02 \x01(\bR\fmtlsRequired\x123\n" + + "\bmetadata\x18\x03 \x01(\v2\x17.google.protobuf.StructR\bmetadata\x12\x17\n" + + "\x04auth\x18\x04 \x01(\tH\x00R\x04auth\x88\x01\x01\x12\x15\n" + + "\x03tls\x18\x05 \x01(\tH\x01R\x03tls\x88\x01\x01B\a\n" + + "\x05_authB\x06\n" + + "\x04_tls\"\xb8\x01\n" + + "\x13RegisterNodeRequest\x12\x17\n" + + "\anode_id\x18\x01 \x01(\tR\x06nodeId\x12U\n" + + "\x12connection_details\x18\x02 \x03(\v2&.controller.proto.v1.ConnectionDetailsR\x11connectionDetails\x12\"\n" + + "\n" + + "group_name\x18\x03 \x01(\tH\x00R\tgroupName\x88\x01\x01B\r\n" + + "\v_group_name\"`\n" + + "\x14RegisterNodeResponse\x12.\n" + + "\x13original_message_id\x18\x01 \x01(\tR\x11originalMessageId\x12\x18\n" + + "\asuccess\x18\x02 \x01(\bR\asuccess\"F\n" + + "\x15DeregisterNodeRequest\x12-\n" + + "\x04node\x18\x01 \x01(\v2\x19.controller.proto.v1.NodeR\x04node\"b\n" + + "\x16DeregisterNodeResponse\x12.\n" + + "\x13original_message_id\x18\x01 \x01(\tR\x11originalMessageId\x12\x18\n" + + "\asuccess\x18\x02 \x01(\bR\asuccess\"Y\n" + + "\x14CreateChannelRequest\x12\x1e\n" + + "\n" + + "moderators\x18\x01 \x03(\tR\n" + + "moderators\x12!\n" + + "\fchannel_name\x18\x02 \x01(\tR\vchannelName\"Y\n" + + "\x14DeleteChannelRequest\x12!\n" + + "\fchannel_name\x18\x01 \x01(\tR\vchannelName\x12\x1e\n" + + "\n" + + "moderators\x18\x02 \x03(\tR\n" + + "moderators\"\x85\x01\n" + + "\x15AddParticipantRequest\x12!\n" + + "\fchannel_name\x18\x01 \x01(\tR\vchannelName\x12)\n" + + "\x10participant_name\x18\x02 \x01(\tR\x0fparticipantName\x12\x1e\n" + + "\n" + + "moderators\x18\x03 \x03(\tR\n" + + "moderators\"\x88\x01\n" + + "\x18DeleteParticipantRequest\x12!\n" + + "\fchannel_name\x18\x01 \x01(\tR\vchannelName\x12)\n" + + "\x10participant_name\x18\x02 \x01(\tR\x0fparticipantName\x12\x1e\n" + + "\n" + + "moderators\x18\x03 \x03(\tR\n" + + "moderators\"\x15\n" + + "\x13ListChannelsRequest\"i\n" + + "\x14ListChannelsResponse\x12.\n" + + "\x13original_message_id\x18\x01 \x01(\tR\x11originalMessageId\x12!\n" + + "\fchannel_name\x18\x02 \x03(\tR\vchannelName\"<\n" + + "\x17ListParticipantsRequest\x12!\n" + + "\fchannel_name\x18\x01 \x01(\tR\vchannelName\"u\n" + + "\x18ListParticipantsResponse\x12.\n" + + "\x13original_message_id\x18\x01 \x01(\tR\x11originalMessageId\x12)\n" + + "\x10participant_name\x18\x02 \x03(\tR\x0fparticipantName*G\n" + + "\x0eConnectionType\x12\x19\n" + + "\x15CONNECTION_TYPE_LOCAL\x10\x00\x12\x1a\n" + + "\x16CONNECTION_TYPE_REMOTE\x10\x01*[\n" + + "\x13ConnectionDirection\x12!\n" + + "\x1dCONNECTION_DIRECTION_OUTGOING\x10\x00\x12!\n" + + "\x1dCONNECTION_DIRECTION_INCOMING\x10\x012y\n" + + "\x11ControllerService\x12d\n" + + "\x12OpenControlChannel\x12#.controller.proto.v1.ControlMessage\x1a#.controller.proto.v1.ControlMessage\"\x00(\x010\x01BNZLgithub.com/agntcy/slim/control-plane/common/proto/controller/v1;controllerv1b\x06proto3" var ( file_controller_v1_controller_proto_rawDescOnce sync.Once diff --git a/control-plane/common/proto/controller/v1/controller_grpc.pb.go b/control-plane/common/proto/controller/v1/controller_grpc.pb.go index 322d529c6..8b545bd59 100644 --- a/control-plane/common/proto/controller/v1/controller_grpc.pb.go +++ b/control-plane/common/proto/controller/v1/controller_grpc.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.5.1 +// - protoc-gen-go-grpc v1.6.1 // - protoc v5.29.0 // source: controller/v1/controller.proto @@ -69,7 +69,7 @@ type ControllerServiceServer interface { type UnimplementedControllerServiceServer struct{} func (UnimplementedControllerServiceServer) OpenControlChannel(grpc.BidiStreamingServer[ControlMessage, ControlMessage]) error { - return status.Errorf(codes.Unimplemented, "method OpenControlChannel not implemented") + return status.Error(codes.Unimplemented, "method OpenControlChannel not implemented") } func (UnimplementedControllerServiceServer) mustEmbedUnimplementedControllerServiceServer() {} func (UnimplementedControllerServiceServer) testEmbeddedByValue() {} @@ -82,7 +82,7 @@ type UnsafeControllerServiceServer interface { } func RegisterControllerServiceServer(s grpc.ServiceRegistrar, srv ControllerServiceServer) { - // If the following call pancis, it indicates UnimplementedControllerServiceServer was + // If the following call panics, it indicates UnimplementedControllerServiceServer 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. diff --git a/control-plane/common/proto/controlplane/v1/controlplane.pb.go b/control-plane/common/proto/controlplane/v1/controlplane.pb.go index b5c373349..29d914ed4 100644 --- a/control-plane/common/proto/controlplane/v1/controlplane.pb.go +++ b/control-plane/common/proto/controlplane/v1/controlplane.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 +// protoc-gen-go v1.36.11 // protoc v5.29.0 // source: controlplane/v1/controlplane.proto @@ -1203,262 +1203,131 @@ func (x *LinkListResponse) GetLinks() []*LinkEntry { var File_controlplane_v1_controlplane_proto protoreflect.FileDescriptor -var file_controlplane_v1_controlplane_proto_rawDesc = string([]byte{ - 0x0a, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e, 0x01, 0x0a, 0x14, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x5e, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x14, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x16, 0x0a, 0x04, - 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x4e, 0x6f, 0x64, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x09, 0x4e, 0x6f, 0x64, 0x65, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x48, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x21, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4e, 0x0a, 0x10, 0x4e, 0x6f, - 0x64, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0xd1, 0x01, 0x0a, 0x0f, 0x41, - 0x64, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, - 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x45, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1e, - 0x0a, 0x0a, 0x64, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x46, - 0x0a, 0x10, 0x41, 0x64, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x22, 0x93, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, - 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, - 0x64, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x64, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x13, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x36, 0x0a, - 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x72, - 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x3a, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, - 0x65, 0x22, 0x50, 0x0a, 0x10, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x72, 0x63, 0x4e, 0x6f, 0x64, 0x65, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x72, 0x63, 0x4e, 0x6f, 0x64, - 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, - 0x65, 0x49, 0x64, 0x22, 0x80, 0x04, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, - 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x64, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, - 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, - 0x28, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x30, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, - 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x63, - 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x32, 0x12, 0x26, 0x0a, 0x0c, - 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x73, 0x67, 0x12, - 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, - 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, - 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x22, 0x4e, 0x0a, 0x11, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x22, 0x4f, 0x0a, 0x0f, 0x4c, 0x69, 0x6e, 0x6b, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x72, 0x63, - 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x72, - 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x73, 0x74, 0x4e, - 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x73, - 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0xe2, 0x02, 0x0a, 0x09, 0x4c, 0x69, 0x6e, 0x6b, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x24, - 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x6f, - 0x64, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x73, 0x74, - 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, - 0x65, 0x73, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x63, - 0x6f, 0x6e, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x73, 0x67, 0x12, - 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0x4a, 0x0a, 0x10, - 0x4c, 0x69, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x36, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x2a, 0x4b, 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x17, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, - 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, - 0x54, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x90, 0x01, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, - 0x13, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, - 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x18, - 0x0a, 0x14, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, - 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x2a, 0x73, 0x0a, 0x0a, 0x4c, 0x69, 0x6e, 0x6b, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x17, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, - 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x4c, - 0x49, 0x45, 0x44, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x32, 0x9b, 0x0a, - 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5d, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x12, 0x26, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x11, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x1a, 0x2d, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x5d, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x1b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x1a, - 0x2b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, - 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, - 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, - 0x2b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0d, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x29, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x63, 0x6b, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x50, 0x61, 0x72, 0x74, 0x69, - 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x2a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x6b, 0x22, 0x00, 0x12, 0x5e, - 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, - 0x61, 0x6e, 0x74, 0x12, 0x2d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x6b, 0x22, 0x00, 0x12, 0x65, - 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x28, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x71, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x28, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x09, 0x4c, - 0x69, 0x73, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x26, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x27, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x52, 0x5a, 0x50, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x67, 0x6e, 0x74, 0x63, 0x79, - 0x2f, 0x73, 0x6c, 0x69, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2d, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x76, 0x31, - 0x3b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x76, 0x31, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) +const file_controlplane_v1_controlplane_proto_rawDesc = "" + + "\n" + + "\"controlplane/v1/controlplane.proto\x12\x15controlplane.proto.v1\x1a\x1econtroller/v1/controller.proto\"\x8e\x01\n" + + "\x14ConfigurationCommand\x12^\n" + + "\x15configuration_command\x18\x01 \x01(\v2).controller.proto.v1.ConfigurationCommandR\x14configurationCommand\x12\x16\n" + + "\x06nodeId\x18\x02 \x01(\tR\x06nodeId\"\x16\n" + + "\x04Node\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\"\x11\n" + + "\x0fNodeListRequest\"\xa0\x01\n" + + "\tNodeEntry\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12H\n" + + "\vconnections\x18\x02 \x03(\v2&.controller.proto.v1.ConnectionDetailsR\vconnections\x129\n" + + "\x06status\x18\x04 \x01(\x0e2!.controlplane.proto.v1.NodeStatusR\x06status\"N\n" + + "\x10NodeListResponse\x12:\n" + + "\aentries\x18\x01 \x03(\v2 .controlplane.proto.v1.NodeEntryR\aentries\"\xd1\x01\n" + + "\x0fAddRouteRequest\x12?\n" + + "\n" + + "connection\x18\x01 \x01(\v2\x1f.controller.proto.v1.ConnectionR\n" + + "connection\x12E\n" + + "\fsubscription\x18\x02 \x01(\v2!.controller.proto.v1.SubscriptionR\fsubscription\x12\x16\n" + + "\x06nodeId\x18\x03 \x01(\tR\x06nodeId\x12\x1e\n" + + "\n" + + "destNodeId\x18\x04 \x01(\tR\n" + + "destNodeId\"F\n" + + "\x10AddRouteResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + + "\arouteId\x18\x02 \x01(\tR\arouteId\"\x93\x01\n" + + "\x12DeleteRouteRequest\x12E\n" + + "\fsubscription\x18\x01 \x01(\v2!.controller.proto.v1.SubscriptionR\fsubscription\x12\x16\n" + + "\x06nodeId\x18\x02 \x01(\tR\x06nodeId\x12\x1e\n" + + "\n" + + "destNodeId\x18\x03 \x01(\tR\n" + + "destNodeId\"/\n" + + "\x13DeleteRouteResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\"6\n" + + "\x14CreateChannelRequest\x12\x1e\n" + + "\n" + + "moderators\x18\x01 \x03(\tR\n" + + "moderators\":\n" + + "\x15CreateChannelResponse\x12!\n" + + "\fchannel_name\x18\x01 \x01(\tR\vchannelName\"P\n" + + "\x10RouteListRequest\x12\x1c\n" + + "\tsrcNodeId\x18\x01 \x01(\tR\tsrcNodeId\x12\x1e\n" + + "\n" + + "destNodeId\x18\x02 \x01(\tR\n" + + "destNodeId\"\x80\x04\n" + + "\n" + + "RouteEntry\x12\x0e\n" + + "\x02id\x18\x01 \x01(\x04R\x02id\x12$\n" + + "\x0esource_node_id\x18\x02 \x01(\tR\fsourceNodeId\x12 \n" + + "\fdest_node_id\x18\x03 \x01(\tR\n" + + "destNodeId\x12#\n" + + "\rdest_endpoint\x18\x04 \x01(\tR\fdestEndpoint\x12(\n" + + "\x10conn_config_data\x18\x05 \x01(\tR\x0econnConfigData\x12\x1f\n" + + "\vcomponent_0\x18\x06 \x01(\tR\n" + + "component0\x12\x1f\n" + + "\vcomponent_1\x18\a \x01(\tR\n" + + "component1\x12\x1f\n" + + "\vcomponent_2\x18\b \x01(\tR\n" + + "component2\x12&\n" + + "\fcomponent_id\x18\t \x01(\x04H\x00R\vcomponentId\x88\x01\x01\x12:\n" + + "\x06status\x18\n" + + " \x01(\x0e2\".controlplane.proto.v1.RouteStatusR\x06status\x12\x1d\n" + + "\n" + + "status_msg\x18\v \x01(\tR\tstatusMsg\x12\x18\n" + + "\adeleted\x18\f \x01(\bR\adeleted\x12!\n" + + "\flast_updated\x18\r \x01(\x03R\vlastUpdated\x12\x17\n" + + "\alink_id\x18\x0e \x01(\tR\x06linkIdB\x0f\n" + + "\r_component_id\"N\n" + + "\x11RouteListResponse\x129\n" + + "\x06routes\x18\x01 \x03(\v2!.controlplane.proto.v1.RouteEntryR\x06routes\"O\n" + + "\x0fLinkListRequest\x12\x1c\n" + + "\tsrcNodeId\x18\x01 \x01(\tR\tsrcNodeId\x12\x1e\n" + + "\n" + + "destNodeId\x18\x02 \x01(\tR\n" + + "destNodeId\"\xe2\x02\n" + + "\tLinkEntry\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x17\n" + + "\alink_id\x18\x02 \x01(\tR\x06linkId\x12$\n" + + "\x0esource_node_id\x18\x03 \x01(\tR\fsourceNodeId\x12 \n" + + "\fdest_node_id\x18\x04 \x01(\tR\n" + + "destNodeId\x12#\n" + + "\rdest_endpoint\x18\x05 \x01(\tR\fdestEndpoint\x12(\n" + + "\x10conn_config_data\x18\x06 \x01(\tR\x0econnConfigData\x129\n" + + "\x06status\x18\a \x01(\x0e2!.controlplane.proto.v1.LinkStatusR\x06status\x12\x1d\n" + + "\n" + + "status_msg\x18\b \x01(\tR\tstatusMsg\x12\x18\n" + + "\adeleted\x18\t \x01(\bR\adeleted\x12!\n" + + "\flast_updated\x18\n" + + " \x01(\x03R\vlastUpdated\"J\n" + + "\x10LinkListResponse\x126\n" + + "\x05links\x18\x01 \x03(\v2 .controlplane.proto.v1.LinkEntryR\x05links*K\n" + + "\n" + + "NodeStatus\x12\x1b\n" + + "\x17NODE_STATUS_UNSPECIFIED\x10\x00\x12\r\n" + + "\tCONNECTED\x10\x01\x12\x11\n" + + "\rNOT_CONNECTED\x10\x02*\x90\x01\n" + + "\vRouteStatus\x12\x1c\n" + + "\x18ROUTE_STATUS_UNSPECIFIED\x10\x00\x12\x18\n" + + "\x14ROUTE_STATUS_APPLIED\x10\x01\x12\x17\n" + + "\x13ROUTE_STATUS_FAILED\x10\x02\x12\x16\n" + + "\x12ROUTE_STATUS_STALE\x10\x03\x12\x18\n" + + "\x14ROUTE_STATUS_PENDING\x10\x04*s\n" + + "\n" + + "LinkStatus\x12\x1b\n" + + "\x17LINK_STATUS_UNSPECIFIED\x10\x00\x12\x17\n" + + "\x13LINK_STATUS_PENDING\x10\x01\x12\x17\n" + + "\x13LINK_STATUS_APPLIED\x10\x02\x12\x16\n" + + "\x12LINK_STATUS_FAILED\x10\x032\x9b\n" + + "\n" + + "\x13ControlPlaneService\x12]\n" + + "\bAddRoute\x12&.controlplane.proto.v1.AddRouteRequest\x1a'.controlplane.proto.v1.AddRouteResponse\"\x00\x12f\n" + + "\vDeleteRoute\x12).controlplane.proto.v1.DeleteRouteRequest\x1a*.controlplane.proto.v1.DeleteRouteResponse\"\x00\x12a\n" + + "\x11ListSubscriptions\x12\x1b.controlplane.proto.v1.Node\x1a-.controller.proto.v1.SubscriptionListResponse\"\x00\x12]\n" + + "\x0fListConnections\x12\x1b.controlplane.proto.v1.Node\x1a+.controller.proto.v1.ConnectionListResponse\"\x00\x12^\n" + + "\tListNodes\x12&.controlplane.proto.v1.NodeListRequest\x1a'.controlplane.proto.v1.NodeListResponse\"\x00\x12l\n" + + "\rCreateChannel\x12+.controlplane.proto.v1.CreateChannelRequest\x1a,.controlplane.proto.v1.CreateChannelResponse\"\x00\x12V\n" + + "\rDeleteChannel\x12).controller.proto.v1.DeleteChannelRequest\x1a\x18.controller.proto.v1.Ack\"\x00\x12X\n" + + "\x0eAddParticipant\x12*.controller.proto.v1.AddParticipantRequest\x1a\x18.controller.proto.v1.Ack\"\x00\x12^\n" + + "\x11DeleteParticipant\x12-.controller.proto.v1.DeleteParticipantRequest\x1a\x18.controller.proto.v1.Ack\"\x00\x12e\n" + + "\fListChannels\x12(.controller.proto.v1.ListChannelsRequest\x1a).controller.proto.v1.ListChannelsResponse\"\x00\x12q\n" + + "\x10ListParticipants\x12,.controller.proto.v1.ListParticipantsRequest\x1a-.controller.proto.v1.ListParticipantsResponse\"\x00\x12a\n" + + "\n" + + "ListRoutes\x12'.controlplane.proto.v1.RouteListRequest\x1a(.controlplane.proto.v1.RouteListResponse\"\x00\x12^\n" + + "\tListLinks\x12&.controlplane.proto.v1.LinkListRequest\x1a'.controlplane.proto.v1.LinkListResponse\"\x00BRZPgithub.com/agntcy/slim/control-plane/common/proto/controlplane/v1;controlplanev1b\x06proto3" var ( file_controlplane_v1_controlplane_proto_rawDescOnce sync.Once diff --git a/control-plane/common/proto/controlplane/v1/controlplane_grpc.pb.go b/control-plane/common/proto/controlplane/v1/controlplane_grpc.pb.go index 1bd39de30..e124f329a 100644 --- a/control-plane/common/proto/controlplane/v1/controlplane_grpc.pb.go +++ b/control-plane/common/proto/controlplane/v1/controlplane_grpc.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.5.1 +// - protoc-gen-go-grpc v1.6.1 // - protoc v5.29.0 // source: controlplane/v1/controlplane.proto @@ -229,43 +229,43 @@ type ControlPlaneServiceServer interface { type UnimplementedControlPlaneServiceServer struct{} func (UnimplementedControlPlaneServiceServer) AddRoute(context.Context, *AddRouteRequest) (*AddRouteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddRoute not implemented") + return nil, status.Error(codes.Unimplemented, "method AddRoute not implemented") } func (UnimplementedControlPlaneServiceServer) DeleteRoute(context.Context, *DeleteRouteRequest) (*DeleteRouteResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteRoute not implemented") + return nil, status.Error(codes.Unimplemented, "method DeleteRoute not implemented") } func (UnimplementedControlPlaneServiceServer) ListSubscriptions(context.Context, *Node) (*v1.SubscriptionListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListSubscriptions not implemented") + return nil, status.Error(codes.Unimplemented, "method ListSubscriptions not implemented") } func (UnimplementedControlPlaneServiceServer) ListConnections(context.Context, *Node) (*v1.ConnectionListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListConnections not implemented") + return nil, status.Error(codes.Unimplemented, "method ListConnections not implemented") } func (UnimplementedControlPlaneServiceServer) ListNodes(context.Context, *NodeListRequest) (*NodeListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListNodes not implemented") + return nil, status.Error(codes.Unimplemented, "method ListNodes not implemented") } func (UnimplementedControlPlaneServiceServer) CreateChannel(context.Context, *CreateChannelRequest) (*CreateChannelResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateChannel not implemented") + return nil, status.Error(codes.Unimplemented, "method CreateChannel not implemented") } func (UnimplementedControlPlaneServiceServer) DeleteChannel(context.Context, *v1.DeleteChannelRequest) (*v1.Ack, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteChannel not implemented") + return nil, status.Error(codes.Unimplemented, "method DeleteChannel not implemented") } func (UnimplementedControlPlaneServiceServer) AddParticipant(context.Context, *v1.AddParticipantRequest) (*v1.Ack, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddParticipant not implemented") + return nil, status.Error(codes.Unimplemented, "method AddParticipant not implemented") } func (UnimplementedControlPlaneServiceServer) DeleteParticipant(context.Context, *v1.DeleteParticipantRequest) (*v1.Ack, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteParticipant not implemented") + return nil, status.Error(codes.Unimplemented, "method DeleteParticipant not implemented") } func (UnimplementedControlPlaneServiceServer) ListChannels(context.Context, *v1.ListChannelsRequest) (*v1.ListChannelsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListChannels not implemented") + return nil, status.Error(codes.Unimplemented, "method ListChannels not implemented") } func (UnimplementedControlPlaneServiceServer) ListParticipants(context.Context, *v1.ListParticipantsRequest) (*v1.ListParticipantsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListParticipants not implemented") + return nil, status.Error(codes.Unimplemented, "method ListParticipants not implemented") } func (UnimplementedControlPlaneServiceServer) ListRoutes(context.Context, *RouteListRequest) (*RouteListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListRoutes not implemented") + return nil, status.Error(codes.Unimplemented, "method ListRoutes not implemented") } func (UnimplementedControlPlaneServiceServer) ListLinks(context.Context, *LinkListRequest) (*LinkListResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListLinks not implemented") + return nil, status.Error(codes.Unimplemented, "method ListLinks not implemented") } func (UnimplementedControlPlaneServiceServer) mustEmbedUnimplementedControlPlaneServiceServer() {} func (UnimplementedControlPlaneServiceServer) testEmbeddedByValue() {} @@ -278,7 +278,7 @@ type UnsafeControlPlaneServiceServer interface { } func RegisterControlPlaneServiceServer(s grpc.ServiceRegistrar, srv ControlPlaneServiceServer) { - // If the following call pancis, it indicates UnimplementedControlPlaneServiceServer was + // If the following call panics, it indicates UnimplementedControlPlaneServiceServer 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. diff --git a/data-plane/Cargo.lock b/data-plane/Cargo.lock index 1f0f11ab1..ad04af08e 100644 --- a/data-plane/Cargo.lock +++ b/data-plane/Cargo.lock @@ -216,6 +216,7 @@ dependencies = [ "semver", "serde", "serde_json", + "stats_alloc", "thiserror 2.0.18", "tokio", "tokio-stream", @@ -3637,6 +3638,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "stats_alloc" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0e04424e733e69714ca1bbb9204c1a57f09f5493439520f9f68c132ad25eec" + [[package]] name = "strsim" version = "0.11.1" diff --git a/data-plane/Cargo.toml b/data-plane/Cargo.toml index c2265b0c8..1a4ee96e7 100644 --- a/data-plane/Cargo.toml +++ b/data-plane/Cargo.toml @@ -119,6 +119,7 @@ serde-pyobject = "0.7" serde_json = "1.0" serde_yaml = "0.9.34" spiffe = { version = "0.12.0", features = ["x509-source", "jwt-source", "jwt-verify-aws-lc-rs"] } +stats_alloc = "0.1.10" tempfile = "3" test-fork = "0.1.3" thiserror = "2.0.9" diff --git a/data-plane/Taskfile.yaml b/data-plane/Taskfile.yaml index 7d4de4f50..48f168649 100644 --- a/data-plane/Taskfile.yaml +++ b/data-plane/Taskfile.yaml @@ -121,6 +121,14 @@ tasks: cmds: - git describe --tags --match "slim-v*" | cut -d 'v' -f 2 + data-plane:bench:process-stream: + desc: "Run process_stream Criterion bench and allocation-counter bench" + cmds: + - cargo bench -p agntcy-slim-datapath --bench process_stream_benchmark {{.ARGS}} + - cargo bench -p agntcy-slim-datapath --bench process_stream_alloc {{.ARGS}} + vars: + ARGS: '{{.ARGS | default ""}}' + data-plane:generate:grpc-json-schema: desc: "Generate the gRPC schema" cmds: diff --git a/data-plane/core/datapath/Cargo.toml b/data-plane/core/datapath/Cargo.toml index 540c60f3e..29264d1bf 100644 --- a/data-plane/core/datapath/Cargo.toml +++ b/data-plane/core/datapath/Cargo.toml @@ -40,9 +40,18 @@ tonic-prost-build = { workspace = true } [dev-dependencies] criterion = { workspace = true } +stats_alloc = { workspace = true } tokio = { workspace = true, features = ["test-util"] } tracing-test = { workspace = true, features = ["no-env-filter"] } [[bench]] name = "pool_benchmark" harness = false + +[[bench]] +name = "process_stream_benchmark" +harness = false + +[[bench]] +name = "process_stream_alloc" +harness = false diff --git a/data-plane/core/datapath/benches/process_stream_alloc.rs b/data-plane/core/datapath/benches/process_stream_alloc.rs new file mode 100644 index 000000000..aa9847c37 --- /dev/null +++ b/data-plane/core/datapath/benches/process_stream_alloc.rs @@ -0,0 +1,53 @@ +// Copyright AGNTCY Contributors (https://github.com/agntcy) +// SPDX-License-Identifier: Apache-2.0 + +//! Allocation counters for one `bench_process_stream` iteration (CP mirror path), using +//! [`stats_alloc`](https://docs.rs/stats_alloc). + +mod process_stream_common; + +use std::alloc::System; + +use stats_alloc::{INSTRUMENTED_SYSTEM, Region, StatsAlloc}; + +#[global_allocator] +static GLOBAL: &StatsAlloc = &INSTRUMENTED_SYSTEM; + +fn main() { + let rt = process_stream_common::runtime(); + rt.block_on(process_stream_common::assert_cp_mirror_rebuild_path()); + + const WARMUP: usize = 3; + for _ in 0..WARMUP { + rt.block_on(process_stream_common::one_iteration_cp_mirror()); + } + + const SAMPLES: usize = 50; + let mut allocation_counts = Vec::with_capacity(SAMPLES); + let mut bytes_allocated = Vec::with_capacity(SAMPLES); + let mut deallocations = Vec::with_capacity(SAMPLES); + for _ in 0..SAMPLES { + let region = Region::new(GLOBAL); + rt.block_on(process_stream_common::one_iteration_cp_mirror()); + let s = region.change(); + allocation_counts.push(s.allocations); + bytes_allocated.push(s.bytes_allocated); + deallocations.push(s.deallocations); + } + + fn summarize(values: &[usize]) -> (usize, usize, f64) { + let min = *values.iter().min().unwrap_or(&0); + let max = *values.iter().max().unwrap_or(&0); + let mean = values.iter().sum::() as f64 / values.len().max(1) as f64; + (min, max, mean) + } + + let (a_min, a_max, a_mean) = summarize(&allocation_counts); + let (b_min, b_max, b_mean) = summarize(&bytes_allocated); + let (d_min, d_max, d_mean) = summarize(&deallocations); + + println!( + "\nprocess_stream_alloc: {} samples (one CP-mirror iteration each)\n allocations: min={} max={} mean={:.1}\n bytes_allocated (gross): min={} max={} mean={:.1}\n deallocations: min={} max={} mean={:.1}", + SAMPLES, a_min, a_max, a_mean, b_min, b_max, b_mean, d_min, d_max, d_mean + ); +} diff --git a/data-plane/core/datapath/benches/process_stream_benchmark.rs b/data-plane/core/datapath/benches/process_stream_benchmark.rs new file mode 100644 index 000000000..87ca8a551 --- /dev/null +++ b/data-plane/core/datapath/benches/process_stream_benchmark.rs @@ -0,0 +1,31 @@ +// Copyright AGNTCY Contributors (https://github.com/agntcy) +// SPDX-License-Identifier: Apache-2.0 + +//! Measures [`MessageProcessor::bench_process_stream`] when remote subscribe/unsubscribe is mirrored +//! to the control plane via [`ProtoMessage::rebuild_header_for_control_plane`] (compact header + +//! `recv_from` = dataplane connection index), with `unwrap_or_else(|| msg.clone())` only as fallback. +//! +//! Setup: `is_local = false`, `from_control_plane = false`, mock CP channel from +//! [`MessageProcessor::bench_set_control_plane_tx`]. +//! +//! For heap allocation counters over the same workload, run +//! `cargo bench -p agntcy-slim-datapath --bench process_stream_alloc` or +//! `task data-plane:bench:process-stream`. + +mod process_stream_common; + +use criterion::{Criterion, black_box, criterion_group, criterion_main}; + +fn bench_process_stream_cp_mirror_rebuild(c: &mut Criterion) { + let rt = process_stream_common::runtime(); + rt.block_on(process_stream_common::assert_cp_mirror_rebuild_path()); + + c.bench_function("process_stream: CP mirror (rebuild_header)", |b| { + b.iter(|| { + rt.block_on(black_box(process_stream_common::one_iteration_cp_mirror())); + }); + }); +} + +criterion_group!(benches, bench_process_stream_cp_mirror_rebuild); +criterion_main!(benches); diff --git a/data-plane/core/datapath/benches/process_stream_common.rs b/data-plane/core/datapath/benches/process_stream_common.rs new file mode 100644 index 000000000..2178c1882 --- /dev/null +++ b/data-plane/core/datapath/benches/process_stream_common.rs @@ -0,0 +1,106 @@ +// Copyright AGNTCY Contributors (https://github.com/agntcy) +// SPDX-License-Identifier: Apache-2.0 + +//! Shared setup for `process_stream` benchmarks (Criterion timing and allocation harness). + +use std::sync::OnceLock; +use std::time::Duration; + +use slim_datapath::api::ProtoMessage; +use slim_datapath::message_processing::MessageProcessor; +use slim_datapath::messages::Name; +use tokio::runtime::Runtime; +use tokio::sync::mpsc; +use tokio_stream::wrappers::ReceiverStream; +use tokio_util::sync::CancellationToken; + +pub fn runtime() -> &'static Runtime { + static RT: OnceLock = OnceLock::new(); + RT.get_or_init(|| Runtime::new().expect("tokio runtime")) +} + +pub fn bench_destination() -> Name { + Name::from_strings(["org", "ns", "bench-dst"]).with_id(2) +} + +/// Inbound subscribe from a remote peer (valid SLIM header so rebuild returns `Some`). +pub fn make_remote_subscribe_for_cp_mirror() -> ProtoMessage { + let source = Name::from_strings(["org", "ns", "bench-src"]).with_id(1); + ProtoMessage::builder() + .source(source) + .destination(bench_destination()) + .subscription_id(42) + .build_subscribe() + .expect("valid subscribe for bench") +} + +pub async fn assert_cp_mirror_rebuild_path() { + let processor = MessageProcessor::new(); + let (cp_tx, mut cp_rx) = mpsc::channel(8); + processor.bench_set_control_plane_tx(cp_tx); + let conn_id = processor.bench_register_remote_connection(); + let (in_tx, in_rx) = mpsc::channel(4); + let cancel = CancellationToken::new(); + let handle = processor + .bench_process_stream( + ReceiverStream::new(in_rx), + conn_id, + None, + cancel.clone(), + false, + false, + ) + .expect("bench_process_stream"); + + let msg = make_remote_subscribe_for_cp_mirror(); + let expected_dst = msg.get_dst(); + in_tx.send(Ok(msg)).await.expect("send inbound"); + let mirrored = cp_rx + .recv() + .await + .expect("control plane should receive message") + .expect("mirror Ok"); + + assert_eq!( + mirrored.get_dst(), + expected_dst, + "mirrored message must carry subscription destination for the control plane" + ); + assert!( + mirrored.get_subscription_id().is_some(), + "mirrored subscribe should carry subscription_id" + ); + + cancel.cancel(); + match tokio::time::timeout(Duration::from_secs(2), handle).await { + Ok(Ok(())) => {} + Ok(Err(e)) => panic!("bench_process_stream task failed: {e}"), + Err(_) => panic!("join timeout"), + } +} + +pub async fn one_iteration_cp_mirror() { + let processor = MessageProcessor::new(); + let (cp_tx, mut cp_rx) = mpsc::channel(8); + processor.bench_set_control_plane_tx(cp_tx); + let conn_id = processor.bench_register_remote_connection(); + let (in_tx, in_rx) = mpsc::channel(4); + let cancel = CancellationToken::new(); + let handle = processor + .bench_process_stream( + ReceiverStream::new(in_rx), + conn_id, + None, + cancel.clone(), + false, + false, + ) + .expect("bench_process_stream"); + + let msg = make_remote_subscribe_for_cp_mirror(); + in_tx.send(Ok(msg)).await.expect("send inbound"); + let _ = cp_rx.recv().await; + cancel.cancel(); + let _join: Result, tokio::time::error::Elapsed> = + tokio::time::timeout(Duration::from_secs(2), handle).await; +} diff --git a/data-plane/core/datapath/src/message_processing.rs b/data-plane/core/datapath/src/message_processing.rs index 2b987f899..9492fee71 100644 --- a/data-plane/core/datapath/src/message_processing.rs +++ b/data-plane/core/datapath/src/message_processing.rs @@ -215,6 +215,24 @@ impl MessageProcessor { *tx_guard = Some(tx); } + /// Test/benchmark hook: installs the sender returned by [`Self::get_tx_control_plane`] so remote + /// `process_stream` loops mirror traffic without a real control-plane registration. + #[doc(hidden)] + pub fn bench_set_control_plane_tx(&self, tx: Sender>) { + self.set_tx_control_plane(tx); + } + + /// Test/benchmark hook: inserts a remote connection (server channel) suitable for driving + /// [`Self::process_stream`] with `is_local = false`. + #[doc(hidden)] + pub fn bench_register_remote_connection(&self) -> u64 { + let (tx, _rx) = mpsc::channel(16); + let connection = Connection::new(ConnectionType::Remote, Channel::Server(tx)); + self.forwarder() + .on_connection_established(connection, None) + .expect("bench remote connection") + } + fn get_tx_control_plane(&self) -> Option>> { let tx_guard = self.internal.tx_control_plane.read(); tx_guard.clone() @@ -1065,9 +1083,11 @@ impl MessageProcessor { match msg.get_type() { PublishType(_) | LinkType(_) | SubscriptionAckType(_) => {/* do nothing */} _ => { - // send subscriptions and unsubscriptions - // to the control plane - let _ = txcp.send(Ok(msg.clone())).await; + // Control plane only needs SLIM header + subscription id for + // subscribe/unsubscribe; avoid cloning metadata / full wire message. + let cp_msg = msg + .rebuild_header_for_control_plane(); + let _ = txcp.send(Ok(cp_msg.unwrap())).await; } } } @@ -1161,6 +1181,27 @@ impl MessageProcessor { Ok(handle) } + /// Benchmark/test wrapper around [`Self::process_stream`]; production code keeps using the private method. + #[doc(hidden)] + pub fn bench_process_stream( + &self, + stream: impl Stream> + Unpin + Send + 'static, + conn_index: u64, + client_config: Option, + cancellation_token: CancellationToken, + is_local: bool, + from_control_plane: bool, + ) -> Result, DataPathError> { + self.process_stream( + stream, + conn_index, + client_config, + cancellation_token, + is_local, + from_control_plane, + ) + } + fn match_for_io_error(err_status: &Status) -> Option<&std::io::Error> { let mut err: &(dyn std::error::Error + 'static) = err_status; diff --git a/data-plane/core/datapath/src/messages/utils.rs b/data-plane/core/datapath/src/messages/utils.rs index 261da97e7..a1262d768 100644 --- a/data-plane/core/datapath/src/messages/utils.rs +++ b/data-plane/core/datapath/src/messages/utils.rs @@ -220,9 +220,22 @@ impl SlimHeader { ) -> Self { let flags = flags.unwrap_or_default(); + // When source and destination are the same `&Name` (same pointer), build one ProtoName + // and clone it. Avoids a second `ProtoName::from` that would re-clone all string fields. + let (source, destination) = + if std::ptr::eq(source as *const Name, destination as *const Name) { + let endpoint = ProtoName::from(source); + (Some(endpoint.clone()), Some(endpoint)) + } else { + ( + Some(ProtoName::from(source)), + Some(ProtoName::from(destination)), + ) + }; + Self { - source: Some(ProtoName::from(source)), - destination: Some(ProtoName::from(destination)), + source, + destination, identity: identity.to_string(), fanout: flags.fanout, recv_from: flags.recv_from, @@ -873,6 +886,30 @@ impl ProtoMessage { } } + /// Compact subscribe/unsubscribe for forwarding remote dataplane traffic to the control plane. + /// + /// Copies destination, subscription id, and sets SLIM header `recv_from` to + /// `remote_connection_id` (the dataplane connection index the message arrived on). Omits other + /// header fields and the metadata map where possible. + /// + /// Returns [`None`] for non-subscribe/unsubscribe types or if the header or destination is missing. + pub fn rebuild_header_for_control_plane(&self) -> Option { + let dst = Name::from(self.try_get_slim_header()?.destination.as_ref()?); + match &self.message_type { + Some(ProtoSubscribeType(s)) => { + let mut sub = ProtoSubscribe::new(&dst, &dst, None, None); + sub.subscription_id = s.subscription_id; + Some(ProtoMessage::new(HashMap::new(), ProtoSubscribeType(sub))) + } + Some(ProtoUnsubscribeType(u)) => { + let mut unsub = ProtoUnsubscribe::new(&dst, &dst, None, None); + unsub.subscription_id = u.subscription_id; + Some(ProtoMessage::new(HashMap::new(), ProtoUnsubscribeType(unsub))) + } + _ => None, + } + } + /// Extracts the command payload from the message. /// /// # Errors From bd81d3373828be27f9c4ec6b1bded0ef45cfea8c Mon Sep 17 00:00:00 2001 From: Mark Marton Date: Wed, 29 Apr 2026 10:27:25 +0200 Subject: [PATCH 2/7] fix: fix linting Signed-off-by: Mark Marton --- data-plane/core/datapath/src/messages/utils.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/data-plane/core/datapath/src/messages/utils.rs b/data-plane/core/datapath/src/messages/utils.rs index a1262d768..02a4ca155 100644 --- a/data-plane/core/datapath/src/messages/utils.rs +++ b/data-plane/core/datapath/src/messages/utils.rs @@ -904,7 +904,10 @@ impl ProtoMessage { Some(ProtoUnsubscribeType(u)) => { let mut unsub = ProtoUnsubscribe::new(&dst, &dst, None, None); unsub.subscription_id = u.subscription_id; - Some(ProtoMessage::new(HashMap::new(), ProtoUnsubscribeType(unsub))) + Some(ProtoMessage::new( + HashMap::new(), + ProtoUnsubscribeType(unsub), + )) } _ => None, } From 5c7383aa2451914c5e652bc9b052587a70dd60b2 Mon Sep 17 00:00:00 2001 From: Mark Marton Date: Wed, 29 Apr 2026 12:32:46 +0200 Subject: [PATCH 3/7] fix: increase test coverage on process_stream Signed-off-by: Mark Marton --- .../core/datapath/src/messages/utils.rs | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) diff --git a/data-plane/core/datapath/src/messages/utils.rs b/data-plane/core/datapath/src/messages/utils.rs index 02a4ca155..bb3ba29cd 100644 --- a/data-plane/core/datapath/src/messages/utils.rs +++ b/data-plane/core/datapath/src/messages/utils.rs @@ -1689,6 +1689,8 @@ impl ProtoMessage { #[cfg(test)] mod tests { + use std::collections::HashMap; + use crate::{api::proto::dataplane::v1::SessionMessageType, messages::encoder::Name}; use super::*; @@ -1836,6 +1838,129 @@ mod tests { ); } + #[test] + fn rebuild_header_for_control_plane_subscribe() { + let source = Name::from_strings(["org", "ns", "app"]).with_id(10); + let dst = Name::from_strings(["org", "ns", "topic"]).with_id(20); + let sub_id = 0xfeed_beef_u64; + let msg = ProtoMessage::builder() + .source(source.clone()) + .destination(dst.clone()) + .subscription_id(sub_id) + .metadata("cp_should_drop", "yes") + .build_subscribe() + .unwrap(); + + let rebuilt = msg.rebuild_header_for_control_plane().expect("rebuilt message"); + assert!(rebuilt.get_metadata_map().is_empty()); + assert!(rebuilt.is_subscribe()); + assert!(!rebuilt.is_unsubscribe()); + assert_eq!(rebuilt.get_subscription_id(), Some(sub_id)); + assert_eq!(rebuilt.get_source(), dst); + assert_eq!(rebuilt.get_dst(), dst); + assert_eq!(msg.get_source(), source); + assert_eq!(msg.get_dst(), dst); + } + + #[test] + fn rebuild_header_for_control_plane_unsubscribe() { + let source = Name::from_strings(["org", "ns", "app"]).with_id(1); + let dst = Name::from_strings(["org", "ns", "chan"]).with_id(2); + let sub_id = 42_u64; + let msg = ProtoMessage::builder() + .source(source) + .destination(dst.clone()) + .subscription_id(sub_id) + .metadata("noise", "data") + .build_unsubscribe() + .unwrap(); + + let rebuilt = msg.rebuild_header_for_control_plane().expect("rebuilt message"); + assert!(rebuilt.get_metadata_map().is_empty()); + assert!(rebuilt.is_unsubscribe()); + assert!(!rebuilt.is_subscribe()); + assert_eq!(rebuilt.get_subscription_id(), Some(sub_id)); + assert_eq!(rebuilt.get_source(), dst); + assert_eq!(rebuilt.get_dst(), dst); + } + + #[test] + fn rebuild_header_for_control_plane_subscribe_zero_subscription_id() { + let dst = Name::from_strings(["a", "b", "c"]); + let msg = ProtoMessage::builder() + .source(dst.clone()) + .destination(dst.clone()) + .subscription_id(0) + .build_subscribe() + .unwrap(); + + let rebuilt = msg.rebuild_header_for_control_plane().unwrap(); + assert_eq!(rebuilt.get_subscription_id(), None); + match &rebuilt.message_type { + Some(ProtoSubscribeType(s)) => assert_eq!(s.subscription_id, 0), + _ => panic!("expected subscribe"), + } + } + + #[test] + fn rebuild_header_for_control_plane_publish_returns_none() { + let msg = ProtoMessage::builder() + .source(Name::from_strings(["o", "n", "s"])) + .destination(Name::from_strings(["o", "n", "d"])) + .application_payload("t", vec![1, 2]) + .build_publish() + .unwrap(); + + assert!(msg.rebuild_header_for_control_plane().is_none()); + } + + #[test] + fn rebuild_header_for_control_plane_link_returns_none() { + let msg = ProtoMessage::builder().build_link_negotiation("lid", "1.0.0", false); + assert!(msg.rebuild_header_for_control_plane().is_none()); + } + + #[test] + fn rebuild_header_for_control_plane_subscription_ack_returns_none() { + let msg = ProtoMessage::builder().build_subscription_ack(9, true, ""); + assert!(msg.rebuild_header_for_control_plane().is_none()); + } + + #[test] + fn rebuild_header_for_control_plane_subscribe_missing_slim_header() { + let msg = ProtoMessage::new( + HashMap::new(), + ProtoSubscribeType(ProtoSubscribe { + header: None, + subscription_id: 1, + }), + ); + assert!(msg.rebuild_header_for_control_plane().is_none()); + } + + #[test] + fn rebuild_header_for_control_plane_subscribe_missing_destination() { + let name = Name::from_strings(["x", "y", "z"]); + let hdr = SlimHeader { + source: Some(ProtoName::from(&name)), + destination: None, + identity: String::new(), + fanout: 1, + recv_from: None, + forward_to: None, + incoming_conn: None, + error: None, + }; + let msg = ProtoMessage::new( + HashMap::new(), + ProtoSubscribeType(ProtoSubscribe { + header: Some(hdr), + subscription_id: 99, + }), + ); + assert!(msg.rebuild_header_for_control_plane().is_none()); + } + #[test] fn test_publish() { let source = Name::from_strings(["org", "ns", "type"]).with_id(1); From 0a242f807375b32458038ea6f891e145eb5f0833 Mon Sep 17 00:00:00 2001 From: Mark Marton Date: Wed, 29 Apr 2026 14:01:03 +0200 Subject: [PATCH 4/7] fix: fix linting Signed-off-by: Mark Marton --- data-plane/core/datapath/src/messages/utils.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/data-plane/core/datapath/src/messages/utils.rs b/data-plane/core/datapath/src/messages/utils.rs index bb3ba29cd..b6af94dcd 100644 --- a/data-plane/core/datapath/src/messages/utils.rs +++ b/data-plane/core/datapath/src/messages/utils.rs @@ -1851,7 +1851,9 @@ mod tests { .build_subscribe() .unwrap(); - let rebuilt = msg.rebuild_header_for_control_plane().expect("rebuilt message"); + let rebuilt = msg + .rebuild_header_for_control_plane() + .expect("rebuilt message"); assert!(rebuilt.get_metadata_map().is_empty()); assert!(rebuilt.is_subscribe()); assert!(!rebuilt.is_unsubscribe()); @@ -1875,7 +1877,9 @@ mod tests { .build_unsubscribe() .unwrap(); - let rebuilt = msg.rebuild_header_for_control_plane().expect("rebuilt message"); + let rebuilt = msg + .rebuild_header_for_control_plane() + .expect("rebuilt message"); assert!(rebuilt.get_metadata_map().is_empty()); assert!(rebuilt.is_unsubscribe()); assert!(!rebuilt.is_subscribe()); From d51969d15b645ea6ec274f7110bfc286cb7aaa89 Mon Sep 17 00:00:00 2001 From: Mark Marton Date: Wed, 29 Apr 2026 15:06:56 +0200 Subject: [PATCH 5/7] fix: refactor unit test Signed-off-by: Mark Marton --- data-plane/core/datapath/src/messages/utils.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/data-plane/core/datapath/src/messages/utils.rs b/data-plane/core/datapath/src/messages/utils.rs index b6af94dcd..23671b0db 100644 --- a/data-plane/core/datapath/src/messages/utils.rs +++ b/data-plane/core/datapath/src/messages/utils.rs @@ -1900,9 +1900,8 @@ mod tests { let rebuilt = msg.rebuild_header_for_control_plane().unwrap(); assert_eq!(rebuilt.get_subscription_id(), None); - match &rebuilt.message_type { - Some(ProtoSubscribeType(s)) => assert_eq!(s.subscription_id, 0), - _ => panic!("expected subscribe"), + if let Some(ProtoSubscribeType(s)) = &rebuilt.message_type { + assert_eq!(s.subscription_id, 0); } } From 96a46fa96c6636005b6a23d8d1031c63cfcb9669 Mon Sep 17 00:00:00 2001 From: Mark Marton Date: Mon, 4 May 2026 16:06:37 +0200 Subject: [PATCH 6/7] fix(data-plane): fix typo Signed-off-by: Mark Marton --- data-plane/core/session/src/receiver_buffer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data-plane/core/session/src/receiver_buffer.rs b/data-plane/core/session/src/receiver_buffer.rs index 162eb7885..e74d78510 100644 --- a/data-plane/core/session/src/receiver_buffer.rs +++ b/data-plane/core/session/src/receiver_buffer.rs @@ -18,7 +18,7 @@ pub(crate) struct ReceiverBuffer { // removed from the front of the buffer and we want to // avoid copies. This pointer keeps track of the valid entries first_entry: usize, - // set of messages definitely lost that cannot be recoverd + // set of messages definitely lost that cannot be recovered // anymore using RTX messages lost_msgs: HashSet, // Buffer of valid messages received Out-of-Order (OOO) From ec0e9604afc9335c154b6d5690a77019705c68d4 Mon Sep 17 00:00:00 2001 From: Mark Marton Date: Thu, 14 May 2026 17:03:52 +0200 Subject: [PATCH 7/7] fix: resolve conflicts Signed-off-by: Mark Marton --- .../datapath/benches/process_stream_common.rs | 9 ++-- .../core/datapath/src/messages/utils.rs | 44 ++++++++----------- 2 files changed, 23 insertions(+), 30 deletions(-) diff --git a/data-plane/core/datapath/benches/process_stream_common.rs b/data-plane/core/datapath/benches/process_stream_common.rs index 2178c1882..c1a77ea95 100644 --- a/data-plane/core/datapath/benches/process_stream_common.rs +++ b/data-plane/core/datapath/benches/process_stream_common.rs @@ -6,9 +6,8 @@ use std::sync::OnceLock; use std::time::Duration; -use slim_datapath::api::ProtoMessage; +use slim_datapath::api::{ProtoMessage, ProtoName}; use slim_datapath::message_processing::MessageProcessor; -use slim_datapath::messages::Name; use tokio::runtime::Runtime; use tokio::sync::mpsc; use tokio_stream::wrappers::ReceiverStream; @@ -19,13 +18,13 @@ pub fn runtime() -> &'static Runtime { RT.get_or_init(|| Runtime::new().expect("tokio runtime")) } -pub fn bench_destination() -> Name { - Name::from_strings(["org", "ns", "bench-dst"]).with_id(2) +pub fn bench_destination() -> ProtoName { + ProtoName::from_strings(["org", "ns", "bench-dst"]).with_id(2) } /// Inbound subscribe from a remote peer (valid SLIM header so rebuild returns `Some`). pub fn make_remote_subscribe_for_cp_mirror() -> ProtoMessage { - let source = Name::from_strings(["org", "ns", "bench-src"]).with_id(1); + let source = ProtoName::from_strings(["org", "ns", "bench-src"]).with_id(1); ProtoMessage::builder() .source(source) .destination(bench_destination()) diff --git a/data-plane/core/datapath/src/messages/utils.rs b/data-plane/core/datapath/src/messages/utils.rs index d8605988d..78d3fef01 100644 --- a/data-plane/core/datapath/src/messages/utils.rs +++ b/data-plane/core/datapath/src/messages/utils.rs @@ -204,18 +204,14 @@ impl SlimHeader { ) -> Self { let flags = flags.unwrap_or_default(); - // When source and destination are the same `&Name` (same pointer), build one ProtoName + // When source and destination are the same `&ProtoName` (same pointer), build one ProtoName // and clone it. Avoids a second `ProtoName::from` that would re-clone all string fields. - let (source, destination) = - if std::ptr::eq(source as *const Name, destination as *const Name) { - let endpoint = ProtoName::from(source); - (Some(endpoint.clone()), Some(endpoint)) - } else { - ( - Some(ProtoName::from(source)), - Some(ProtoName::from(destination)), - ) - }; + let (source, destination) = if std::ptr::eq(&source, &destination) { + let endpoint = source; + (Some(endpoint.clone()), Some(endpoint)) + } else { + (Some(source), Some(destination)) + }; Self { source, @@ -898,15 +894,15 @@ impl ProtoMessage { /// /// Returns [`None`] for non-subscribe/unsubscribe types or if the header or destination is missing. pub fn rebuild_header_for_control_plane(&self) -> Option { - let dst = Name::from(self.try_get_slim_header()?.destination.as_ref()?); + let dst = self.try_get_slim_header()?.destination.clone()?; match &self.message_type { Some(ProtoSubscribeType(s)) => { - let mut sub = ProtoSubscribe::new(&dst, &dst, None, None); + let mut sub = ProtoSubscribe::new(dst.clone(), dst.clone(), None, None); sub.subscription_id = s.subscription_id; Some(ProtoMessage::new(HashMap::new(), ProtoSubscribeType(sub))) } Some(ProtoUnsubscribeType(u)) => { - let mut unsub = ProtoUnsubscribe::new(&dst, &dst, None, None); + let mut unsub = ProtoUnsubscribe::new(dst.clone(), dst.clone(), None, None); unsub.subscription_id = u.subscription_id; Some(ProtoMessage::new( HashMap::new(), @@ -1681,8 +1677,6 @@ impl ProtoMessage { mod tests { use std::collections::HashMap; - use crate::{api::proto::dataplane::v1::SessionMessageType, messages::encoder::Name}; - use super::*; fn test_subscription_template( @@ -1830,8 +1824,8 @@ mod tests { #[test] fn rebuild_header_for_control_plane_subscribe() { - let source = Name::from_strings(["org", "ns", "app"]).with_id(10); - let dst = Name::from_strings(["org", "ns", "topic"]).with_id(20); + let source = ProtoName::from_strings(["org", "ns", "app"]).with_id(10); + let dst = ProtoName::from_strings(["org", "ns", "topic"]).with_id(20); let sub_id = 0xfeed_beef_u64; let msg = ProtoMessage::builder() .source(source.clone()) @@ -1856,8 +1850,8 @@ mod tests { #[test] fn rebuild_header_for_control_plane_unsubscribe() { - let source = Name::from_strings(["org", "ns", "app"]).with_id(1); - let dst = Name::from_strings(["org", "ns", "chan"]).with_id(2); + let source = ProtoName::from_strings(["org", "ns", "app"]).with_id(1); + let dst = ProtoName::from_strings(["org", "ns", "chan"]).with_id(2); let sub_id = 42_u64; let msg = ProtoMessage::builder() .source(source) @@ -1880,7 +1874,7 @@ mod tests { #[test] fn rebuild_header_for_control_plane_subscribe_zero_subscription_id() { - let dst = Name::from_strings(["a", "b", "c"]); + let dst = ProtoName::from_strings(["a", "b", "c"]); let msg = ProtoMessage::builder() .source(dst.clone()) .destination(dst.clone()) @@ -1898,8 +1892,8 @@ mod tests { #[test] fn rebuild_header_for_control_plane_publish_returns_none() { let msg = ProtoMessage::builder() - .source(Name::from_strings(["o", "n", "s"])) - .destination(Name::from_strings(["o", "n", "d"])) + .source(ProtoName::from_strings(["o", "n", "s"])) + .destination(ProtoName::from_strings(["o", "n", "d"])) .application_payload("t", vec![1, 2]) .build_publish() .unwrap(); @@ -1933,9 +1927,9 @@ mod tests { #[test] fn rebuild_header_for_control_plane_subscribe_missing_destination() { - let name = Name::from_strings(["x", "y", "z"]); + let name = ProtoName::from_strings(["x", "y", "z"]); let hdr = SlimHeader { - source: Some(ProtoName::from(&name)), + source: Some(name.clone()), destination: None, identity: String::new(), fanout: 1,