From 32065ec25b66ce8dffbd3978b8177036fa7c1309 Mon Sep 17 00:00:00 2001 From: Chongzhi Deng <57183262+BruceAko@users.noreply.github.com> Date: Wed, 10 Jul 2024 19:51:57 +0800 Subject: [PATCH] feat: add AnnouncePeers proto and fix typo (#343) feat: add AnnouncePeers proto 1. add AnnouncePeers api 2. fix typo of dfdaemon Signed-off-by: BruceAko --- Cargo.lock | 2 +- Cargo.toml | 2 +- pkg/apis/common/v2/common.pb.go | 6 +- pkg/apis/common/v2/common.proto | 6 +- pkg/apis/dfdaemon/v2/dfdaemon.pb.go | 2 +- pkg/apis/dfdaemon/v2/dfdaemon.proto | 2 +- pkg/apis/scheduler/v2/mocks/scheduler_mock.go | 681 +++++---- pkg/apis/scheduler/v2/scheduler.pb.go | 1217 +++++++++-------- .../scheduler/v2/scheduler.pb.validate.go | 147 ++ pkg/apis/scheduler/v2/scheduler.proto | 9 + pkg/apis/scheduler/v2/scheduler_grpc.pb.go | 74 +- proto/common.proto | 6 +- proto/dfdaemon.proto | 2 +- proto/scheduler.proto | 9 + src/common.v2.rs | 6 +- src/descriptor.bin | Bin 94612 -> 95773 bytes src/dfdaemon.v2.rs | 2 +- src/scheduler.v2.rs | 100 ++ 18 files changed, 1394 insertions(+), 879 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 88d95ac..74f96b1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -160,7 +160,7 @@ dependencies = [ [[package]] name = "dragonfly-api" -version = "2.0.132" +version = "2.0.133" dependencies = [ "prost 0.11.9", "prost-types 0.12.6", diff --git a/Cargo.toml b/Cargo.toml index 9034a15..f34d0dc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dragonfly-api" -version = "2.0.132" +version = "2.0.133" authors = ["Gaius "] edition = "2021" license = "Apache-2.0" diff --git a/pkg/apis/common/v2/common.pb.go b/pkg/apis/common/v2/common.pb.go index 712c473..cac481a 100644 --- a/pkg/apis/common/v2/common.pb.go +++ b/pkg/apis/common/v2/common.pb.go @@ -103,8 +103,8 @@ func (SizeScope) EnumDescriptor() ([]byte, []int) { type TaskType int32 const ( - // DFDAEMON is dfdeamon type of task, - // dfdeamon task is a normal p2p task. + // DFDAEMON is dfdaemon type of task, + // dfdaemon task is a normal p2p task. TaskType_DFDAEMON TaskType = 0 // DFCACHE is dfcache type of task, // dfcache task is a cache task, and the task url is fake url. @@ -439,7 +439,7 @@ type CachePeer struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Persistent represents whether the cache peer is persistent. // If the cache peer is persistent, the cache peer will - // not be deleted when dfdamon runs garbage collection. + // not be deleted when dfdaemon runs garbage collection. Persistent bool `protobuf:"varint,2,opt,name=persistent,proto3" json:"persistent,omitempty"` // Peer downloads costs time. Cost *durationpb.Duration `protobuf:"bytes,3,opt,name=cost,proto3" json:"cost,omitempty"` diff --git a/pkg/apis/common/v2/common.proto b/pkg/apis/common/v2/common.proto index e5fe888..dfd0ea6 100644 --- a/pkg/apis/common/v2/common.proto +++ b/pkg/apis/common/v2/common.proto @@ -44,8 +44,8 @@ enum SizeScope { // TaskType represents type of task. enum TaskType { - // DFDAEMON is dfdeamon type of task, - // dfdeamon task is a normal p2p task. + // DFDAEMON is dfdaemon type of task, + // dfdaemon task is a normal p2p task. DFDAEMON = 0; // DFCACHE is dfcache type of task, @@ -138,7 +138,7 @@ message CachePeer { string id = 1 [(validate.rules).string.min_len = 1]; // Persistent represents whether the cache peer is persistent. // If the cache peer is persistent, the cache peer will - // not be deleted when dfdamon runs garbage collection. + // not be deleted when dfdaemon runs garbage collection. bool persistent = 2; // Peer downloads costs time. google.protobuf.Duration cost = 3 [(validate.rules).duration.required = true]; diff --git a/pkg/apis/dfdaemon/v2/dfdaemon.pb.go b/pkg/apis/dfdaemon/v2/dfdaemon.pb.go index 05548f7..07a1580 100644 --- a/pkg/apis/dfdaemon/v2/dfdaemon.pb.go +++ b/pkg/apis/dfdaemon/v2/dfdaemon.pb.go @@ -733,7 +733,7 @@ type DownloadCacheTaskRequest struct { TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` // Persistent represents whether the cache task is persistent. // If the cache task is persistent, the cache peer will - // not be deleted when dfdamon runs garbage collection. + // not be deleted when dfdaemon runs garbage collection. Persistent bool `protobuf:"varint,3,opt,name=persistent,proto3" json:"persistent,omitempty"` // Tag is used to distinguish different cache tasks. Tag *string `protobuf:"bytes,4,opt,name=tag,proto3,oneof" json:"tag,omitempty"` diff --git a/pkg/apis/dfdaemon/v2/dfdaemon.proto b/pkg/apis/dfdaemon/v2/dfdaemon.proto index 5ae1c5c..8f99131 100644 --- a/pkg/apis/dfdaemon/v2/dfdaemon.proto +++ b/pkg/apis/dfdaemon/v2/dfdaemon.proto @@ -133,7 +133,7 @@ message DownloadCacheTaskRequest { string task_id = 2 [(validate.rules).string.min_len = 1]; // Persistent represents whether the cache task is persistent. // If the cache task is persistent, the cache peer will - // not be deleted when dfdamon runs garbage collection. + // not be deleted when dfdaemon runs garbage collection. bool persistent = 3; // Tag is used to distinguish different cache tasks. optional string tag = 4; diff --git a/pkg/apis/scheduler/v2/mocks/scheduler_mock.go b/pkg/apis/scheduler/v2/mocks/scheduler_mock.go index dcdfed7..36dd95c 100644 --- a/pkg/apis/scheduler/v2/mocks/scheduler_mock.go +++ b/pkg/apis/scheduler/v2/mocks/scheduler_mock.go @@ -104,6 +104,26 @@ func (mr *MockSchedulerClientMockRecorder) AnnouncePeer(ctx any, opts ...any) *g return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AnnouncePeer", reflect.TypeOf((*MockSchedulerClient)(nil).AnnouncePeer), varargs...) } +// AnnouncePeers mocks base method. +func (m *MockSchedulerClient) AnnouncePeers(ctx context.Context, opts ...grpc.CallOption) (scheduler.Scheduler_AnnouncePeersClient, error) { + m.ctrl.T.Helper() + varargs := []any{ctx} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "AnnouncePeers", varargs...) + ret0, _ := ret[0].(scheduler.Scheduler_AnnouncePeersClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// AnnouncePeers indicates an expected call of AnnouncePeers. +func (mr *MockSchedulerClientMockRecorder) AnnouncePeers(ctx any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AnnouncePeers", reflect.TypeOf((*MockSchedulerClient)(nil).AnnouncePeers), varargs...) +} + // DeleteCachePeer mocks base method. func (m *MockSchedulerClient) DeleteCachePeer(ctx context.Context, in *scheduler.DeleteCachePeerRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { m.ctrl.T.Helper() @@ -304,24 +324,64 @@ func (mr *MockSchedulerClientMockRecorder) SyncProbes(ctx any, opts ...any) *gom return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SyncProbes", reflect.TypeOf((*MockSchedulerClient)(nil).SyncProbes), varargs...) } -// UploadCacheTask mocks base method. -func (m *MockSchedulerClient) UploadCacheTask(ctx context.Context, opts ...grpc.CallOption) (scheduler.Scheduler_UploadCacheTaskClient, error) { +// UploadCacheTaskFailed mocks base method. +func (m *MockSchedulerClient) UploadCacheTaskFailed(ctx context.Context, in *scheduler.UploadCacheTaskFailedRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { m.ctrl.T.Helper() - varargs := []any{ctx} + varargs := []any{ctx, in} for _, a := range opts { varargs = append(varargs, a) } - ret := m.ctrl.Call(m, "UploadCacheTask", varargs...) - ret0, _ := ret[0].(scheduler.Scheduler_UploadCacheTaskClient) + ret := m.ctrl.Call(m, "UploadCacheTaskFailed", varargs...) + ret0, _ := ret[0].(*emptypb.Empty) ret1, _ := ret[1].(error) return ret0, ret1 } -// UploadCacheTask indicates an expected call of UploadCacheTask. -func (mr *MockSchedulerClientMockRecorder) UploadCacheTask(ctx any, opts ...any) *gomock.Call { +// UploadCacheTaskFailed indicates an expected call of UploadCacheTaskFailed. +func (mr *MockSchedulerClientMockRecorder) UploadCacheTaskFailed(ctx, in any, opts ...any) *gomock.Call { mr.mock.ctrl.T.Helper() - varargs := append([]any{ctx}, opts...) - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadCacheTask", reflect.TypeOf((*MockSchedulerClient)(nil).UploadCacheTask), varargs...) + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadCacheTaskFailed", reflect.TypeOf((*MockSchedulerClient)(nil).UploadCacheTaskFailed), varargs...) +} + +// UploadCacheTaskFinished mocks base method. +func (m *MockSchedulerClient) UploadCacheTaskFinished(ctx context.Context, in *scheduler.UploadCacheTaskFinishedRequest, opts ...grpc.CallOption) (*common.CacheTask, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UploadCacheTaskFinished", varargs...) + ret0, _ := ret[0].(*common.CacheTask) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UploadCacheTaskFinished indicates an expected call of UploadCacheTaskFinished. +func (mr *MockSchedulerClientMockRecorder) UploadCacheTaskFinished(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadCacheTaskFinished", reflect.TypeOf((*MockSchedulerClient)(nil).UploadCacheTaskFinished), varargs...) +} + +// UploadCacheTaskStarted mocks base method. +func (m *MockSchedulerClient) UploadCacheTaskStarted(ctx context.Context, in *scheduler.UploadCacheTaskStartedRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + m.ctrl.T.Helper() + varargs := []any{ctx, in} + for _, a := range opts { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "UploadCacheTaskStarted", varargs...) + ret0, _ := ret[0].(*emptypb.Empty) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UploadCacheTaskStarted indicates an expected call of UploadCacheTaskStarted. +func (mr *MockSchedulerClientMockRecorder) UploadCacheTaskStarted(ctx, in any, opts ...any) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]any{ctx, in}, opts...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadCacheTaskStarted", reflect.TypeOf((*MockSchedulerClient)(nil).UploadCacheTaskStarted), varargs...) } // MockScheduler_AnnouncePeerClient is a mock of Scheduler_AnnouncePeerClient interface. @@ -461,6 +521,143 @@ func (mr *MockScheduler_AnnouncePeerClientMockRecorder) Trailer() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Trailer", reflect.TypeOf((*MockScheduler_AnnouncePeerClient)(nil).Trailer)) } +// MockScheduler_AnnouncePeersClient is a mock of Scheduler_AnnouncePeersClient interface. +type MockScheduler_AnnouncePeersClient struct { + ctrl *gomock.Controller + recorder *MockScheduler_AnnouncePeersClientMockRecorder +} + +// MockScheduler_AnnouncePeersClientMockRecorder is the mock recorder for MockScheduler_AnnouncePeersClient. +type MockScheduler_AnnouncePeersClientMockRecorder struct { + mock *MockScheduler_AnnouncePeersClient +} + +// NewMockScheduler_AnnouncePeersClient creates a new mock instance. +func NewMockScheduler_AnnouncePeersClient(ctrl *gomock.Controller) *MockScheduler_AnnouncePeersClient { + mock := &MockScheduler_AnnouncePeersClient{ctrl: ctrl} + mock.recorder = &MockScheduler_AnnouncePeersClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockScheduler_AnnouncePeersClient) EXPECT() *MockScheduler_AnnouncePeersClientMockRecorder { + return m.recorder +} + +// CloseSend mocks base method. +func (m *MockScheduler_AnnouncePeersClient) CloseSend() error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CloseSend") + ret0, _ := ret[0].(error) + return ret0 +} + +// CloseSend indicates an expected call of CloseSend. +func (mr *MockScheduler_AnnouncePeersClientMockRecorder) CloseSend() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CloseSend", reflect.TypeOf((*MockScheduler_AnnouncePeersClient)(nil).CloseSend)) +} + +// Context mocks base method. +func (m *MockScheduler_AnnouncePeersClient) Context() context.Context { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Context") + ret0, _ := ret[0].(context.Context) + return ret0 +} + +// Context indicates an expected call of Context. +func (mr *MockScheduler_AnnouncePeersClientMockRecorder) Context() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockScheduler_AnnouncePeersClient)(nil).Context)) +} + +// Header mocks base method. +func (m *MockScheduler_AnnouncePeersClient) Header() (metadata.MD, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Header") + ret0, _ := ret[0].(metadata.MD) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Header indicates an expected call of Header. +func (mr *MockScheduler_AnnouncePeersClientMockRecorder) Header() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Header", reflect.TypeOf((*MockScheduler_AnnouncePeersClient)(nil).Header)) +} + +// Recv mocks base method. +func (m *MockScheduler_AnnouncePeersClient) Recv() (*emptypb.Empty, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Recv") + ret0, _ := ret[0].(*emptypb.Empty) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Recv indicates an expected call of Recv. +func (mr *MockScheduler_AnnouncePeersClientMockRecorder) Recv() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Recv", reflect.TypeOf((*MockScheduler_AnnouncePeersClient)(nil).Recv)) +} + +// RecvMsg mocks base method. +func (m_2 *MockScheduler_AnnouncePeersClient) RecvMsg(m any) error { + m_2.ctrl.T.Helper() + ret := m_2.ctrl.Call(m_2, "RecvMsg", m) + ret0, _ := ret[0].(error) + return ret0 +} + +// RecvMsg indicates an expected call of RecvMsg. +func (mr *MockScheduler_AnnouncePeersClientMockRecorder) RecvMsg(m any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockScheduler_AnnouncePeersClient)(nil).RecvMsg), m) +} + +// Send mocks base method. +func (m *MockScheduler_AnnouncePeersClient) Send(arg0 *scheduler.AnnouncePeersRequest) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Send", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// Send indicates an expected call of Send. +func (mr *MockScheduler_AnnouncePeersClientMockRecorder) Send(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockScheduler_AnnouncePeersClient)(nil).Send), arg0) +} + +// SendMsg mocks base method. +func (m_2 *MockScheduler_AnnouncePeersClient) SendMsg(m any) error { + m_2.ctrl.T.Helper() + ret := m_2.ctrl.Call(m_2, "SendMsg", m) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendMsg indicates an expected call of SendMsg. +func (mr *MockScheduler_AnnouncePeersClientMockRecorder) SendMsg(m any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockScheduler_AnnouncePeersClient)(nil).SendMsg), m) +} + +// Trailer mocks base method. +func (m *MockScheduler_AnnouncePeersClient) Trailer() metadata.MD { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Trailer") + ret0, _ := ret[0].(metadata.MD) + return ret0 +} + +// Trailer indicates an expected call of Trailer. +func (mr *MockScheduler_AnnouncePeersClientMockRecorder) Trailer() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Trailer", reflect.TypeOf((*MockScheduler_AnnouncePeersClient)(nil).Trailer)) +} + // MockScheduler_SyncProbesClient is a mock of Scheduler_SyncProbesClient interface. type MockScheduler_SyncProbesClient struct { ctrl *gomock.Controller @@ -735,143 +932,6 @@ func (mr *MockScheduler_AnnounceCachePeerClientMockRecorder) Trailer() *gomock.C return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Trailer", reflect.TypeOf((*MockScheduler_AnnounceCachePeerClient)(nil).Trailer)) } -// MockScheduler_UploadCacheTaskClient is a mock of Scheduler_UploadCacheTaskClient interface. -type MockScheduler_UploadCacheTaskClient struct { - ctrl *gomock.Controller - recorder *MockScheduler_UploadCacheTaskClientMockRecorder -} - -// MockScheduler_UploadCacheTaskClientMockRecorder is the mock recorder for MockScheduler_UploadCacheTaskClient. -type MockScheduler_UploadCacheTaskClientMockRecorder struct { - mock *MockScheduler_UploadCacheTaskClient -} - -// NewMockScheduler_UploadCacheTaskClient creates a new mock instance. -func NewMockScheduler_UploadCacheTaskClient(ctrl *gomock.Controller) *MockScheduler_UploadCacheTaskClient { - mock := &MockScheduler_UploadCacheTaskClient{ctrl: ctrl} - mock.recorder = &MockScheduler_UploadCacheTaskClientMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *MockScheduler_UploadCacheTaskClient) EXPECT() *MockScheduler_UploadCacheTaskClientMockRecorder { - return m.recorder -} - -// CloseAndRecv mocks base method. -func (m *MockScheduler_UploadCacheTaskClient) CloseAndRecv() (*common.CacheTask, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CloseAndRecv") - ret0, _ := ret[0].(*common.CacheTask) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// CloseAndRecv indicates an expected call of CloseAndRecv. -func (mr *MockScheduler_UploadCacheTaskClientMockRecorder) CloseAndRecv() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CloseAndRecv", reflect.TypeOf((*MockScheduler_UploadCacheTaskClient)(nil).CloseAndRecv)) -} - -// CloseSend mocks base method. -func (m *MockScheduler_UploadCacheTaskClient) CloseSend() error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CloseSend") - ret0, _ := ret[0].(error) - return ret0 -} - -// CloseSend indicates an expected call of CloseSend. -func (mr *MockScheduler_UploadCacheTaskClientMockRecorder) CloseSend() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CloseSend", reflect.TypeOf((*MockScheduler_UploadCacheTaskClient)(nil).CloseSend)) -} - -// Context mocks base method. -func (m *MockScheduler_UploadCacheTaskClient) Context() context.Context { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Context") - ret0, _ := ret[0].(context.Context) - return ret0 -} - -// Context indicates an expected call of Context. -func (mr *MockScheduler_UploadCacheTaskClientMockRecorder) Context() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockScheduler_UploadCacheTaskClient)(nil).Context)) -} - -// Header mocks base method. -func (m *MockScheduler_UploadCacheTaskClient) Header() (metadata.MD, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Header") - ret0, _ := ret[0].(metadata.MD) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// Header indicates an expected call of Header. -func (mr *MockScheduler_UploadCacheTaskClientMockRecorder) Header() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Header", reflect.TypeOf((*MockScheduler_UploadCacheTaskClient)(nil).Header)) -} - -// RecvMsg mocks base method. -func (m_2 *MockScheduler_UploadCacheTaskClient) RecvMsg(m any) error { - m_2.ctrl.T.Helper() - ret := m_2.ctrl.Call(m_2, "RecvMsg", m) - ret0, _ := ret[0].(error) - return ret0 -} - -// RecvMsg indicates an expected call of RecvMsg. -func (mr *MockScheduler_UploadCacheTaskClientMockRecorder) RecvMsg(m any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockScheduler_UploadCacheTaskClient)(nil).RecvMsg), m) -} - -// Send mocks base method. -func (m *MockScheduler_UploadCacheTaskClient) Send(arg0 *scheduler.UploadCacheTaskRequest) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Send", arg0) - ret0, _ := ret[0].(error) - return ret0 -} - -// Send indicates an expected call of Send. -func (mr *MockScheduler_UploadCacheTaskClientMockRecorder) Send(arg0 any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockScheduler_UploadCacheTaskClient)(nil).Send), arg0) -} - -// SendMsg mocks base method. -func (m_2 *MockScheduler_UploadCacheTaskClient) SendMsg(m any) error { - m_2.ctrl.T.Helper() - ret := m_2.ctrl.Call(m_2, "SendMsg", m) - ret0, _ := ret[0].(error) - return ret0 -} - -// SendMsg indicates an expected call of SendMsg. -func (mr *MockScheduler_UploadCacheTaskClientMockRecorder) SendMsg(m any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockScheduler_UploadCacheTaskClient)(nil).SendMsg), m) -} - -// Trailer mocks base method. -func (m *MockScheduler_UploadCacheTaskClient) Trailer() metadata.MD { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Trailer") - ret0, _ := ret[0].(metadata.MD) - return ret0 -} - -// Trailer indicates an expected call of Trailer. -func (mr *MockScheduler_UploadCacheTaskClientMockRecorder) Trailer() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Trailer", reflect.TypeOf((*MockScheduler_UploadCacheTaskClient)(nil).Trailer)) -} - // MockSchedulerServer is a mock of SchedulerServer interface. type MockSchedulerServer struct { ctrl *gomock.Controller @@ -938,6 +998,20 @@ func (mr *MockSchedulerServerMockRecorder) AnnouncePeer(arg0 any) *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AnnouncePeer", reflect.TypeOf((*MockSchedulerServer)(nil).AnnouncePeer), arg0) } +// AnnouncePeers mocks base method. +func (m *MockSchedulerServer) AnnouncePeers(arg0 scheduler.Scheduler_AnnouncePeersServer) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AnnouncePeers", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// AnnouncePeers indicates an expected call of AnnouncePeers. +func (mr *MockSchedulerServerMockRecorder) AnnouncePeers(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AnnouncePeers", reflect.TypeOf((*MockSchedulerServer)(nil).AnnouncePeers), arg0) +} + // DeleteCachePeer mocks base method. func (m *MockSchedulerServer) DeleteCachePeer(arg0 context.Context, arg1 *scheduler.DeleteCachePeerRequest) (*emptypb.Empty, error) { m.ctrl.T.Helper() @@ -1087,18 +1161,49 @@ func (mr *MockSchedulerServerMockRecorder) SyncProbes(arg0 any) *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SyncProbes", reflect.TypeOf((*MockSchedulerServer)(nil).SyncProbes), arg0) } -// UploadCacheTask mocks base method. -func (m *MockSchedulerServer) UploadCacheTask(arg0 scheduler.Scheduler_UploadCacheTaskServer) error { +// UploadCacheTaskFailed mocks base method. +func (m *MockSchedulerServer) UploadCacheTaskFailed(arg0 context.Context, arg1 *scheduler.UploadCacheTaskFailedRequest) (*emptypb.Empty, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UploadCacheTask", arg0) - ret0, _ := ret[0].(error) - return ret0 + ret := m.ctrl.Call(m, "UploadCacheTaskFailed", arg0, arg1) + ret0, _ := ret[0].(*emptypb.Empty) + ret1, _ := ret[1].(error) + return ret0, ret1 } -// UploadCacheTask indicates an expected call of UploadCacheTask. -func (mr *MockSchedulerServerMockRecorder) UploadCacheTask(arg0 any) *gomock.Call { +// UploadCacheTaskFailed indicates an expected call of UploadCacheTaskFailed. +func (mr *MockSchedulerServerMockRecorder) UploadCacheTaskFailed(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadCacheTask", reflect.TypeOf((*MockSchedulerServer)(nil).UploadCacheTask), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadCacheTaskFailed", reflect.TypeOf((*MockSchedulerServer)(nil).UploadCacheTaskFailed), arg0, arg1) +} + +// UploadCacheTaskFinished mocks base method. +func (m *MockSchedulerServer) UploadCacheTaskFinished(arg0 context.Context, arg1 *scheduler.UploadCacheTaskFinishedRequest) (*common.CacheTask, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UploadCacheTaskFinished", arg0, arg1) + ret0, _ := ret[0].(*common.CacheTask) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UploadCacheTaskFinished indicates an expected call of UploadCacheTaskFinished. +func (mr *MockSchedulerServerMockRecorder) UploadCacheTaskFinished(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadCacheTaskFinished", reflect.TypeOf((*MockSchedulerServer)(nil).UploadCacheTaskFinished), arg0, arg1) +} + +// UploadCacheTaskStarted mocks base method. +func (m *MockSchedulerServer) UploadCacheTaskStarted(arg0 context.Context, arg1 *scheduler.UploadCacheTaskStartedRequest) (*emptypb.Empty, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UploadCacheTaskStarted", arg0, arg1) + ret0, _ := ret[0].(*emptypb.Empty) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UploadCacheTaskStarted indicates an expected call of UploadCacheTaskStarted. +func (mr *MockSchedulerServerMockRecorder) UploadCacheTaskStarted(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadCacheTaskStarted", reflect.TypeOf((*MockSchedulerServer)(nil).UploadCacheTaskStarted), arg0, arg1) } // MockUnsafeSchedulerServer is a mock of UnsafeSchedulerServer interface. @@ -1270,6 +1375,140 @@ func (mr *MockScheduler_AnnouncePeerServerMockRecorder) SetTrailer(arg0 any) *go return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockScheduler_AnnouncePeerServer)(nil).SetTrailer), arg0) } +// MockScheduler_AnnouncePeersServer is a mock of Scheduler_AnnouncePeersServer interface. +type MockScheduler_AnnouncePeersServer struct { + ctrl *gomock.Controller + recorder *MockScheduler_AnnouncePeersServerMockRecorder +} + +// MockScheduler_AnnouncePeersServerMockRecorder is the mock recorder for MockScheduler_AnnouncePeersServer. +type MockScheduler_AnnouncePeersServerMockRecorder struct { + mock *MockScheduler_AnnouncePeersServer +} + +// NewMockScheduler_AnnouncePeersServer creates a new mock instance. +func NewMockScheduler_AnnouncePeersServer(ctrl *gomock.Controller) *MockScheduler_AnnouncePeersServer { + mock := &MockScheduler_AnnouncePeersServer{ctrl: ctrl} + mock.recorder = &MockScheduler_AnnouncePeersServerMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockScheduler_AnnouncePeersServer) EXPECT() *MockScheduler_AnnouncePeersServerMockRecorder { + return m.recorder +} + +// Context mocks base method. +func (m *MockScheduler_AnnouncePeersServer) Context() context.Context { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Context") + ret0, _ := ret[0].(context.Context) + return ret0 +} + +// Context indicates an expected call of Context. +func (mr *MockScheduler_AnnouncePeersServerMockRecorder) Context() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockScheduler_AnnouncePeersServer)(nil).Context)) +} + +// Recv mocks base method. +func (m *MockScheduler_AnnouncePeersServer) Recv() (*scheduler.AnnouncePeersRequest, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Recv") + ret0, _ := ret[0].(*scheduler.AnnouncePeersRequest) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Recv indicates an expected call of Recv. +func (mr *MockScheduler_AnnouncePeersServerMockRecorder) Recv() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Recv", reflect.TypeOf((*MockScheduler_AnnouncePeersServer)(nil).Recv)) +} + +// RecvMsg mocks base method. +func (m_2 *MockScheduler_AnnouncePeersServer) RecvMsg(m any) error { + m_2.ctrl.T.Helper() + ret := m_2.ctrl.Call(m_2, "RecvMsg", m) + ret0, _ := ret[0].(error) + return ret0 +} + +// RecvMsg indicates an expected call of RecvMsg. +func (mr *MockScheduler_AnnouncePeersServerMockRecorder) RecvMsg(m any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockScheduler_AnnouncePeersServer)(nil).RecvMsg), m) +} + +// Send mocks base method. +func (m *MockScheduler_AnnouncePeersServer) Send(arg0 *emptypb.Empty) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "Send", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// Send indicates an expected call of Send. +func (mr *MockScheduler_AnnouncePeersServerMockRecorder) Send(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockScheduler_AnnouncePeersServer)(nil).Send), arg0) +} + +// SendHeader mocks base method. +func (m *MockScheduler_AnnouncePeersServer) SendHeader(arg0 metadata.MD) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SendHeader", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendHeader indicates an expected call of SendHeader. +func (mr *MockScheduler_AnnouncePeersServerMockRecorder) SendHeader(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendHeader", reflect.TypeOf((*MockScheduler_AnnouncePeersServer)(nil).SendHeader), arg0) +} + +// SendMsg mocks base method. +func (m_2 *MockScheduler_AnnouncePeersServer) SendMsg(m any) error { + m_2.ctrl.T.Helper() + ret := m_2.ctrl.Call(m_2, "SendMsg", m) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendMsg indicates an expected call of SendMsg. +func (mr *MockScheduler_AnnouncePeersServerMockRecorder) SendMsg(m any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockScheduler_AnnouncePeersServer)(nil).SendMsg), m) +} + +// SetHeader mocks base method. +func (m *MockScheduler_AnnouncePeersServer) SetHeader(arg0 metadata.MD) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SetHeader", arg0) + ret0, _ := ret[0].(error) + return ret0 +} + +// SetHeader indicates an expected call of SetHeader. +func (mr *MockScheduler_AnnouncePeersServerMockRecorder) SetHeader(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetHeader", reflect.TypeOf((*MockScheduler_AnnouncePeersServer)(nil).SetHeader), arg0) +} + +// SetTrailer mocks base method. +func (m *MockScheduler_AnnouncePeersServer) SetTrailer(arg0 metadata.MD) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "SetTrailer", arg0) +} + +// SetTrailer indicates an expected call of SetTrailer. +func (mr *MockScheduler_AnnouncePeersServerMockRecorder) SetTrailer(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockScheduler_AnnouncePeersServer)(nil).SetTrailer), arg0) +} + // MockScheduler_SyncProbesServer is a mock of Scheduler_SyncProbesServer interface. type MockScheduler_SyncProbesServer struct { ctrl *gomock.Controller @@ -1537,137 +1776,3 @@ func (mr *MockScheduler_AnnounceCachePeerServerMockRecorder) SetTrailer(arg0 any mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockScheduler_AnnounceCachePeerServer)(nil).SetTrailer), arg0) } - -// MockScheduler_UploadCacheTaskServer is a mock of Scheduler_UploadCacheTaskServer interface. -type MockScheduler_UploadCacheTaskServer struct { - ctrl *gomock.Controller - recorder *MockScheduler_UploadCacheTaskServerMockRecorder -} - -// MockScheduler_UploadCacheTaskServerMockRecorder is the mock recorder for MockScheduler_UploadCacheTaskServer. -type MockScheduler_UploadCacheTaskServerMockRecorder struct { - mock *MockScheduler_UploadCacheTaskServer -} - -// NewMockScheduler_UploadCacheTaskServer creates a new mock instance. -func NewMockScheduler_UploadCacheTaskServer(ctrl *gomock.Controller) *MockScheduler_UploadCacheTaskServer { - mock := &MockScheduler_UploadCacheTaskServer{ctrl: ctrl} - mock.recorder = &MockScheduler_UploadCacheTaskServerMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *MockScheduler_UploadCacheTaskServer) EXPECT() *MockScheduler_UploadCacheTaskServerMockRecorder { - return m.recorder -} - -// Context mocks base method. -func (m *MockScheduler_UploadCacheTaskServer) Context() context.Context { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Context") - ret0, _ := ret[0].(context.Context) - return ret0 -} - -// Context indicates an expected call of Context. -func (mr *MockScheduler_UploadCacheTaskServerMockRecorder) Context() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockScheduler_UploadCacheTaskServer)(nil).Context)) -} - -// Recv mocks base method. -func (m *MockScheduler_UploadCacheTaskServer) Recv() (*scheduler.UploadCacheTaskRequest, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Recv") - ret0, _ := ret[0].(*scheduler.UploadCacheTaskRequest) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// Recv indicates an expected call of Recv. -func (mr *MockScheduler_UploadCacheTaskServerMockRecorder) Recv() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Recv", reflect.TypeOf((*MockScheduler_UploadCacheTaskServer)(nil).Recv)) -} - -// RecvMsg mocks base method. -func (m_2 *MockScheduler_UploadCacheTaskServer) RecvMsg(m any) error { - m_2.ctrl.T.Helper() - ret := m_2.ctrl.Call(m_2, "RecvMsg", m) - ret0, _ := ret[0].(error) - return ret0 -} - -// RecvMsg indicates an expected call of RecvMsg. -func (mr *MockScheduler_UploadCacheTaskServerMockRecorder) RecvMsg(m any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockScheduler_UploadCacheTaskServer)(nil).RecvMsg), m) -} - -// SendAndClose mocks base method. -func (m *MockScheduler_UploadCacheTaskServer) SendAndClose(arg0 *common.CacheTask) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SendAndClose", arg0) - ret0, _ := ret[0].(error) - return ret0 -} - -// SendAndClose indicates an expected call of SendAndClose. -func (mr *MockScheduler_UploadCacheTaskServerMockRecorder) SendAndClose(arg0 any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendAndClose", reflect.TypeOf((*MockScheduler_UploadCacheTaskServer)(nil).SendAndClose), arg0) -} - -// SendHeader mocks base method. -func (m *MockScheduler_UploadCacheTaskServer) SendHeader(arg0 metadata.MD) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SendHeader", arg0) - ret0, _ := ret[0].(error) - return ret0 -} - -// SendHeader indicates an expected call of SendHeader. -func (mr *MockScheduler_UploadCacheTaskServerMockRecorder) SendHeader(arg0 any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendHeader", reflect.TypeOf((*MockScheduler_UploadCacheTaskServer)(nil).SendHeader), arg0) -} - -// SendMsg mocks base method. -func (m_2 *MockScheduler_UploadCacheTaskServer) SendMsg(m any) error { - m_2.ctrl.T.Helper() - ret := m_2.ctrl.Call(m_2, "SendMsg", m) - ret0, _ := ret[0].(error) - return ret0 -} - -// SendMsg indicates an expected call of SendMsg. -func (mr *MockScheduler_UploadCacheTaskServerMockRecorder) SendMsg(m any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockScheduler_UploadCacheTaskServer)(nil).SendMsg), m) -} - -// SetHeader mocks base method. -func (m *MockScheduler_UploadCacheTaskServer) SetHeader(arg0 metadata.MD) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SetHeader", arg0) - ret0, _ := ret[0].(error) - return ret0 -} - -// SetHeader indicates an expected call of SetHeader. -func (mr *MockScheduler_UploadCacheTaskServerMockRecorder) SetHeader(arg0 any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetHeader", reflect.TypeOf((*MockScheduler_UploadCacheTaskServer)(nil).SetHeader), arg0) -} - -// SetTrailer mocks base method. -func (m *MockScheduler_UploadCacheTaskServer) SetTrailer(arg0 metadata.MD) { - m.ctrl.T.Helper() - m.ctrl.Call(m, "SetTrailer", arg0) -} - -// SetTrailer indicates an expected call of SetTrailer. -func (mr *MockScheduler_UploadCacheTaskServerMockRecorder) SetTrailer(arg0 any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockScheduler_UploadCacheTaskServer)(nil).SetTrailer), arg0) -} diff --git a/pkg/apis/scheduler/v2/scheduler.pb.go b/pkg/apis/scheduler/v2/scheduler.pb.go index c80fd76..a3f15a0 100644 --- a/pkg/apis/scheduler/v2/scheduler.pb.go +++ b/pkg/apis/scheduler/v2/scheduler.pb.go @@ -1310,6 +1310,55 @@ func (x *DeletePeerRequest) GetPeerId() string { return "" } +// AnnouncePeersRequest represents request of AnnouncePeers. +type AnnouncePeersRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Peers information. + Peers []*v2.Peer `protobuf:"bytes,1,rep,name=peers,proto3" json:"peers,omitempty"` +} + +func (x *AnnouncePeersRequest) Reset() { + *x = AnnouncePeersRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnnouncePeersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnnouncePeersRequest) ProtoMessage() {} + +func (x *AnnouncePeersRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnnouncePeersRequest.ProtoReflect.Descriptor instead. +func (*AnnouncePeersRequest) Descriptor() ([]byte, []int) { + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{19} +} + +func (x *AnnouncePeersRequest) GetPeers() []*v2.Peer { + if x != nil { + return x.Peers + } + return nil +} + // StatTaskRequest represents request of StatTask. type StatTaskRequest struct { state protoimpl.MessageState @@ -1325,7 +1374,7 @@ type StatTaskRequest struct { func (x *StatTaskRequest) Reset() { *x = StatTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[19] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1338,7 +1387,7 @@ func (x *StatTaskRequest) String() string { func (*StatTaskRequest) ProtoMessage() {} func (x *StatTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[19] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1351,7 +1400,7 @@ func (x *StatTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StatTaskRequest.ProtoReflect.Descriptor instead. func (*StatTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{19} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{20} } func (x *StatTaskRequest) GetHostId() string { @@ -1383,7 +1432,7 @@ type DeleteTaskRequest struct { func (x *DeleteTaskRequest) Reset() { *x = DeleteTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[20] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1396,7 +1445,7 @@ func (x *DeleteTaskRequest) String() string { func (*DeleteTaskRequest) ProtoMessage() {} func (x *DeleteTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[20] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1409,7 +1458,7 @@ func (x *DeleteTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTaskRequest.ProtoReflect.Descriptor instead. func (*DeleteTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{20} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{21} } func (x *DeleteTaskRequest) GetHostId() string { @@ -1441,7 +1490,7 @@ type AnnounceHostRequest struct { func (x *AnnounceHostRequest) Reset() { *x = AnnounceHostRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[21] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1454,7 +1503,7 @@ func (x *AnnounceHostRequest) String() string { func (*AnnounceHostRequest) ProtoMessage() {} func (x *AnnounceHostRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[21] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1467,7 +1516,7 @@ func (x *AnnounceHostRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AnnounceHostRequest.ProtoReflect.Descriptor instead. func (*AnnounceHostRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{21} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{22} } func (x *AnnounceHostRequest) GetHost() *v2.Host { @@ -1497,7 +1546,7 @@ type DeleteHostRequest struct { func (x *DeleteHostRequest) Reset() { *x = DeleteHostRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[22] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1510,7 +1559,7 @@ func (x *DeleteHostRequest) String() string { func (*DeleteHostRequest) ProtoMessage() {} func (x *DeleteHostRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[22] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1523,7 +1572,7 @@ func (x *DeleteHostRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteHostRequest.ProtoReflect.Descriptor instead. func (*DeleteHostRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{22} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{23} } func (x *DeleteHostRequest) GetHostId() string { @@ -1543,7 +1592,7 @@ type ProbeStartedRequest struct { func (x *ProbeStartedRequest) Reset() { *x = ProbeStartedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[23] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1556,7 +1605,7 @@ func (x *ProbeStartedRequest) String() string { func (*ProbeStartedRequest) ProtoMessage() {} func (x *ProbeStartedRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[23] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1569,7 +1618,7 @@ func (x *ProbeStartedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProbeStartedRequest.ProtoReflect.Descriptor instead. func (*ProbeStartedRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{23} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{24} } // Probe information. @@ -1589,7 +1638,7 @@ type Probe struct { func (x *Probe) Reset() { *x = Probe{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[24] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1602,7 +1651,7 @@ func (x *Probe) String() string { func (*Probe) ProtoMessage() {} func (x *Probe) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[24] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1615,7 +1664,7 @@ func (x *Probe) ProtoReflect() protoreflect.Message { // Deprecated: Use Probe.ProtoReflect.Descriptor instead. func (*Probe) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{24} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{25} } func (x *Probe) GetHost() *v2.Host { @@ -1652,7 +1701,7 @@ type ProbeFinishedRequest struct { func (x *ProbeFinishedRequest) Reset() { *x = ProbeFinishedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[25] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1665,7 +1714,7 @@ func (x *ProbeFinishedRequest) String() string { func (*ProbeFinishedRequest) ProtoMessage() {} func (x *ProbeFinishedRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[25] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1678,7 +1727,7 @@ func (x *ProbeFinishedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProbeFinishedRequest.ProtoReflect.Descriptor instead. func (*ProbeFinishedRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{25} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{26} } func (x *ProbeFinishedRequest) GetProbes() []*Probe { @@ -1703,7 +1752,7 @@ type FailedProbe struct { func (x *FailedProbe) Reset() { *x = FailedProbe{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[26] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1716,7 +1765,7 @@ func (x *FailedProbe) String() string { func (*FailedProbe) ProtoMessage() {} func (x *FailedProbe) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[26] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1729,7 +1778,7 @@ func (x *FailedProbe) ProtoReflect() protoreflect.Message { // Deprecated: Use FailedProbe.ProtoReflect.Descriptor instead. func (*FailedProbe) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{26} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{27} } func (x *FailedProbe) GetHost() *v2.Host { @@ -1759,7 +1808,7 @@ type ProbeFailedRequest struct { func (x *ProbeFailedRequest) Reset() { *x = ProbeFailedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[27] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1772,7 +1821,7 @@ func (x *ProbeFailedRequest) String() string { func (*ProbeFailedRequest) ProtoMessage() {} func (x *ProbeFailedRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[27] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1785,7 +1834,7 @@ func (x *ProbeFailedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProbeFailedRequest.ProtoReflect.Descriptor instead. func (*ProbeFailedRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{27} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{28} } func (x *ProbeFailedRequest) GetProbes() []*FailedProbe { @@ -1814,7 +1863,7 @@ type SyncProbesRequest struct { func (x *SyncProbesRequest) Reset() { *x = SyncProbesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[28] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1827,7 +1876,7 @@ func (x *SyncProbesRequest) String() string { func (*SyncProbesRequest) ProtoMessage() {} func (x *SyncProbesRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[28] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1840,7 +1889,7 @@ func (x *SyncProbesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncProbesRequest.ProtoReflect.Descriptor instead. func (*SyncProbesRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{28} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{29} } func (x *SyncProbesRequest) GetHost() *v2.Host { @@ -1913,7 +1962,7 @@ type SyncProbesResponse struct { func (x *SyncProbesResponse) Reset() { *x = SyncProbesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[29] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1926,7 +1975,7 @@ func (x *SyncProbesResponse) String() string { func (*SyncProbesResponse) ProtoMessage() {} func (x *SyncProbesResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[29] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1939,7 +1988,7 @@ func (x *SyncProbesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncProbesResponse.ProtoReflect.Descriptor instead. func (*SyncProbesResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{29} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{30} } func (x *SyncProbesResponse) GetHosts() []*v2.Host { @@ -1974,7 +2023,7 @@ type RegisterCachePeerRequest struct { func (x *RegisterCachePeerRequest) Reset() { *x = RegisterCachePeerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[30] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1987,7 +2036,7 @@ func (x *RegisterCachePeerRequest) String() string { func (*RegisterCachePeerRequest) ProtoMessage() {} func (x *RegisterCachePeerRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[30] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2000,7 +2049,7 @@ func (x *RegisterCachePeerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RegisterCachePeerRequest.ProtoReflect.Descriptor instead. func (*RegisterCachePeerRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{30} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{31} } func (x *RegisterCachePeerRequest) GetHostId() string { @@ -2062,7 +2111,7 @@ type DownloadCachePeerStartedRequest struct { func (x *DownloadCachePeerStartedRequest) Reset() { *x = DownloadCachePeerStartedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[31] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2075,7 +2124,7 @@ func (x *DownloadCachePeerStartedRequest) String() string { func (*DownloadCachePeerStartedRequest) ProtoMessage() {} func (x *DownloadCachePeerStartedRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[31] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2088,7 +2137,7 @@ func (x *DownloadCachePeerStartedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadCachePeerStartedRequest.ProtoReflect.Descriptor instead. func (*DownloadCachePeerStartedRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{31} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{32} } // RescheduleCachePeerRequest represents reschedule request of AnnounceCachePeerRequest. @@ -2106,7 +2155,7 @@ type RescheduleCachePeerRequest struct { func (x *RescheduleCachePeerRequest) Reset() { *x = RescheduleCachePeerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[32] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2119,7 +2168,7 @@ func (x *RescheduleCachePeerRequest) String() string { func (*RescheduleCachePeerRequest) ProtoMessage() {} func (x *RescheduleCachePeerRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[32] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2132,7 +2181,7 @@ func (x *RescheduleCachePeerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RescheduleCachePeerRequest.ProtoReflect.Descriptor instead. func (*RescheduleCachePeerRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{32} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{33} } func (x *RescheduleCachePeerRequest) GetCandidateParents() []*v2.CachePeer { @@ -2162,7 +2211,7 @@ type DownloadCachePeerFinishedRequest struct { func (x *DownloadCachePeerFinishedRequest) Reset() { *x = DownloadCachePeerFinishedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[33] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2175,7 +2224,7 @@ func (x *DownloadCachePeerFinishedRequest) String() string { func (*DownloadCachePeerFinishedRequest) ProtoMessage() {} func (x *DownloadCachePeerFinishedRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[33] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2188,7 +2237,7 @@ func (x *DownloadCachePeerFinishedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadCachePeerFinishedRequest.ProtoReflect.Descriptor instead. func (*DownloadCachePeerFinishedRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{33} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{34} } func (x *DownloadCachePeerFinishedRequest) GetPieceCount() uint32 { @@ -2211,7 +2260,7 @@ type DownloadCachePeerFailedRequest struct { func (x *DownloadCachePeerFailedRequest) Reset() { *x = DownloadCachePeerFailedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[34] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2224,7 +2273,7 @@ func (x *DownloadCachePeerFailedRequest) String() string { func (*DownloadCachePeerFailedRequest) ProtoMessage() {} func (x *DownloadCachePeerFailedRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[34] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2237,7 +2286,7 @@ func (x *DownloadCachePeerFailedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadCachePeerFailedRequest.ProtoReflect.Descriptor instead. func (*DownloadCachePeerFailedRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{34} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{35} } func (x *DownloadCachePeerFailedRequest) GetDescription() string { @@ -2274,7 +2323,7 @@ type AnnounceCachePeerRequest struct { func (x *AnnounceCachePeerRequest) Reset() { *x = AnnounceCachePeerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[35] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2287,7 +2336,7 @@ func (x *AnnounceCachePeerRequest) String() string { func (*AnnounceCachePeerRequest) ProtoMessage() {} func (x *AnnounceCachePeerRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[35] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2300,7 +2349,7 @@ func (x *AnnounceCachePeerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AnnounceCachePeerRequest.ProtoReflect.Descriptor instead. func (*AnnounceCachePeerRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{35} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{36} } func (x *AnnounceCachePeerRequest) GetHostId() string { @@ -2439,7 +2488,7 @@ type EmptyCacheTaskResponse struct { func (x *EmptyCacheTaskResponse) Reset() { *x = EmptyCacheTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[36] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2452,7 +2501,7 @@ func (x *EmptyCacheTaskResponse) String() string { func (*EmptyCacheTaskResponse) ProtoMessage() {} func (x *EmptyCacheTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[36] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2465,7 +2514,7 @@ func (x *EmptyCacheTaskResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use EmptyCacheTaskResponse.ProtoReflect.Descriptor instead. func (*EmptyCacheTaskResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{36} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{37} } // NormalCacheTaskResponse represents normal cache task response of AnnounceCachePeerResponse. @@ -2481,7 +2530,7 @@ type NormalCacheTaskResponse struct { func (x *NormalCacheTaskResponse) Reset() { *x = NormalCacheTaskResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[37] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2494,7 +2543,7 @@ func (x *NormalCacheTaskResponse) String() string { func (*NormalCacheTaskResponse) ProtoMessage() {} func (x *NormalCacheTaskResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[37] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2507,7 +2556,7 @@ func (x *NormalCacheTaskResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use NormalCacheTaskResponse.ProtoReflect.Descriptor instead. func (*NormalCacheTaskResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{37} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{38} } func (x *NormalCacheTaskResponse) GetCandidateParents() []*v2.CachePeer { @@ -2533,7 +2582,7 @@ type AnnounceCachePeerResponse struct { func (x *AnnounceCachePeerResponse) Reset() { *x = AnnounceCachePeerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[38] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2546,7 +2595,7 @@ func (x *AnnounceCachePeerResponse) String() string { func (*AnnounceCachePeerResponse) ProtoMessage() {} func (x *AnnounceCachePeerResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[38] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2559,7 +2608,7 @@ func (x *AnnounceCachePeerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AnnounceCachePeerResponse.ProtoReflect.Descriptor instead. func (*AnnounceCachePeerResponse) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{38} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{39} } func (m *AnnounceCachePeerResponse) GetResponse() isAnnounceCachePeerResponse_Response { @@ -2616,7 +2665,7 @@ type StatCachePeerRequest struct { func (x *StatCachePeerRequest) Reset() { *x = StatCachePeerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[39] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2629,7 +2678,7 @@ func (x *StatCachePeerRequest) String() string { func (*StatCachePeerRequest) ProtoMessage() {} func (x *StatCachePeerRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[39] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2642,7 +2691,7 @@ func (x *StatCachePeerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StatCachePeerRequest.ProtoReflect.Descriptor instead. func (*StatCachePeerRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{39} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{40} } func (x *StatCachePeerRequest) GetHostId() string { @@ -2683,7 +2732,7 @@ type DeleteCachePeerRequest struct { func (x *DeleteCachePeerRequest) Reset() { *x = DeleteCachePeerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[40] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2696,7 +2745,7 @@ func (x *DeleteCachePeerRequest) String() string { func (*DeleteCachePeerRequest) ProtoMessage() {} func (x *DeleteCachePeerRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[40] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2709,7 +2758,7 @@ func (x *DeleteCachePeerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteCachePeerRequest.ProtoReflect.Descriptor instead. func (*DeleteCachePeerRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{40} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{41} } func (x *DeleteCachePeerRequest) GetHostId() string { @@ -2762,7 +2811,7 @@ type UploadCacheTaskStartedRequest struct { func (x *UploadCacheTaskStartedRequest) Reset() { *x = UploadCacheTaskStartedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[41] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2775,7 +2824,7 @@ func (x *UploadCacheTaskStartedRequest) String() string { func (*UploadCacheTaskStartedRequest) ProtoMessage() {} func (x *UploadCacheTaskStartedRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[41] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2788,7 +2837,7 @@ func (x *UploadCacheTaskStartedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadCacheTaskStartedRequest.ProtoReflect.Descriptor instead. func (*UploadCacheTaskStartedRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{41} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{42} } func (x *UploadCacheTaskStartedRequest) GetHostId() string { @@ -2871,7 +2920,7 @@ type UploadCacheTaskFinishedRequest struct { func (x *UploadCacheTaskFinishedRequest) Reset() { *x = UploadCacheTaskFinishedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[42] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2884,7 +2933,7 @@ func (x *UploadCacheTaskFinishedRequest) String() string { func (*UploadCacheTaskFinishedRequest) ProtoMessage() {} func (x *UploadCacheTaskFinishedRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[42] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2897,7 +2946,7 @@ func (x *UploadCacheTaskFinishedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadCacheTaskFinishedRequest.ProtoReflect.Descriptor instead. func (*UploadCacheTaskFinishedRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{42} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{43} } func (x *UploadCacheTaskFinishedRequest) GetHostId() string { @@ -2940,7 +2989,7 @@ type UploadCacheTaskFailedRequest struct { func (x *UploadCacheTaskFailedRequest) Reset() { *x = UploadCacheTaskFailedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[43] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2953,7 +3002,7 @@ func (x *UploadCacheTaskFailedRequest) String() string { func (*UploadCacheTaskFailedRequest) ProtoMessage() {} func (x *UploadCacheTaskFailedRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[43] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2966,7 +3015,7 @@ func (x *UploadCacheTaskFailedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadCacheTaskFailedRequest.ProtoReflect.Descriptor instead. func (*UploadCacheTaskFailedRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{43} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{44} } func (x *UploadCacheTaskFailedRequest) GetHostId() string { @@ -3012,7 +3061,7 @@ type StatCacheTaskRequest struct { func (x *StatCacheTaskRequest) Reset() { *x = StatCacheTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[44] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3025,7 +3074,7 @@ func (x *StatCacheTaskRequest) String() string { func (*StatCacheTaskRequest) ProtoMessage() {} func (x *StatCacheTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[44] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3038,7 +3087,7 @@ func (x *StatCacheTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StatCacheTaskRequest.ProtoReflect.Descriptor instead. func (*StatCacheTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{44} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{45} } func (x *StatCacheTaskRequest) GetHostId() string { @@ -3070,7 +3119,7 @@ type DeleteCacheTaskRequest struct { func (x *DeleteCacheTaskRequest) Reset() { *x = DeleteCacheTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[45] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3083,7 +3132,7 @@ func (x *DeleteCacheTaskRequest) String() string { func (*DeleteCacheTaskRequest) ProtoMessage() {} func (x *DeleteCacheTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[45] + mi := &file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3096,7 +3145,7 @@ func (x *DeleteCacheTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteCacheTaskRequest.ProtoReflect.Descriptor instead. func (*DeleteCacheTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{45} + return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{46} } func (x *DeleteCacheTaskRequest) GetHostId() string { @@ -3364,377 +3413,387 @@ var file_pkg_apis_scheduler_v2_scheduler_proto_rawDesc = []byte{ 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, - 0x49, 0x64, 0x22, 0x55, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x57, 0x0a, 0x11, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, + 0x49, 0x64, 0x22, 0x47, 0x0a, 0x14, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x05, 0x70, 0x65, + 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, + 0x01, 0x02, 0x08, 0x01, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x22, 0x55, 0x0a, 0x0f, 0x53, + 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, - 0x49, 0x64, 0x22, 0x8d, 0x01, 0x0a, 0x13, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x48, - 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x68, 0x6f, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x08, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x22, 0x35, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, + 0x49, 0x64, 0x22, 0x57, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x50, 0x72, 0x6f, - 0x62, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0xb2, 0x01, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x68, 0x6f, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, - 0x02, 0x10, 0x01, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x72, 0x74, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x08, 0x01, 0x52, 0x03, 0x72, 0x74, 0x74, - 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, 0x02, 0x08, 0x01, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x4d, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x46, 0x69, - 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, - 0x06, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, - 0x62, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x06, 0x70, 0x72, - 0x6f, 0x62, 0x65, 0x73, 0x22, 0x7f, 0x0a, 0x0b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x50, 0x72, + 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, + 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x8d, 0x01, 0x0a, 0x13, + 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6f, + 0x73, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x68, 0x6f, + 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0b, + 0x0a, 0x09, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x35, 0x0a, 0x11, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, + 0x49, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb2, 0x01, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x68, 0x6f, - 0x73, 0x74, 0x12, 0x31, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x73, 0x74, 0x12, 0x35, 0x0a, 0x03, 0x72, 0x74, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, + 0x01, 0x02, 0x08, 0x01, 0x52, 0x03, 0x72, 0x74, 0x74, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xb2, 0x01, + 0x02, 0x08, 0x01, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x4d, + 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x22, 0x7f, 0x0a, + 0x0b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x2d, 0x0a, 0x04, + 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, + 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, + 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x51, + 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x42, + 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x62, 0x65, + 0x73, 0x22, 0xdd, 0x02, 0x0a, 0x11, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x32, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, + 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x57, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x62, + 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x5a, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, + 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, + 0x72, 0x6f, 0x62, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x46, 0x69, 0x6e, 0x69, + 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x14, 0x70, + 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x46, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x70, + 0x72, 0x6f, 0x62, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x42, 0x0e, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x03, 0xf8, 0x42, + 0x01, 0x22, 0x47, 0x0a, 0x12, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x76, 0x32, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x08, + 0x01, 0x28, 0x01, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x22, 0xd0, 0x02, 0x0a, 0x18, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, + 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x03, 0x74, + 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, + 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0c, 0x70, 0x69, 0x65, + 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x28, 0x01, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x28, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, + 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, + 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x21, 0x0a, + 0x1f, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, + 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0xa2, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x41, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, + 0x52, 0x10, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x73, 0x12, 0x31, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x51, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x46, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x06, 0x70, - 0x72, 0x6f, 0x62, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, - 0x52, 0x06, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x22, 0xdd, 0x02, 0x0a, 0x11, 0x53, 0x79, 0x6e, - 0x63, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, - 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x42, 0x08, 0xfa, - 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x57, 0x0a, - 0x15, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x62, - 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, - 0x00, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5a, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, - 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x72, - 0x6f, 0x62, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x54, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, - 0x50, 0x72, 0x6f, 0x62, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x47, 0x0a, 0x12, 0x53, 0x79, 0x6e, 0x63, - 0x50, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, - 0x0a, 0x05, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x42, 0x0a, - 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x08, 0x01, 0x28, 0x01, 0x52, 0x05, 0x68, 0x6f, 0x73, 0x74, - 0x73, 0x22, 0xd0, 0x02, 0x0a, 0x18, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, - 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, - 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, - 0x49, 0x64, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, - 0x12, 0x2a, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x28, 0x01, 0x52, - 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x28, 0x0a, 0x0b, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, - 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x22, 0x21, 0x0a, 0x1f, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x43, 0x0a, 0x20, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, + 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x69, 0x65, + 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, + 0x70, 0x69, 0x65, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x63, 0x0a, 0x1e, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x46, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0xca, 0x07, 0x0a, 0x18, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, + 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, + 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, + 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x67, 0x0a, 0x1b, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, + 0x00, 0x52, 0x18, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x7d, 0x0a, 0x23, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65, + 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa2, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x10, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, - 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x43, 0x0a, 0x20, - 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, - 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x69, 0x65, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x63, 0x0a, 0x1e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, - 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xca, 0x07, 0x0a, 0x18, 0x41, 0x6e, 0x6e, 0x6f, 0x75, - 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x1f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, + 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6d, 0x0a, 0x1d, 0x72, 0x65, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, + 0x65, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, + 0x2e, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x72, + 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x80, 0x01, 0x0a, 0x24, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65, 0x65, + 0x72, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, + 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x20, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x46, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x7a, 0x0a, 0x22, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, + 0x65, 0x65, 0x72, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, + 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x1e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, + 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x73, 0x0a, 0x1f, 0x64, 0x6f, 0x77, 0x6e, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, + 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x69, + 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, + 0x1c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x69, + 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6d, 0x0a, + 0x1d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, + 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, + 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, + 0x52, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x07, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x18, 0x0a, 0x16, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x66, 0x0a, 0x17, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x4b, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, + 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x10, 0x63, 0x61, + 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xdf, + 0x01, 0x0a, 0x19, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x13, + 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, + 0x00, 0x52, 0x11, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x14, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x5f, 0x74, + 0x61, 0x73, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, + 0x32, 0x2e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x12, 0x6e, 0x6f, 0x72, + 0x6d, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, + 0x0f, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x03, 0xf8, 0x42, 0x01, + 0x22, 0x7c, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, + 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, + 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0x7e, + 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, + 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, + 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0xcf, + 0x03, 0x0a, 0x1d, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, + 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, + 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, + 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, + 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x18, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x28, + 0x01, 0x52, 0x16, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01, + 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, + 0x42, 0x04, 0x32, 0x02, 0x28, 0x01, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x12, 0x3d, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0xfa, 0x42, 0x0d, + 0xaa, 0x01, 0x0a, 0x22, 0x04, 0x08, 0x80, 0xf5, 0x24, 0x32, 0x02, 0x08, 0x3c, 0x52, 0x03, 0x74, + 0x74, 0x6c, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, + 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, + 0x5f, 0x74, 0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x22, 0x86, 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x67, 0x0a, 0x1b, 0x72, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, - 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x18, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x7d, 0x0a, 0x23, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, - 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, - 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, - 0x52, 0x1f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, - 0x65, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x6d, 0x0a, 0x1d, 0x72, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, - 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x72, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x80, 0x01, 0x0a, 0x24, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, - 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, - 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, - 0x00, 0x52, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, - 0x50, 0x65, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x7a, 0x0a, 0x22, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, - 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, - 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, - 0x1e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, - 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x73, 0x0a, 0x1f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x69, 0x65, 0x63, - 0x65, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x1c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x6d, 0x0a, 0x1d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, - 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x03, - 0xf8, 0x42, 0x01, 0x22, 0x18, 0x0a, 0x16, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x66, 0x0a, - 0x17, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x64, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, - 0x02, 0x08, 0x01, 0x52, 0x10, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xdf, 0x01, 0x0a, 0x19, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, - 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x13, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x74, 0x61, 0x73, - 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x11, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x14, 0x6e, - 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x48, 0x00, 0x52, 0x12, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0f, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x7c, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x74, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, - 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, - 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, - 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, - 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, - 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, - 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0xcf, 0x03, 0x0a, 0x1d, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, - 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, - 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x41, 0x0a, - 0x18, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x28, 0x01, 0x52, 0x16, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, - 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a, - 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x28, 0x01, 0x52, 0x0b, 0x70, - 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x3d, 0x0a, 0x03, 0x74, 0x74, - 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x10, 0xfa, 0x42, 0x0d, 0xaa, 0x01, 0x0a, 0x22, 0x04, 0x08, 0x80, 0xf5, 0x24, - 0x32, 0x02, 0x08, 0x3c, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x86, 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, + 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0xc7, 0x01, 0x0a, 0x1c, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, - 0x22, 0xc7, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, - 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, - 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, - 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, - 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5a, 0x0a, 0x14, 0x53, 0x74, - 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, - 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, - 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x5c, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, - 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, - 0x73, 0x6b, 0x49, 0x64, 0x32, 0x90, 0x0a, 0x0a, 0x09, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, - 0x65, 0x72, 0x12, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, - 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x3a, 0x0a, - 0x08, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x12, 0x3a, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1d, 0x2e, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x45, 0x0a, 0x0a, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x48, - 0x6f, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, - 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x45, - 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x53, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, - 0x62, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, - 0x76, 0x32, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, - 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x68, 0x0a, 0x11, 0x41, 0x6e, - 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, - 0x26, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, - 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x28, 0x01, 0x30, 0x01, 0x12, 0x49, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, - 0x4f, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, - 0x65, 0x72, 0x12, 0x24, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, - 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x12, 0x5d, 0x0a, 0x16, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, - 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x2b, 0x2e, 0x73, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, + 0x12, 0x31, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, + 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x5a, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, + 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, + 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, + 0x5c, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, + 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, + 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x32, 0xe1, 0x0a, + 0x0a, 0x09, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0c, 0x41, + 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x21, 0x2e, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, + 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, + 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, + 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, + 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, + 0x65, 0x72, 0x12, 0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, + 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4f, 0x0a, 0x0d, 0x41, 0x6e, 0x6e, + 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12, 0x22, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, + 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x28, 0x01, 0x30, 0x01, 0x12, 0x3a, 0x0a, 0x08, 0x53, 0x74, + 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, + 0x32, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, + 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x21, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, + 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, - 0x5d, 0x0a, 0x17, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, - 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x2c, 0x2e, 0x73, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x5b, - 0x0a, 0x15, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x2a, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x0d, 0x53, - 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x2e, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x4f, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x24, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x2f, 0x5a, 0x2d, 0x64, 0x37, 0x79, 0x2e, 0x69, - 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x32, 0x3b, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x53, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x12, 0x1f, 0x2e, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x79, 0x6e, + 0x63, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, + 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x79, + 0x6e, 0x63, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x28, 0x01, 0x30, 0x01, 0x12, 0x68, 0x0a, 0x11, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, + 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, + 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, + 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x49, + 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, + 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, + 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x0f, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x5d, 0x0a, 0x16, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x65, 0x64, 0x12, 0x2b, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x5d, 0x0a, 0x17, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, + 0x73, 0x68, 0x65, 0x64, 0x12, 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x5b, 0x0a, 0x15, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x12, 0x2a, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, + 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, + 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, + 0x12, 0x4f, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, + 0x61, 0x73, 0x6b, 0x12, 0x24, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, + 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, + 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x42, 0x2f, 0x5a, 0x2d, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x32, 0x3b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3749,7 +3808,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP() []byte { return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescData } -var file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes = make([]protoimpl.MessageInfo, 46) +var file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes = make([]protoimpl.MessageInfo, 47) var file_pkg_apis_scheduler_v2_scheduler_proto_goTypes = []interface{}{ (*RegisterPeerRequest)(nil), // 0: scheduler.v2.RegisterPeerRequest (*DownloadPeerStartedRequest)(nil), // 1: scheduler.v2.DownloadPeerStartedRequest @@ -3770,51 +3829,52 @@ var file_pkg_apis_scheduler_v2_scheduler_proto_goTypes = []interface{}{ (*AnnouncePeerResponse)(nil), // 16: scheduler.v2.AnnouncePeerResponse (*StatPeerRequest)(nil), // 17: scheduler.v2.StatPeerRequest (*DeletePeerRequest)(nil), // 18: scheduler.v2.DeletePeerRequest - (*StatTaskRequest)(nil), // 19: scheduler.v2.StatTaskRequest - (*DeleteTaskRequest)(nil), // 20: scheduler.v2.DeleteTaskRequest - (*AnnounceHostRequest)(nil), // 21: scheduler.v2.AnnounceHostRequest - (*DeleteHostRequest)(nil), // 22: scheduler.v2.DeleteHostRequest - (*ProbeStartedRequest)(nil), // 23: scheduler.v2.ProbeStartedRequest - (*Probe)(nil), // 24: scheduler.v2.Probe - (*ProbeFinishedRequest)(nil), // 25: scheduler.v2.ProbeFinishedRequest - (*FailedProbe)(nil), // 26: scheduler.v2.FailedProbe - (*ProbeFailedRequest)(nil), // 27: scheduler.v2.ProbeFailedRequest - (*SyncProbesRequest)(nil), // 28: scheduler.v2.SyncProbesRequest - (*SyncProbesResponse)(nil), // 29: scheduler.v2.SyncProbesResponse - (*RegisterCachePeerRequest)(nil), // 30: scheduler.v2.RegisterCachePeerRequest - (*DownloadCachePeerStartedRequest)(nil), // 31: scheduler.v2.DownloadCachePeerStartedRequest - (*RescheduleCachePeerRequest)(nil), // 32: scheduler.v2.RescheduleCachePeerRequest - (*DownloadCachePeerFinishedRequest)(nil), // 33: scheduler.v2.DownloadCachePeerFinishedRequest - (*DownloadCachePeerFailedRequest)(nil), // 34: scheduler.v2.DownloadCachePeerFailedRequest - (*AnnounceCachePeerRequest)(nil), // 35: scheduler.v2.AnnounceCachePeerRequest - (*EmptyCacheTaskResponse)(nil), // 36: scheduler.v2.EmptyCacheTaskResponse - (*NormalCacheTaskResponse)(nil), // 37: scheduler.v2.NormalCacheTaskResponse - (*AnnounceCachePeerResponse)(nil), // 38: scheduler.v2.AnnounceCachePeerResponse - (*StatCachePeerRequest)(nil), // 39: scheduler.v2.StatCachePeerRequest - (*DeleteCachePeerRequest)(nil), // 40: scheduler.v2.DeleteCachePeerRequest - (*UploadCacheTaskStartedRequest)(nil), // 41: scheduler.v2.UploadCacheTaskStartedRequest - (*UploadCacheTaskFinishedRequest)(nil), // 42: scheduler.v2.UploadCacheTaskFinishedRequest - (*UploadCacheTaskFailedRequest)(nil), // 43: scheduler.v2.UploadCacheTaskFailedRequest - (*StatCacheTaskRequest)(nil), // 44: scheduler.v2.StatCacheTaskRequest - (*DeleteCacheTaskRequest)(nil), // 45: scheduler.v2.DeleteCacheTaskRequest - (*v2.Download)(nil), // 46: common.v2.Download - (*v2.Peer)(nil), // 47: common.v2.Peer - (*v2.Piece)(nil), // 48: common.v2.Piece - (*v21.Backend)(nil), // 49: errordetails.v2.Backend - (*v2.Host)(nil), // 50: common.v2.Host - (*durationpb.Duration)(nil), // 51: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 52: google.protobuf.Timestamp - (*v2.CachePeer)(nil), // 53: common.v2.CachePeer - (*emptypb.Empty)(nil), // 54: google.protobuf.Empty - (*v2.Task)(nil), // 55: common.v2.Task - (*v2.CacheTask)(nil), // 56: common.v2.CacheTask + (*AnnouncePeersRequest)(nil), // 19: scheduler.v2.AnnouncePeersRequest + (*StatTaskRequest)(nil), // 20: scheduler.v2.StatTaskRequest + (*DeleteTaskRequest)(nil), // 21: scheduler.v2.DeleteTaskRequest + (*AnnounceHostRequest)(nil), // 22: scheduler.v2.AnnounceHostRequest + (*DeleteHostRequest)(nil), // 23: scheduler.v2.DeleteHostRequest + (*ProbeStartedRequest)(nil), // 24: scheduler.v2.ProbeStartedRequest + (*Probe)(nil), // 25: scheduler.v2.Probe + (*ProbeFinishedRequest)(nil), // 26: scheduler.v2.ProbeFinishedRequest + (*FailedProbe)(nil), // 27: scheduler.v2.FailedProbe + (*ProbeFailedRequest)(nil), // 28: scheduler.v2.ProbeFailedRequest + (*SyncProbesRequest)(nil), // 29: scheduler.v2.SyncProbesRequest + (*SyncProbesResponse)(nil), // 30: scheduler.v2.SyncProbesResponse + (*RegisterCachePeerRequest)(nil), // 31: scheduler.v2.RegisterCachePeerRequest + (*DownloadCachePeerStartedRequest)(nil), // 32: scheduler.v2.DownloadCachePeerStartedRequest + (*RescheduleCachePeerRequest)(nil), // 33: scheduler.v2.RescheduleCachePeerRequest + (*DownloadCachePeerFinishedRequest)(nil), // 34: scheduler.v2.DownloadCachePeerFinishedRequest + (*DownloadCachePeerFailedRequest)(nil), // 35: scheduler.v2.DownloadCachePeerFailedRequest + (*AnnounceCachePeerRequest)(nil), // 36: scheduler.v2.AnnounceCachePeerRequest + (*EmptyCacheTaskResponse)(nil), // 37: scheduler.v2.EmptyCacheTaskResponse + (*NormalCacheTaskResponse)(nil), // 38: scheduler.v2.NormalCacheTaskResponse + (*AnnounceCachePeerResponse)(nil), // 39: scheduler.v2.AnnounceCachePeerResponse + (*StatCachePeerRequest)(nil), // 40: scheduler.v2.StatCachePeerRequest + (*DeleteCachePeerRequest)(nil), // 41: scheduler.v2.DeleteCachePeerRequest + (*UploadCacheTaskStartedRequest)(nil), // 42: scheduler.v2.UploadCacheTaskStartedRequest + (*UploadCacheTaskFinishedRequest)(nil), // 43: scheduler.v2.UploadCacheTaskFinishedRequest + (*UploadCacheTaskFailedRequest)(nil), // 44: scheduler.v2.UploadCacheTaskFailedRequest + (*StatCacheTaskRequest)(nil), // 45: scheduler.v2.StatCacheTaskRequest + (*DeleteCacheTaskRequest)(nil), // 46: scheduler.v2.DeleteCacheTaskRequest + (*v2.Download)(nil), // 47: common.v2.Download + (*v2.Peer)(nil), // 48: common.v2.Peer + (*v2.Piece)(nil), // 49: common.v2.Piece + (*v21.Backend)(nil), // 50: errordetails.v2.Backend + (*v2.Host)(nil), // 51: common.v2.Host + (*durationpb.Duration)(nil), // 52: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 53: google.protobuf.Timestamp + (*v2.CachePeer)(nil), // 54: common.v2.CachePeer + (*emptypb.Empty)(nil), // 55: google.protobuf.Empty + (*v2.Task)(nil), // 56: common.v2.Task + (*v2.CacheTask)(nil), // 57: common.v2.CacheTask } var file_pkg_apis_scheduler_v2_scheduler_proto_depIdxs = []int32{ - 46, // 0: scheduler.v2.RegisterPeerRequest.download:type_name -> common.v2.Download - 47, // 1: scheduler.v2.ReschedulePeerRequest.candidate_parents:type_name -> common.v2.Peer - 48, // 2: scheduler.v2.DownloadPieceFinishedRequest.piece:type_name -> common.v2.Piece - 48, // 3: scheduler.v2.DownloadPieceBackToSourceFinishedRequest.piece:type_name -> common.v2.Piece - 49, // 4: scheduler.v2.DownloadPieceBackToSourceFailedRequest.backend:type_name -> errordetails.v2.Backend + 47, // 0: scheduler.v2.RegisterPeerRequest.download:type_name -> common.v2.Download + 48, // 1: scheduler.v2.ReschedulePeerRequest.candidate_parents:type_name -> common.v2.Peer + 49, // 2: scheduler.v2.DownloadPieceFinishedRequest.piece:type_name -> common.v2.Piece + 49, // 3: scheduler.v2.DownloadPieceBackToSourceFinishedRequest.piece:type_name -> common.v2.Piece + 50, // 4: scheduler.v2.DownloadPieceBackToSourceFailedRequest.backend:type_name -> errordetails.v2.Backend 0, // 5: scheduler.v2.AnnouncePeerRequest.register_peer_request:type_name -> scheduler.v2.RegisterPeerRequest 1, // 6: scheduler.v2.AnnouncePeerRequest.download_peer_started_request:type_name -> scheduler.v2.DownloadPeerStartedRequest 2, // 7: scheduler.v2.AnnouncePeerRequest.download_peer_back_to_source_started_request:type_name -> scheduler.v2.DownloadPeerBackToSourceStartedRequest @@ -3827,74 +3887,77 @@ var file_pkg_apis_scheduler_v2_scheduler_proto_depIdxs = []int32{ 9, // 14: scheduler.v2.AnnouncePeerRequest.download_piece_back_to_source_finished_request:type_name -> scheduler.v2.DownloadPieceBackToSourceFinishedRequest 10, // 15: scheduler.v2.AnnouncePeerRequest.download_piece_failed_request:type_name -> scheduler.v2.DownloadPieceFailedRequest 11, // 16: scheduler.v2.AnnouncePeerRequest.download_piece_back_to_source_failed_request:type_name -> scheduler.v2.DownloadPieceBackToSourceFailedRequest - 47, // 17: scheduler.v2.NormalTaskResponse.candidate_parents:type_name -> common.v2.Peer + 48, // 17: scheduler.v2.NormalTaskResponse.candidate_parents:type_name -> common.v2.Peer 13, // 18: scheduler.v2.AnnouncePeerResponse.empty_task_response:type_name -> scheduler.v2.EmptyTaskResponse 14, // 19: scheduler.v2.AnnouncePeerResponse.normal_task_response:type_name -> scheduler.v2.NormalTaskResponse 15, // 20: scheduler.v2.AnnouncePeerResponse.need_back_to_source_response:type_name -> scheduler.v2.NeedBackToSourceResponse - 50, // 21: scheduler.v2.AnnounceHostRequest.host:type_name -> common.v2.Host - 51, // 22: scheduler.v2.AnnounceHostRequest.interval:type_name -> google.protobuf.Duration - 50, // 23: scheduler.v2.Probe.host:type_name -> common.v2.Host - 51, // 24: scheduler.v2.Probe.rtt:type_name -> google.protobuf.Duration - 52, // 25: scheduler.v2.Probe.created_at:type_name -> google.protobuf.Timestamp - 24, // 26: scheduler.v2.ProbeFinishedRequest.probes:type_name -> scheduler.v2.Probe - 50, // 27: scheduler.v2.FailedProbe.host:type_name -> common.v2.Host - 26, // 28: scheduler.v2.ProbeFailedRequest.probes:type_name -> scheduler.v2.FailedProbe - 50, // 29: scheduler.v2.SyncProbesRequest.host:type_name -> common.v2.Host - 23, // 30: scheduler.v2.SyncProbesRequest.probe_started_request:type_name -> scheduler.v2.ProbeStartedRequest - 25, // 31: scheduler.v2.SyncProbesRequest.probe_finished_request:type_name -> scheduler.v2.ProbeFinishedRequest - 27, // 32: scheduler.v2.SyncProbesRequest.probe_failed_request:type_name -> scheduler.v2.ProbeFailedRequest - 50, // 33: scheduler.v2.SyncProbesResponse.hosts:type_name -> common.v2.Host - 51, // 34: scheduler.v2.RegisterCachePeerRequest.timeout:type_name -> google.protobuf.Duration - 53, // 35: scheduler.v2.RescheduleCachePeerRequest.candidate_parents:type_name -> common.v2.CachePeer - 30, // 36: scheduler.v2.AnnounceCachePeerRequest.register_cache_peer_request:type_name -> scheduler.v2.RegisterCachePeerRequest - 31, // 37: scheduler.v2.AnnounceCachePeerRequest.download_cache_peer_started_request:type_name -> scheduler.v2.DownloadCachePeerStartedRequest - 32, // 38: scheduler.v2.AnnounceCachePeerRequest.reschedule_cache_peer_request:type_name -> scheduler.v2.RescheduleCachePeerRequest - 33, // 39: scheduler.v2.AnnounceCachePeerRequest.download_cache_peer_finished_request:type_name -> scheduler.v2.DownloadCachePeerFinishedRequest - 34, // 40: scheduler.v2.AnnounceCachePeerRequest.download_cache_peer_failed_request:type_name -> scheduler.v2.DownloadCachePeerFailedRequest - 8, // 41: scheduler.v2.AnnounceCachePeerRequest.download_piece_finished_request:type_name -> scheduler.v2.DownloadPieceFinishedRequest - 10, // 42: scheduler.v2.AnnounceCachePeerRequest.download_piece_failed_request:type_name -> scheduler.v2.DownloadPieceFailedRequest - 53, // 43: scheduler.v2.NormalCacheTaskResponse.candidate_parents:type_name -> common.v2.CachePeer - 36, // 44: scheduler.v2.AnnounceCachePeerResponse.empty_task_response:type_name -> scheduler.v2.EmptyCacheTaskResponse - 37, // 45: scheduler.v2.AnnounceCachePeerResponse.normal_task_response:type_name -> scheduler.v2.NormalCacheTaskResponse - 51, // 46: scheduler.v2.UploadCacheTaskStartedRequest.ttl:type_name -> google.protobuf.Duration - 51, // 47: scheduler.v2.UploadCacheTaskStartedRequest.timeout:type_name -> google.protobuf.Duration - 12, // 48: scheduler.v2.Scheduler.AnnouncePeer:input_type -> scheduler.v2.AnnouncePeerRequest - 17, // 49: scheduler.v2.Scheduler.StatPeer:input_type -> scheduler.v2.StatPeerRequest - 18, // 50: scheduler.v2.Scheduler.DeletePeer:input_type -> scheduler.v2.DeletePeerRequest - 19, // 51: scheduler.v2.Scheduler.StatTask:input_type -> scheduler.v2.StatTaskRequest - 20, // 52: scheduler.v2.Scheduler.DeleteTask:input_type -> scheduler.v2.DeleteTaskRequest - 21, // 53: scheduler.v2.Scheduler.AnnounceHost:input_type -> scheduler.v2.AnnounceHostRequest - 22, // 54: scheduler.v2.Scheduler.DeleteHost:input_type -> scheduler.v2.DeleteHostRequest - 28, // 55: scheduler.v2.Scheduler.SyncProbes:input_type -> scheduler.v2.SyncProbesRequest - 35, // 56: scheduler.v2.Scheduler.AnnounceCachePeer:input_type -> scheduler.v2.AnnounceCachePeerRequest - 39, // 57: scheduler.v2.Scheduler.StatCachePeer:input_type -> scheduler.v2.StatCachePeerRequest - 40, // 58: scheduler.v2.Scheduler.DeleteCachePeer:input_type -> scheduler.v2.DeleteCachePeerRequest - 41, // 59: scheduler.v2.Scheduler.UploadCacheTaskStarted:input_type -> scheduler.v2.UploadCacheTaskStartedRequest - 42, // 60: scheduler.v2.Scheduler.UploadCacheTaskFinished:input_type -> scheduler.v2.UploadCacheTaskFinishedRequest - 43, // 61: scheduler.v2.Scheduler.UploadCacheTaskFailed:input_type -> scheduler.v2.UploadCacheTaskFailedRequest - 44, // 62: scheduler.v2.Scheduler.StatCacheTask:input_type -> scheduler.v2.StatCacheTaskRequest - 45, // 63: scheduler.v2.Scheduler.DeleteCacheTask:input_type -> scheduler.v2.DeleteCacheTaskRequest - 16, // 64: scheduler.v2.Scheduler.AnnouncePeer:output_type -> scheduler.v2.AnnouncePeerResponse - 47, // 65: scheduler.v2.Scheduler.StatPeer:output_type -> common.v2.Peer - 54, // 66: scheduler.v2.Scheduler.DeletePeer:output_type -> google.protobuf.Empty - 55, // 67: scheduler.v2.Scheduler.StatTask:output_type -> common.v2.Task - 54, // 68: scheduler.v2.Scheduler.DeleteTask:output_type -> google.protobuf.Empty - 54, // 69: scheduler.v2.Scheduler.AnnounceHost:output_type -> google.protobuf.Empty - 54, // 70: scheduler.v2.Scheduler.DeleteHost:output_type -> google.protobuf.Empty - 29, // 71: scheduler.v2.Scheduler.SyncProbes:output_type -> scheduler.v2.SyncProbesResponse - 38, // 72: scheduler.v2.Scheduler.AnnounceCachePeer:output_type -> scheduler.v2.AnnounceCachePeerResponse - 53, // 73: scheduler.v2.Scheduler.StatCachePeer:output_type -> common.v2.CachePeer - 54, // 74: scheduler.v2.Scheduler.DeleteCachePeer:output_type -> google.protobuf.Empty - 54, // 75: scheduler.v2.Scheduler.UploadCacheTaskStarted:output_type -> google.protobuf.Empty - 56, // 76: scheduler.v2.Scheduler.UploadCacheTaskFinished:output_type -> common.v2.CacheTask - 54, // 77: scheduler.v2.Scheduler.UploadCacheTaskFailed:output_type -> google.protobuf.Empty - 56, // 78: scheduler.v2.Scheduler.StatCacheTask:output_type -> common.v2.CacheTask - 54, // 79: scheduler.v2.Scheduler.DeleteCacheTask:output_type -> google.protobuf.Empty - 64, // [64:80] is the sub-list for method output_type - 48, // [48:64] is the sub-list for method input_type - 48, // [48:48] is the sub-list for extension type_name - 48, // [48:48] is the sub-list for extension extendee - 0, // [0:48] is the sub-list for field type_name + 48, // 21: scheduler.v2.AnnouncePeersRequest.peers:type_name -> common.v2.Peer + 51, // 22: scheduler.v2.AnnounceHostRequest.host:type_name -> common.v2.Host + 52, // 23: scheduler.v2.AnnounceHostRequest.interval:type_name -> google.protobuf.Duration + 51, // 24: scheduler.v2.Probe.host:type_name -> common.v2.Host + 52, // 25: scheduler.v2.Probe.rtt:type_name -> google.protobuf.Duration + 53, // 26: scheduler.v2.Probe.created_at:type_name -> google.protobuf.Timestamp + 25, // 27: scheduler.v2.ProbeFinishedRequest.probes:type_name -> scheduler.v2.Probe + 51, // 28: scheduler.v2.FailedProbe.host:type_name -> common.v2.Host + 27, // 29: scheduler.v2.ProbeFailedRequest.probes:type_name -> scheduler.v2.FailedProbe + 51, // 30: scheduler.v2.SyncProbesRequest.host:type_name -> common.v2.Host + 24, // 31: scheduler.v2.SyncProbesRequest.probe_started_request:type_name -> scheduler.v2.ProbeStartedRequest + 26, // 32: scheduler.v2.SyncProbesRequest.probe_finished_request:type_name -> scheduler.v2.ProbeFinishedRequest + 28, // 33: scheduler.v2.SyncProbesRequest.probe_failed_request:type_name -> scheduler.v2.ProbeFailedRequest + 51, // 34: scheduler.v2.SyncProbesResponse.hosts:type_name -> common.v2.Host + 52, // 35: scheduler.v2.RegisterCachePeerRequest.timeout:type_name -> google.protobuf.Duration + 54, // 36: scheduler.v2.RescheduleCachePeerRequest.candidate_parents:type_name -> common.v2.CachePeer + 31, // 37: scheduler.v2.AnnounceCachePeerRequest.register_cache_peer_request:type_name -> scheduler.v2.RegisterCachePeerRequest + 32, // 38: scheduler.v2.AnnounceCachePeerRequest.download_cache_peer_started_request:type_name -> scheduler.v2.DownloadCachePeerStartedRequest + 33, // 39: scheduler.v2.AnnounceCachePeerRequest.reschedule_cache_peer_request:type_name -> scheduler.v2.RescheduleCachePeerRequest + 34, // 40: scheduler.v2.AnnounceCachePeerRequest.download_cache_peer_finished_request:type_name -> scheduler.v2.DownloadCachePeerFinishedRequest + 35, // 41: scheduler.v2.AnnounceCachePeerRequest.download_cache_peer_failed_request:type_name -> scheduler.v2.DownloadCachePeerFailedRequest + 8, // 42: scheduler.v2.AnnounceCachePeerRequest.download_piece_finished_request:type_name -> scheduler.v2.DownloadPieceFinishedRequest + 10, // 43: scheduler.v2.AnnounceCachePeerRequest.download_piece_failed_request:type_name -> scheduler.v2.DownloadPieceFailedRequest + 54, // 44: scheduler.v2.NormalCacheTaskResponse.candidate_parents:type_name -> common.v2.CachePeer + 37, // 45: scheduler.v2.AnnounceCachePeerResponse.empty_task_response:type_name -> scheduler.v2.EmptyCacheTaskResponse + 38, // 46: scheduler.v2.AnnounceCachePeerResponse.normal_task_response:type_name -> scheduler.v2.NormalCacheTaskResponse + 52, // 47: scheduler.v2.UploadCacheTaskStartedRequest.ttl:type_name -> google.protobuf.Duration + 52, // 48: scheduler.v2.UploadCacheTaskStartedRequest.timeout:type_name -> google.protobuf.Duration + 12, // 49: scheduler.v2.Scheduler.AnnouncePeer:input_type -> scheduler.v2.AnnouncePeerRequest + 17, // 50: scheduler.v2.Scheduler.StatPeer:input_type -> scheduler.v2.StatPeerRequest + 18, // 51: scheduler.v2.Scheduler.DeletePeer:input_type -> scheduler.v2.DeletePeerRequest + 19, // 52: scheduler.v2.Scheduler.AnnouncePeers:input_type -> scheduler.v2.AnnouncePeersRequest + 20, // 53: scheduler.v2.Scheduler.StatTask:input_type -> scheduler.v2.StatTaskRequest + 21, // 54: scheduler.v2.Scheduler.DeleteTask:input_type -> scheduler.v2.DeleteTaskRequest + 22, // 55: scheduler.v2.Scheduler.AnnounceHost:input_type -> scheduler.v2.AnnounceHostRequest + 23, // 56: scheduler.v2.Scheduler.DeleteHost:input_type -> scheduler.v2.DeleteHostRequest + 29, // 57: scheduler.v2.Scheduler.SyncProbes:input_type -> scheduler.v2.SyncProbesRequest + 36, // 58: scheduler.v2.Scheduler.AnnounceCachePeer:input_type -> scheduler.v2.AnnounceCachePeerRequest + 40, // 59: scheduler.v2.Scheduler.StatCachePeer:input_type -> scheduler.v2.StatCachePeerRequest + 41, // 60: scheduler.v2.Scheduler.DeleteCachePeer:input_type -> scheduler.v2.DeleteCachePeerRequest + 42, // 61: scheduler.v2.Scheduler.UploadCacheTaskStarted:input_type -> scheduler.v2.UploadCacheTaskStartedRequest + 43, // 62: scheduler.v2.Scheduler.UploadCacheTaskFinished:input_type -> scheduler.v2.UploadCacheTaskFinishedRequest + 44, // 63: scheduler.v2.Scheduler.UploadCacheTaskFailed:input_type -> scheduler.v2.UploadCacheTaskFailedRequest + 45, // 64: scheduler.v2.Scheduler.StatCacheTask:input_type -> scheduler.v2.StatCacheTaskRequest + 46, // 65: scheduler.v2.Scheduler.DeleteCacheTask:input_type -> scheduler.v2.DeleteCacheTaskRequest + 16, // 66: scheduler.v2.Scheduler.AnnouncePeer:output_type -> scheduler.v2.AnnouncePeerResponse + 48, // 67: scheduler.v2.Scheduler.StatPeer:output_type -> common.v2.Peer + 55, // 68: scheduler.v2.Scheduler.DeletePeer:output_type -> google.protobuf.Empty + 55, // 69: scheduler.v2.Scheduler.AnnouncePeers:output_type -> google.protobuf.Empty + 56, // 70: scheduler.v2.Scheduler.StatTask:output_type -> common.v2.Task + 55, // 71: scheduler.v2.Scheduler.DeleteTask:output_type -> google.protobuf.Empty + 55, // 72: scheduler.v2.Scheduler.AnnounceHost:output_type -> google.protobuf.Empty + 55, // 73: scheduler.v2.Scheduler.DeleteHost:output_type -> google.protobuf.Empty + 30, // 74: scheduler.v2.Scheduler.SyncProbes:output_type -> scheduler.v2.SyncProbesResponse + 39, // 75: scheduler.v2.Scheduler.AnnounceCachePeer:output_type -> scheduler.v2.AnnounceCachePeerResponse + 54, // 76: scheduler.v2.Scheduler.StatCachePeer:output_type -> common.v2.CachePeer + 55, // 77: scheduler.v2.Scheduler.DeleteCachePeer:output_type -> google.protobuf.Empty + 55, // 78: scheduler.v2.Scheduler.UploadCacheTaskStarted:output_type -> google.protobuf.Empty + 57, // 79: scheduler.v2.Scheduler.UploadCacheTaskFinished:output_type -> common.v2.CacheTask + 55, // 80: scheduler.v2.Scheduler.UploadCacheTaskFailed:output_type -> google.protobuf.Empty + 57, // 81: scheduler.v2.Scheduler.StatCacheTask:output_type -> common.v2.CacheTask + 55, // 82: scheduler.v2.Scheduler.DeleteCacheTask:output_type -> google.protobuf.Empty + 66, // [66:83] is the sub-list for method output_type + 49, // [49:66] is the sub-list for method input_type + 49, // [49:49] is the sub-list for extension type_name + 49, // [49:49] is the sub-list for extension extendee + 0, // [0:49] is the sub-list for field type_name } func init() { file_pkg_apis_scheduler_v2_scheduler_proto_init() } @@ -4132,7 +4195,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatTaskRequest); i { + switch v := v.(*AnnouncePeersRequest); i { case 0: return &v.state case 1: @@ -4144,7 +4207,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteTaskRequest); i { + switch v := v.(*StatTaskRequest); i { case 0: return &v.state case 1: @@ -4156,7 +4219,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnnounceHostRequest); i { + switch v := v.(*DeleteTaskRequest); i { case 0: return &v.state case 1: @@ -4168,7 +4231,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteHostRequest); i { + switch v := v.(*AnnounceHostRequest); i { case 0: return &v.state case 1: @@ -4180,7 +4243,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProbeStartedRequest); i { + switch v := v.(*DeleteHostRequest); i { case 0: return &v.state case 1: @@ -4192,7 +4255,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Probe); i { + switch v := v.(*ProbeStartedRequest); i { case 0: return &v.state case 1: @@ -4204,7 +4267,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProbeFinishedRequest); i { + switch v := v.(*Probe); i { case 0: return &v.state case 1: @@ -4216,7 +4279,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FailedProbe); i { + switch v := v.(*ProbeFinishedRequest); i { case 0: return &v.state case 1: @@ -4228,7 +4291,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProbeFailedRequest); i { + switch v := v.(*FailedProbe); i { case 0: return &v.state case 1: @@ -4240,7 +4303,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncProbesRequest); i { + switch v := v.(*ProbeFailedRequest); i { case 0: return &v.state case 1: @@ -4252,7 +4315,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncProbesResponse); i { + switch v := v.(*SyncProbesRequest); i { case 0: return &v.state case 1: @@ -4264,7 +4327,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RegisterCachePeerRequest); i { + switch v := v.(*SyncProbesResponse); i { case 0: return &v.state case 1: @@ -4276,7 +4339,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadCachePeerStartedRequest); i { + switch v := v.(*RegisterCachePeerRequest); i { case 0: return &v.state case 1: @@ -4288,7 +4351,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RescheduleCachePeerRequest); i { + switch v := v.(*DownloadCachePeerStartedRequest); i { case 0: return &v.state case 1: @@ -4300,7 +4363,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadCachePeerFinishedRequest); i { + switch v := v.(*RescheduleCachePeerRequest); i { case 0: return &v.state case 1: @@ -4312,7 +4375,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownloadCachePeerFailedRequest); i { + switch v := v.(*DownloadCachePeerFinishedRequest); i { case 0: return &v.state case 1: @@ -4324,7 +4387,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnnounceCachePeerRequest); i { + switch v := v.(*DownloadCachePeerFailedRequest); i { case 0: return &v.state case 1: @@ -4336,7 +4399,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EmptyCacheTaskResponse); i { + switch v := v.(*AnnounceCachePeerRequest); i { case 0: return &v.state case 1: @@ -4348,7 +4411,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NormalCacheTaskResponse); i { + switch v := v.(*EmptyCacheTaskResponse); i { case 0: return &v.state case 1: @@ -4360,7 +4423,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnnounceCachePeerResponse); i { + switch v := v.(*NormalCacheTaskResponse); i { case 0: return &v.state case 1: @@ -4372,7 +4435,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatCachePeerRequest); i { + switch v := v.(*AnnounceCachePeerResponse); i { case 0: return &v.state case 1: @@ -4384,7 +4447,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteCachePeerRequest); i { + switch v := v.(*StatCachePeerRequest); i { case 0: return &v.state case 1: @@ -4396,7 +4459,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadCacheTaskStartedRequest); i { + switch v := v.(*DeleteCachePeerRequest); i { case 0: return &v.state case 1: @@ -4408,7 +4471,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadCacheTaskFinishedRequest); i { + switch v := v.(*UploadCacheTaskStartedRequest); i { case 0: return &v.state case 1: @@ -4420,7 +4483,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadCacheTaskFailedRequest); i { + switch v := v.(*UploadCacheTaskFinishedRequest); i { case 0: return &v.state case 1: @@ -4432,7 +4495,7 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatCacheTaskRequest); i { + switch v := v.(*UploadCacheTaskFailedRequest); i { case 0: return &v.state case 1: @@ -4444,6 +4507,18 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { } } file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatCacheTaskRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteCacheTaskRequest); i { case 0: return &v.state @@ -4484,17 +4559,17 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { (*AnnouncePeerResponse_NormalTaskResponse)(nil), (*AnnouncePeerResponse_NeedBackToSourceResponse)(nil), } - file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[21].OneofWrappers = []interface{}{} - file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[26].OneofWrappers = []interface{}{} - file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[28].OneofWrappers = []interface{}{ + file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[22].OneofWrappers = []interface{}{} + file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[27].OneofWrappers = []interface{}{} + file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[29].OneofWrappers = []interface{}{ (*SyncProbesRequest_ProbeStartedRequest)(nil), (*SyncProbesRequest_ProbeFinishedRequest)(nil), (*SyncProbesRequest_ProbeFailedRequest)(nil), } - file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[30].OneofWrappers = []interface{}{} - file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[32].OneofWrappers = []interface{}{} - file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[34].OneofWrappers = []interface{}{} - file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[35].OneofWrappers = []interface{}{ + file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[31].OneofWrappers = []interface{}{} + file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[33].OneofWrappers = []interface{}{} + file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[35].OneofWrappers = []interface{}{} + file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[36].OneofWrappers = []interface{}{ (*AnnounceCachePeerRequest_RegisterCachePeerRequest)(nil), (*AnnounceCachePeerRequest_DownloadCachePeerStartedRequest)(nil), (*AnnounceCachePeerRequest_RescheduleCachePeerRequest)(nil), @@ -4503,19 +4578,19 @@ func file_pkg_apis_scheduler_v2_scheduler_proto_init() { (*AnnounceCachePeerRequest_DownloadPieceFinishedRequest)(nil), (*AnnounceCachePeerRequest_DownloadPieceFailedRequest)(nil), } - file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[38].OneofWrappers = []interface{}{ + file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[39].OneofWrappers = []interface{}{ (*AnnounceCachePeerResponse_EmptyTaskResponse)(nil), (*AnnounceCachePeerResponse_NormalTaskResponse)(nil), } - file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[41].OneofWrappers = []interface{}{} - file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[43].OneofWrappers = []interface{}{} + file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[42].OneofWrappers = []interface{}{} + file_pkg_apis_scheduler_v2_scheduler_proto_msgTypes[44].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_apis_scheduler_v2_scheduler_proto_rawDesc, NumEnums: 0, - NumMessages: 46, + NumMessages: 47, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/apis/scheduler/v2/scheduler.pb.validate.go b/pkg/apis/scheduler/v2/scheduler.pb.validate.go index b9e4449..e00a680 100644 --- a/pkg/apis/scheduler/v2/scheduler.pb.validate.go +++ b/pkg/apis/scheduler/v2/scheduler.pb.validate.go @@ -3134,6 +3134,153 @@ var _ interface { ErrorName() string } = DeletePeerRequestValidationError{} +// Validate checks the field values on AnnouncePeersRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *AnnouncePeersRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AnnouncePeersRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// AnnouncePeersRequestMultiError, or nil if none found. +func (m *AnnouncePeersRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *AnnouncePeersRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(m.GetPeers()) < 1 { + err := AnnouncePeersRequestValidationError{ + field: "Peers", + reason: "value must contain at least 1 item(s)", + } + if !all { + return err + } + errors = append(errors, err) + } + + for idx, item := range m.GetPeers() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AnnouncePeersRequestValidationError{ + field: fmt.Sprintf("Peers[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AnnouncePeersRequestValidationError{ + field: fmt.Sprintf("Peers[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return AnnouncePeersRequestValidationError{ + field: fmt.Sprintf("Peers[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return AnnouncePeersRequestMultiError(errors) + } + + return nil +} + +// AnnouncePeersRequestMultiError is an error wrapping multiple validation +// errors returned by AnnouncePeersRequest.ValidateAll() if the designated +// constraints aren't met. +type AnnouncePeersRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AnnouncePeersRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AnnouncePeersRequestMultiError) AllErrors() []error { return m } + +// AnnouncePeersRequestValidationError is the validation error returned by +// AnnouncePeersRequest.Validate if the designated constraints aren't met. +type AnnouncePeersRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e AnnouncePeersRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e AnnouncePeersRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e AnnouncePeersRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e AnnouncePeersRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e AnnouncePeersRequestValidationError) ErrorName() string { + return "AnnouncePeersRequestValidationError" +} + +// Error satisfies the builtin error interface +func (e AnnouncePeersRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sAnnouncePeersRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = AnnouncePeersRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = AnnouncePeersRequestValidationError{} + // Validate checks the field values on StatTaskRequest with the rules defined // in the proto definition for this message. If any rules are violated, the // first error encountered is returned, or nil if there are no violations. diff --git a/pkg/apis/scheduler/v2/scheduler.proto b/pkg/apis/scheduler/v2/scheduler.proto index f6fcbd7..e2e7548 100644 --- a/pkg/apis/scheduler/v2/scheduler.proto +++ b/pkg/apis/scheduler/v2/scheduler.proto @@ -188,6 +188,12 @@ message DeletePeerRequest { string peer_id = 3 [(validate.rules).string.min_len = 1]; } +// AnnouncePeersRequest represents request of AnnouncePeers. +message AnnouncePeersRequest{ + // Peers information. + repeated common.v2.Peer peers = 1 [(validate.rules).repeated.min_items = 1]; +} + // StatTaskRequest represents request of StatTask. message StatTaskRequest { // Host id. @@ -448,6 +454,9 @@ service Scheduler { // DeletePeer releases peer in scheduler. rpc DeletePeer(DeletePeerRequest)returns(google.protobuf.Empty); + // A host announces that it has the announced peers to scheduler at startup. + rpc AnnouncePeers(stream AnnouncePeersRequest) returns(stream google.protobuf.Empty); + // Checks information of task. rpc StatTask(StatTaskRequest)returns(common.v2.Task); diff --git a/pkg/apis/scheduler/v2/scheduler_grpc.pb.go b/pkg/apis/scheduler/v2/scheduler_grpc.pb.go index 76247cb..1b011b5 100644 --- a/pkg/apis/scheduler/v2/scheduler_grpc.pb.go +++ b/pkg/apis/scheduler/v2/scheduler_grpc.pb.go @@ -30,6 +30,8 @@ type SchedulerClient interface { StatPeer(ctx context.Context, in *StatPeerRequest, opts ...grpc.CallOption) (*v2.Peer, error) // DeletePeer releases peer in scheduler. DeletePeer(ctx context.Context, in *DeletePeerRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // A host announces that it has the announced peers to scheduler at startup. + AnnouncePeers(ctx context.Context, opts ...grpc.CallOption) (Scheduler_AnnouncePeersClient, error) // Checks information of task. StatTask(ctx context.Context, in *StatTaskRequest, opts ...grpc.CallOption) (*v2.Task, error) // DeleteTask releases task in scheduler. @@ -115,6 +117,37 @@ func (c *schedulerClient) DeletePeer(ctx context.Context, in *DeletePeerRequest, return out, nil } +func (c *schedulerClient) AnnouncePeers(ctx context.Context, opts ...grpc.CallOption) (Scheduler_AnnouncePeersClient, error) { + stream, err := c.cc.NewStream(ctx, &Scheduler_ServiceDesc.Streams[1], "/scheduler.v2.Scheduler/AnnouncePeers", opts...) + if err != nil { + return nil, err + } + x := &schedulerAnnouncePeersClient{stream} + return x, nil +} + +type Scheduler_AnnouncePeersClient interface { + Send(*AnnouncePeersRequest) error + Recv() (*emptypb.Empty, error) + grpc.ClientStream +} + +type schedulerAnnouncePeersClient struct { + grpc.ClientStream +} + +func (x *schedulerAnnouncePeersClient) Send(m *AnnouncePeersRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *schedulerAnnouncePeersClient) Recv() (*emptypb.Empty, error) { + m := new(emptypb.Empty) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func (c *schedulerClient) StatTask(ctx context.Context, in *StatTaskRequest, opts ...grpc.CallOption) (*v2.Task, error) { out := new(v2.Task) err := c.cc.Invoke(ctx, "/scheduler.v2.Scheduler/StatTask", in, out, opts...) @@ -152,7 +185,7 @@ func (c *schedulerClient) DeleteHost(ctx context.Context, in *DeleteHostRequest, } func (c *schedulerClient) SyncProbes(ctx context.Context, opts ...grpc.CallOption) (Scheduler_SyncProbesClient, error) { - stream, err := c.cc.NewStream(ctx, &Scheduler_ServiceDesc.Streams[1], "/scheduler.v2.Scheduler/SyncProbes", opts...) + stream, err := c.cc.NewStream(ctx, &Scheduler_ServiceDesc.Streams[2], "/scheduler.v2.Scheduler/SyncProbes", opts...) if err != nil { return nil, err } @@ -183,7 +216,7 @@ func (x *schedulerSyncProbesClient) Recv() (*SyncProbesResponse, error) { } func (c *schedulerClient) AnnounceCachePeer(ctx context.Context, opts ...grpc.CallOption) (Scheduler_AnnounceCachePeerClient, error) { - stream, err := c.cc.NewStream(ctx, &Scheduler_ServiceDesc.Streams[2], "/scheduler.v2.Scheduler/AnnounceCachePeer", opts...) + stream, err := c.cc.NewStream(ctx, &Scheduler_ServiceDesc.Streams[3], "/scheduler.v2.Scheduler/AnnounceCachePeer", opts...) if err != nil { return nil, err } @@ -286,6 +319,8 @@ type SchedulerServer interface { StatPeer(context.Context, *StatPeerRequest) (*v2.Peer, error) // DeletePeer releases peer in scheduler. DeletePeer(context.Context, *DeletePeerRequest) (*emptypb.Empty, error) + // A host announces that it has the announced peers to scheduler at startup. + AnnouncePeers(Scheduler_AnnouncePeersServer) error // Checks information of task. StatTask(context.Context, *StatTaskRequest) (*v2.Task, error) // DeleteTask releases task in scheduler. @@ -327,6 +362,9 @@ func (UnimplementedSchedulerServer) StatPeer(context.Context, *StatPeerRequest) func (UnimplementedSchedulerServer) DeletePeer(context.Context, *DeletePeerRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeletePeer not implemented") } +func (UnimplementedSchedulerServer) AnnouncePeers(Scheduler_AnnouncePeersServer) error { + return status.Errorf(codes.Unimplemented, "method AnnouncePeers not implemented") +} func (UnimplementedSchedulerServer) StatTask(context.Context, *StatTaskRequest) (*v2.Task, error) { return nil, status.Errorf(codes.Unimplemented, "method StatTask not implemented") } @@ -440,6 +478,32 @@ func _Scheduler_DeletePeer_Handler(srv interface{}, ctx context.Context, dec fun return interceptor(ctx, in, info, handler) } +func _Scheduler_AnnouncePeers_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(SchedulerServer).AnnouncePeers(&schedulerAnnouncePeersServer{stream}) +} + +type Scheduler_AnnouncePeersServer interface { + Send(*emptypb.Empty) error + Recv() (*AnnouncePeersRequest, error) + grpc.ServerStream +} + +type schedulerAnnouncePeersServer struct { + grpc.ServerStream +} + +func (x *schedulerAnnouncePeersServer) Send(m *emptypb.Empty) error { + return x.ServerStream.SendMsg(m) +} + +func (x *schedulerAnnouncePeersServer) Recv() (*AnnouncePeersRequest, error) { + m := new(AnnouncePeersRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + func _Scheduler_StatTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(StatTaskRequest) if err := dec(in); err != nil { @@ -757,6 +821,12 @@ var Scheduler_ServiceDesc = grpc.ServiceDesc{ ServerStreams: true, ClientStreams: true, }, + { + StreamName: "AnnouncePeers", + Handler: _Scheduler_AnnouncePeers_Handler, + ServerStreams: true, + ClientStreams: true, + }, { StreamName: "SyncProbes", Handler: _Scheduler_SyncProbes_Handler, diff --git a/proto/common.proto b/proto/common.proto index b5c3e8f..89e0070 100644 --- a/proto/common.proto +++ b/proto/common.proto @@ -38,8 +38,8 @@ enum SizeScope { // TaskType represents type of task. enum TaskType { - // DFDAEMON is dfdeamon type of task, - // dfdeamon task is a normal p2p task. + // DFDAEMON is dfdaemon type of task, + // dfdaemon task is a normal p2p task. DFDAEMON = 0; // DFCACHE is dfcache type of task, @@ -132,7 +132,7 @@ message CachePeer { string id = 1; // Persistent represents whether the cache peer is persistent. // If the cache peer is persistent, the cache peer will - // not be deleted when dfdamon runs garbage collection. + // not be deleted when dfdaemon runs garbage collection. bool persistent = 2; // Peer downloads costs time. google.protobuf.Duration cost = 3; diff --git a/proto/dfdaemon.proto b/proto/dfdaemon.proto index f5fdcd5..7280b2d 100644 --- a/proto/dfdaemon.proto +++ b/proto/dfdaemon.proto @@ -122,7 +122,7 @@ message DownloadCacheTaskRequest { string task_id = 2; // Persistent represents whether the cache task is persistent. // If the cache task is persistent, the cache peer will - // not be deleted when dfdamon runs garbage collection. + // not be deleted when dfdaemon runs garbage collection. bool persistent = 3; // Tag is used to distinguish different cache tasks. optional string tag = 4; diff --git a/proto/scheduler.proto b/proto/scheduler.proto index 2d48850..8156c90 100644 --- a/proto/scheduler.proto +++ b/proto/scheduler.proto @@ -178,6 +178,12 @@ message DeletePeerRequest { string peer_id = 3; } +// AnnouncePeersRequest represents request of AnnouncePeers. +message AnnouncePeersRequest{ + // Peers information. + repeated common.v2.Peer peers = 1; +} + // StatTaskRequest represents request of StatTask. message StatTaskRequest { // Host id. @@ -432,6 +438,9 @@ service Scheduler{ // DeletePeer releases peer in scheduler. rpc DeletePeer(DeletePeerRequest)returns(google.protobuf.Empty); + // A host announces that it has the announced peers to scheduler at startup. + rpc AnnouncePeers(stream AnnouncePeersRequest) returns(stream google.protobuf.Empty); + // Checks information of task. rpc StatTask(StatTaskRequest)returns(common.v2.Task); diff --git a/src/common.v2.rs b/src/common.v2.rs index dee4079..654e638 100644 --- a/src/common.v2.rs +++ b/src/common.v2.rs @@ -47,7 +47,7 @@ pub struct CachePeer { pub id: ::prost::alloc::string::String, /// Persistent represents whether the cache peer is persistent. /// If the cache peer is persistent, the cache peer will - /// not be deleted when dfdamon runs garbage collection. + /// not be deleted when dfdaemon runs garbage collection. #[prost(bool, tag = "2")] pub persistent: bool, /// Peer downloads costs time. @@ -558,8 +558,8 @@ impl SizeScope { #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] #[repr(i32)] pub enum TaskType { - /// DFDAEMON is dfdeamon type of task, - /// dfdeamon task is a normal p2p task. + /// DFDAEMON is dfdaemon type of task, + /// dfdaemon task is a normal p2p task. Dfdaemon = 0, /// DFCACHE is dfcache type of task, /// dfcache task is a cache task, and the task url is fake url. diff --git a/src/descriptor.bin b/src/descriptor.bin index 5fa5285117ea8cb796c09c39c361e5a538903890..6c9749053cc3c670bd1c971c7dff822cdf9ed47b 100644 GIT binary patch delta 23887 zcmcJ1d301o_W!GTou=ueyTc=pq_e$*KuBolutR`mN!TRpprE*f&_E<4A&ZI|h^V-L z!b2W2I*RKsF1Uc=f*XRMprWI=%&6eLATHye*zHjna>JeI|~0UxwcsR?Y0kki~oQ5+R^yynu>D#`&z{*`1jW9=r8AtHu3NB z(FMMNUY?{Gt_-b^1$$Tzj4tl)^WuMclEw@@BgyaW=5-}$Tr>0__XRV}rkV?*X2h(o zi<%8J(dwx9Loc6|JSNv)Ay6?dho=MwS_8-Q$0D@=^c4VZ=q67NcC$8)DFk2#0KEl3 zH}o!;QD}WWrT_r%*j%F&Y%#-Cr1fLLLUTq{(;{oc_{>WDe=mnWhINXPeBN0g!HB;S z9tch_E5=le96fRJB(tW;oHu`7RdjKEo!Pv!A!^poH=8j(V;(W504%n~P3Qx_g%bvmyopDhlf=h!j~Ze1 z@yRLPBP2VWV>B5P-?u)PK+0B7Nn)8=NfKOB*#rMRUYQ$sN8;kVX8?Df^=T#H7Ec_2 zf6tyc8UJpXm>YOoVz~@`Hn3i@{xOlTawm~C0V~ds3k=PUG2{XZv%%22a(a@XpM~lB ztyd?}bYn7!NG`H*a&EfAirdhui4|s6jy`pCrVJten1$ID%~B@47m zS+IjSB^qrs7e||`=2bOUIr`|L6I|d)@n(2kE^%LKcxo_N;?~T=4LLF;s3)KFfYK!NP)d3Mk+r_k+dBCT!! zJHYvLYMH-8;6QRqcwsQd>NPD3^v6#NWn~EfWYWYt2K|z&rsk^VC?;M%Effq2IHb`6 zu6^RdnKgCu>j8cv25x8Q=L_(-`le2&xjrib$L1)#m5 zU&KSfG`VbbV-)L}%{7Z@@mFG4UPHemj@8lt;l{9nGeVVxI0I(5FJszz#)6&A@~Y~E z(G!j$*{i#tsIJSHr-L^W%ad(zUCxd>j2mWzQ+Gg700#0^jCT&+Z@oH$)HP)$o&C`r zK^C><%*@7rUobNq=pk@%zprKqqJ3>p+wiJJhp|vwyRsvdUF-|-!JT?zvE9%d$tF5n^XSOuf0_D_M;lNa}0Hk*-<2k`{>)3_et-z{GNd3)Ok-!K6h3IZ$ zJQ(a_-Fa~-Ak$_?0$l|JLc4?Uf?&Fpe@Q1mw#|;D9^nE6dHsz+pWd@xyM!jOOX+ay zPrn5J9yy&%x9^OJ`1kZPBHi%DVV4lyy^I$JGo(x!qf1(%(DQ}Ss(I1ICh+^z8R0Hn z1gghy-A^2KlBn_}tc}(!XkG|B|D14F$zOZJ^#JWFUE)>O*EL7$n#~wy)f{=eoO=z| zLqstxkz#dyOIk(Qt(MZtK z2TGI9j0lD0+-JD9)2aC#N{%u3>zQgPzu|hE@l3T8Ss7C?bnMJnBUS}`6g(qFuGuIH5npy$rD`*{6bbaps^$Iyj$&2a5uyj!rBHECxE z8u2C|a7+M!=Dx^ask;Eu*(yFK8PI;`NTt;|ly)CUFi~l@0y;{}h0?xE2inj2?i_kb zyHrV~)j5>*)kLMeqADWPO6Sno*G{fhpHxY;(n(YQPFip>wHh>6%39}8)Hmr6+f=Jn zbEWmtIrQ|cHk9G@x#2*O*bUV49Ws2GR%&%Rc2iWXR)9wSBjK1@pXT{7H0b1e323cP zb5FIjOD@BGm}x6H*(G5GkGD&B09=QaU2@U6ek9LT+Dv+8hs=|9N!YMY7#t_ZqB?eI z<-D+X?V!7c>oYR^DPpav`~%Y3O)F0wyAN=qd~xhUFL7p+aeoU}lR4F~=o1}`PWET1ydoDRDILK_xDa&p9? zIOty(&kY95iSWG}mnw{J7evH+;3CWO8{;P4gGtfm^XnTIDU=BdBjT}iaoCTB4 ztT+D%Xt>$>|dt3LPOYYD=0U^tfM2dAi$AR^;Zd;OT4O)~2Xyu}C zpjJSkSZg`tcb0X{qB($kx+s!*H3PqH!@YrP_k!Px0HUYsvf3Vf9E0ZuBOACU)l1HT zn;6~*{l>MYGa^@u^soi`hqL-;ZMd*dpkdOVIV>2QsRXp9rA^II(y?BP7~CkhK8Npaw1w?O||g!7OQ2k#Z4zJTT_32RSoHqStp+$H(AQtIWAepR{Yg8 zE&*13om5>nSDlIE=?QT&RK2MvAZw z0z&U%JCgnrM821m)=2N-h{o{HTx`r^xS!_Q9&GIR8!UI`0mn~sPry43WIVL9XK8^7 z>z+o+Q5sYHzq-;@UsJR4bbyIckrUUgB_Pk)d$4Cyw@$tOuAg>YJ--tt~CR zKIf37qx@~5)9@J2(b0HmcE$yPe3M#iD2$^Vs3;LJTC&s ztn7cUlfHEn4`IGtWPvX2SDFvr%{R@E&?pt5AC zH2q#Wy-&#=r<&7R;9AEYqWv*CkksdN^oC>F)vE<{F1|1_y&HCzY`Bkb?M9tJ^J5_e zMXRwVKyES_OdlbmNYQmNZSp8tlM~{Q$1V&9CI}Qv_?ArbFvKC02k3oKB=t556O(Cw zKhPVn&RTX6fu6XiEE}n$^J{8r&88@Y!)7D49X03IL~F?r@n0-ovt-)!F|v0~=;t^h z^DhpI_$HZriJwS0RDAQs#nM$wrYra}-5nL*47emBJcDF1dcX2Ea|P=z3CkELne5#P z{r@8dDqbdIpk%UqEA{^t16{XF8q;L*F0RxekhWu>_m+hNl#NIx&tjF1GtahPnaP5X zT>s?}5z{79G;@v4d*hjk9V5L}^)2)atY01xPhv8MOK}}hILkV`oSwvCmxTj0f;L=< zH9B00Gpvg)n+?btfGiadcn~+}ynAqwWvr+HKjz*;%hCPu({lF_rBs=FGV59v&lL{E zBUj4E(@%?Sq4PlGS=C69u80~%zCgc98Ua6T`oTmx_4DWB0)gqXu97JOKi!yz6H#IT z^F3Ed^XI2avyD(jS)X4;=CAuI=`{Q4(mbl;5+hM3GSp7gjRjg(DIRcr9wYTgHD@$d z&7WUWEpo&_Ij|}cpvcxwm*)vO8`H|Uni9oBu9lkbr%SR!M=GY1TA)=%>$lWmTws$LYW zn`e%jF=L8JX~UK#qypxVSC_x0AA4=#%k7R$jbr9RA(4?o^l0+h?al?F9ej21l%LmA*(A8lh%`3jb2Zl_PX^UKjoq{Xt>^mhl72s{p))J@Z0*(=wh%1 z#V^uISTN@}u9_O^>za_p6ge@uswiA|vb>aH5QU3kUWD4mVJo{`^+M!MAk^z`Ec1=> zayL%3r`CrB2UrJh?B{UprbKg3Pe(6;2{$qA3iIANf{CIHNHc7myB`M~4x_Bv&5mLPD%-1f z<6VOroLBtPhlk=6pLm$kyayjH^V3yfr1-_W1Xm?@D_xcTTSI zDaut_%lu2gD=b>6)|UmNruEQYbF8noj#gKY^rh6()k^`nsQvT-n?Y;RwhT<4zb)h& zhv~3(1GG^rIMjOXp-%QS71-&s+cJxsol@myfG1lN7DVM{5N>g@lO-lcOGj&!q-SFv?WfkI>dI(OrdXF!E&ABw z*4^}|Bu$wX6o!bY__`lG8uH702-cl|8o~)h9@bq1}eSi`d z;%a|83zgZEjjW%1iKG(&5 zpoY0abeyWbg&0b&chrGGD3q95Q=9W-2-$p!KayIsRmjLzn3j20hW+3|mcH&GkM+uv zUd0)r552`>3eG6_Kv}7^O8@qx6g0&hC@QsHXvB_C;7Pj86m+0wBuh6X)}9>($8~sY z$MN->!ly$1kpdt0cNtDb-uMc_V6=>p-Ag1Dq-rZ$Z;djbPe<5i}H=|OmCplQ=-x6`>f1B3h#8C zgvM|0g)t~h+j&k>w)aF?z*HV2IjnzSo?LG! z#4j9HlzEI`f%WZkCT?`EUMfmF@f`exfKax~ha;vEPyEcj+$n=2A32G4C7xO3 z^YYAmbeexXc^>_~=VeygM`w!~QI}X&o9&X0tdC9;wV+ZsvNIb*#VQ_`Ox_gE%?~hG5y~P9rx|sf)(ZUFE{Y7eD`2=EVcKIPKl`#87EvSu zAn^!EjYtG=Kd4gEn#88v6he@P;C_;6FN4G&>;2sW9K9hQ0c9CaXD=$V(n&zYWn!?@ zI{igTb)54;gmM{x0Pk7G#|Hab_rE~7j6;ARNdgGu{ygL3@Fw)!(+`lUJ>kH30fF3K zV0;c564*X!NO*fsgfd2$1G%GKG8P%5pY~D4XzE^(Wda0}-cKA1w65PvS*BfpK!~uo z?gLDNe*z)$7t0j?RKY#KJQ;$2QNevZk^faMQkdj&i{dTn8-oxgz4;>5^p3q44wMN9 z__5~Yc=T-PnZ3jR2cDVt zaDfk*AlcWG&yYPR{k)U&&NzKN0eWXtUr#zBndvB|&ughgjgN{HGGlwm;aqxffd(s_ zgL{h?jjDigjO~YWEAs^gEU}3sWturX8lBe~OZJaIqd>*vhUg!`h-P%^>>ZAa01YoB zU$3uae%QOjc@W9ZEyVLBTNm(1bc1v5H_L00IRX>Hfm!;Yd~*ed-35mV?$mRh`!FPu z4I-K;LG}l^Ux&in8cLKlETjet|3@K_RMn)5*AX=ng@*8Pe$9fGMpa!n`=gL=Fqnpl zmTKc!u&1^0qaNrg5+Mb-rKQL?QCdy7rG3D3st`&-Ed2FHAwRh|q`!JUJYb!z*N%{j zGvs60=OJ9s0oV^hd&pBxbz++RH0rAyOlv9khkP%=b z%i403oZ^B{Ln0-}5GU)Ske=w6K!Jis3L6)HDxYMAG?HEc6Wk9K8Y+{%^JyrRN-GR` zBYg}qQ6*-%<@=@^3FosAHH-n2Z0O_Q#1~pEpHZWh{h4$rapfyDK=Jp-=ThT1DawqtBslhqm{&hb zt0u#?{EIT>;F2>x3y%YFBb@ou6S(>63n^0J$j<>cS=Lj(l1L+8N+lL;R%c;R+}HY+ zM(Vzkm({GHv%B_7*>OXqY5g3$7|5%s7Pxq-^{p@E`RFj$`dm249phNByl%l)AwNBG zu;}x(8WxP0R{cLaQ52S8UHz3`ZHHon`EXjPYwFyO=A-g3lkg7c z7bo10JphnuCDHx3G(olceiI5*LR2X9tzg=F-^f*`=Vl8VO4sD!_jz7z!}u2tkQDP_L(TbXckLrSh|s0`i8RFO`7g~=nq z6slQpK5qh3WTdp=^r)N#movjl?NFke1()*#d%f~IxnMhD5?&`gDay_|2K&Hw zGR-E+TW~#3X0h|Xm%ds%;(Y_PUKue`(qx1C`tPNy*N$A1jpPz$TK9iXG5xOCbZF+E zTTd4aHB>({{zZ}#6|Y;E_6RoL&zkbDK5EZY=(>fvOejAp3SFBV87k?>S8B_@WaZOC zyS`lMXTY3q=28lVSv0n*L)rKq(cJ10Q4Bb2zawYweGN)E%Ni z;A70mMTtV-6Nz`|*B|9UwWovHaq@$*CjBIL+Mce|)5q`h>7S&Qw>> zj_32DpQXNux*Xi|w)Ac9&r;tYQ&dI&i@p{AqKbS_rUPwmdgU+j%8Fq5b<#K3&6r#q zyZQPrVPOSPjW4HXq|&zsrjy3VI(?3szgN@g=`YZ9xX$bEbVIwB^a)W7=KO*Q!5#jn#ru_@Edt2-O2={=?O34C>(T_4Dl*!Q+G5WW3!F}e;X_d&U zFNj`%dv)Xwsc|Aw|6ZyA!Bvm4d0tg*3mm%}BaAB7B04_Cv|q5;$Qv(a!&L=~qT^$9 z0jYu|qT`>480tk%vvZ8l7fcm{Fy&|2FO;}qFQ46?u}Bsr!VpOR&a|sh@-8(;HZ;^y zO#oK##v53EZ)L10sQ#U{Nh^z>dO3#@7>N^vxwg?wC^I(!Qlb^O;yAkmvZl1wb}!E4 z;RVPFtdxx^iFl&R)xHF1q9H3l=HN;~%WOq1Ar7%$2eRle3($RAMYZw_J5?uF%I>DK zaOxCnH`Q=o$2AMv9c5Z)zmslXth4UQbfkjk>$oRRn2uCR9;~5?w&U^IZ-I!oA*r;v z8+iPN*u7j#UXfJV&pMJ$n^(kM2E^29V5Ea+N%|8QL9XwEcQS;3XdiX44)hfXDOU$9 zg1#hEaMOXfL0?jLyfcY%lFv0BT)R&ai=a6KdpF!SbL}oro?tIaV&m2B4A8ro!_5fe z6b+(>hNBL_e0y^{hF*F*$<5@OX3+LFQPn-&oEELFLX{qc&*p_ub1@26X!o&a0abMM z7_{Bnsl_G;HH=o*P;=bz*js=tPSK!Kyp!aXX^!dLb9!|>-lF43>+K+9+D1piy_std zh;58)7vDxlFt=H4qa$qtT}27o*aHG0Z0$(fxQ}3I=EUivk6$R=6T`zEwm5hrPrzFM zyiD?B(hT>*vMH&bIUyQt7+G6$UesP&!*cDHJZ+l0H z(uh4Y7RAi0T}7a=Viq_;XHf>ePhsEWJMn;h5OC4$nnrR&f6>X5tjNp4=t^q7f!ocv097&*jkteqslBu1+{){G< zi^;gMXe=rV_P4vHFrSt)=a_bD@AuW~*zSYU5RVMu=3j}lBW1g8ppLlfc*1$}@~ zhD#$?>P^n42D{j^d<-crdnsU~w}8QsLUYhq=xyvQ(U8)-&|EC#1TBBn$HwsM_is=4 zvpN2}VcxWnb#>?}uNGfUG)s>5WjuN4);em2CiSd*2%CC}BJm9p*U_GH~%SwCOye7$z~fAIC1eWWid z_niry#!+W!xhy!<9@>vhPOLg+B~~4C5cr&|>S#aJkA-~af*5ooUn^k2v+QI2*c??U zrnFAJr@(s!HDW@qyK3E8aH(nM2Us`z>nfIF`-ZR_`|19yNX53e8G2VwFE2Hsio8P+ z)-Sc$0EP^#9Uj2Se5ZpLbgG9|%7T;Z^9Ha=HJQ=`J)BTaqzQT=7oB0hKR`SLKVY(d zFzAXzK^SyHL^s3!{WNBP`22x@*Md0ov9C6W1NPZx>+zrE6k>Z4s0z*7u!HGx;4Et}K)DLzz5ov0xv+;?ZQR0!89 zV`Tv-wkYF`r>g1sYDX4rK!sNhW>Knt*4w{F*kZLlA_P5( zi%08IfS@mEYyBICv(^5wAd+Gv)oWM4Pc5@cN3cPvLl`4V(sUiut_RX2`}_)4sgTH-zK%KNa^Xy`p_)}E`)~#82toZ&0dIT z=GY@gv(ps;@`=|mcxNaRNuL-Amjo;I*=QC?rR*I%&W%jF1q6ng_GLkqMxGv;WbC>z z>;rT$3RmzprfmjBAA8PNR;p@QVHjedE9FWU+FNu&L%0r+jHu9L(Rko(wh2cp1pbk^DLuD@N=baOim!meA%Mg zK{$aZ^A*C93ar-OGy$5L}kBc;)ECoJwt@(csm*NrPp34*zs)&%Mwf9oj?L#e#z7BL~h{j zHa7tf76(jj0z*vPt=7g6YwuQ@=tOSro;EiD&@d1JP!Xa{?1>YiP3$2;l$Ppjxc4#b z05(ykG{jz8$-0ns_|!Rc27!GPBh$AWooNf=L$Wld<)?L@GpPk|pa(#bCx9U+yv#au z5(k1ISa_LbWQsSaGwlW6pY;w7GG`zhs=?FVi0Iv%Yo}MTqDfE&Ns~d`fBsOo%kYaKFQ}cd^)5L~r$TqxJ_?c$O+AvaVB|bu%#i9TF(D$7dSu z_n7uE@Nv-y|M-hWVQVI4yvNY_N}v5^5~m+fCMd^#Wirbe?uZC~hfDyFV#g4(K2T!E z5Nv)xVyA3>CW##-99%8_&bOI5L82fmzArAAaa=H7YHMfNs%hPcoVIs zg7;RR+bN2aqy<)%LxNWRh-G(ELs0yP8O0^u(;$wZ;r@(iUqT$??bjx;u}TSpnDiML zC#op~Ndov7E*r^aA+x6Ag+^Ne7E}gkk`D~Q#}_PFiU&iG{DO5z7kpp{KE7bVEHCv> zW*P3Unf5({Q;=nj!Kb4rBA@JVvOwo+%H+`DWD#rlg6{ak!QZhu0CIH(RBj7HDCc)9xr5jThGMRfqlO^-9W(R2 z)3L2=!~Jij{RHWbw(TjbTuC<@bN)>)H*F!Cwt$cC3eY_&w@%;i%*Dt3t=hii@<0YR zz>W>E%^z8EXR$n>p!_3Cm)u|oZhj^g|^)lY4ub4U}hmsI0xU1BG>X?h66efU}yMm|pP*8!~D-1izUAYE*K6nk%5`*l6 z)0k?#aphtTJ{=5t>FbAFk|jPJEJRya$#nQ{&aKDaaf$%QQ^XJpU(KC|977PfnmZ3U zhFJJ&j)%M+3+EZ`)m*z73s>1|r?a!wA?9JuYD%@yvztc?<1529tSdlJV8Enx#Sjy( z=g#wuAr`xyJI{9>-3)w>*v9h>5a_Jsr7=Qu6V}EF(aX1%2vH+f9+@tSzH$-GcS;cW zGX#OZOF>`=nih917lt5daYMdj7=on5p;Hv5=F#ZJ*yk}M2hvOY86@%d*bpRdjFY58 zy^%Zj707}JZb%nF5>svBvdynr6h(?=fu#gUNduebw^v+JP;V2Lqyl-gqd(EdRkAZM z&SsJXC@S>L>7RJ}G-ng^GcJGP=^4Tc$Rnk`iJzp0P_g9(^FWFX#T@6w1_jW+i5KQe zZN?Z2+{B^H7elE`!+k5)HbJTCO#9M8mM60s*UW-3?9m^ogF~mX4tbC;y^ba*-O4>h z-ualBZ@BN^+TSp9mK`{aovM)XfpiB)97r}LpVaX#&igw_40ZhYJ9q{_@{A#PzKbWz z*AGJwxr^t?>xm&)zKi$m=S7PbXacyIjz1y$5hqMW8&E}T|f|t+HPL@Rb7Bb0K$rZNnv1!iBBkVfgx6WLfM@{I@}#?+8uyEX9r&vBSeR} zBTk48b4Q#I?9S7YP%LDVA}AEb1~A1Ct@(7E4w;vyi4Hwrh4g?SqrBI7zzRLfi2rBl zJ6C$Z3JLo;?iwbpFGf&g471e`xXoPRSfGZOyPJ0zt%jJpn~xjs%te;#1@2Nn z52j*hI=IwR@dD2up@x|H0xz#{rXroShr31z;NU{u9&<5PyQS*>p7?ItW9}Y4e599B zAYBdjey+U?6`q51T@mX{?bGGz8g<3Y{Tvlk%9?gVPb$~`4%D;kO=q$>3aJ~A4p3!{ z?teE@bR_MEIO!I3&G2`eCIC{$Fa(dUD~pC9h`i4828bj3MT}Lw1?6 zAl(i6{`eD!Z>YWGY*wc1M0b$HC&#iex;yc9s7*To5Of+ac`Y%-#6#*@Vu-~Ksq5XH z?(Bzc+6jO_=fjwtz*yiqjt+((^kJM3?8L`y+KKMMP5`DDqBTE`GekH4W1>Sn-NlCc zbFO`Z-H(u8Q$+2%&S3+U5Q;JNb5b;N(uzq4U$!X(fWSOpa!m{|@k_NPhFJ4U#d|R^ zbfiro00cTmVnV=J;5tIU5QL7z2|)-)+Y~~v5CUL|AzJfjoFNjzQKEAmgivC*zvtQ& z_?~p3(?4$?tcrW8C7Aj>$5&A#gc1@0zN~KJ#Q+G*118tR5EFk;Yhs8se^9)a5JULP zx(!biAkaA$69UEp*AW7SAapEF2tvU3*hJ{K7o$W70Wif7t@%@&Arit*M2CJrp@c^G zdK(`#paM-z3D(S=U57hfDxlyAU`2}D(w}+zd~xFd6_X3Q3g@|moMe3NeVp@*Kg+*M zTZ17;{;HmI3_y?Yy) z4iKaQn3M{Jn0SruC@6+l@fsb9CFuZ&58~U<^d3Ufufs=9iV$h~b#X$Z>DR>xLDSbr zLdR)(525LRDLSO-YvOcBx7QGzCWs(pxYz00O%Op;UH3hucwxVp&&DW8gfM@dj=B}? zAViYDr}k|~0w72NFu5>>n7Cdoj3E|YuQm`Ot~RtO34lOnLrfAF3tUH}7=qA-I3Y-4 zW1Er)2}uB^7@{>d#u*|>Y$Q4;v%g>j)P^5W1ZR(UaKAaNn(K_kwBp znUmtW7v|ipJ8xkx;(BwNTmyvF0Fzu}h>4pO*BD~4&5CO@Wzmlov~@WE0-byG`7uJo z^*wPy#PvNys7SV*Y|%AzE}+jR-lTYv#*-~Nx`64sBhh$*UpJV6pmfu@tc3Ooqd|Yi zS`Q*BP(!ftpx#kbZU_qfdr%LG1Q!iqfF9HbieQ3#}h^ci|yr$ zSW%pP66>S7Tjcr(P2hD94nGY+?(XPphi=c~dYX6%z=;mV z9@n!(x{rns-qRg%K~f{gj<_J{dEF5g zB-naJ3UYWYD;geSpI*>s;)0}~41PwB36dVvXGoAznZW%{9iOU&>^o~&Nt_5hnmgml z5+a62o)AI&8OHf3(Pai3QWkSXh z`}A>D-acXp^e((Y;w-fHH=teT);g9Hmk0G+zY^CgF9^S)r*(G-dqL?Hy?2H4vkPcF zcunV(!G89Kb*xXE2(>4_rn^NZ5bGy{$ZL9MQ6-}xh`grvKgEk*aKaG3Yx9QAPY;f= zU#(*4c1=Aij#Hwh-Zyl&NFWd{D7~TQlsW9AfYKX!`7HX4EkN-*IByZ93UWb4#feZG z!CSgpR09YNMBdVKMLK|nAo7+zdKRoS5y4O9ysPtBu+mc+SR_t_+6>;+-6HlQG!S`L z&sL}C2a$L6k*7K$#;@zV7ZY(ooCviVycd^l07Tx4OE&-_@5QByAL2PAr5jqp`V5R| e8}+sxic2>YL=MHJn+hU_AlZjKo**G2z!u*81{W1L=ZyKKx;^15)c;#MN}LV zl@hNyZsVvA9YqIJP(g4(alw6*aYkps1;-V~1yS++PSw5L9TMh!@0*ygol3Dm*2K~$M5^D%Q7}!&3xVTgf!P4jrk6`eJokm(p-Ag({54sU^(+y ziwCkA@!Er@i>X(Yp_x92^=Ce@?W!^2m+NY+R|m0)V$s8i*aKIi8c6KB|mdrGkKEHTiiRgmv{xAE9GZR*NV}*SR5Z)Bzlg^ zPYHq?rn^gA0~x-KA6L|%$YH=+l91w?i(!n&Dd&D;f;oEZ=$bK8rcE^?ZDzyLhH%}A z<|ecK{FboUywq&3Yda_4i~Ei?b*wX+np;=YHJU9|EwWREczs;HeNxoseNN-LQ7wL&FiZ@d zn4hY8W8RTG9le)K93pO>n4eOOIW^r~>uO*|h1fr_U!Iyo1AL*4_%1>P_KcmkCd_G4+CRK@BCJi0r^CkNd(4Y7`fqR`6W}T3f>^nlN(KuSuFzQ`q zP98IN%;YMOGIh8ZJ2@y;O&$Rudtger`1|C1|J$lJ_I5UU9}p>1YQ>BxgGI~qY2wh7 zeE**m+^uV80RFs4m|80)OdTZQuTIVPzoXy@x^@=eFNmK2A2n@=gddoepJn6s=vqDD zx2YK{sTnq1&9iTMeodZ_yCK@kT)$>UnmIijZZ%hg+v^(Y+UwMYxJk&Dd6RuvKDS#6 zd4#7KKGikSP$3Fu1XBA+7&@NAa}850*ij%ZoKfAgr~C|#tl-%W_LkO2b8Dpi{0i~r zj6i;Wz`^E@NnoKDB3jpVWglvIfPnboOfvI`h-F7IXJi67_Wighysh9N&={cSwM zNKxdpwb!+WE5r*k135VojODKcwaMmeDb`I(o3Y8W9B4OPJ5NH#H@CH$5ec0$E08)u zj`ix=`MkiW6xYlOioLS}rYS!s>e_`oU}UHn>s!N^(rk~cz`V(`olZVoTNCTFvIXpP zI-M~)FtHd+XS(MS=DMCSBh##{t6v^InfFOP%?(L&U&6fUzHH1*N7{WU>&X4rX9v@E zK^6c--zymJfm4|_XM~tKXE1iDskz-;5;hycjp6oigL&Taa1)*NI&sIGJh5j^&|fZx z;#^+IqU_C@8_dm>-*I*}vQGS6GB+sM&$wH6U(IknJ23eEC^$iPUqkdJn{gceZf>x! zP-6G!?&}!u+a)i@{mSXpO?Qj9ULBZuD0K?_k#N7&namV*Z*+@q2vlCBK79zh}J2 z=pin7HdA=!hcZ6q5&-_(%OFOFxH(o_a%QGzoS!Y8`1J_!!>`wfnllT3u!Kb{%# z!~S4ZVALNNFEg^li8FhM%mu-sBKh5`yC0x=yDQcxlhhb)TGqb2LM&Sl?4`&^)ZGsf z**#RZ`sSwga8tYKbbMlg+7Qlty8DlWFC!jbee=qub{v6)L3vI%Ptx5x7!I|rdP$qu zR^Lp_T(B@$P#{T5*4>ZLobe~0EK-H|!@`i1LC#Zj_fFc66dRE`;|XUu6Q%0z#~9CX zCL+aQ+SJTBE7*@z6X$;2{RG2lE{H9zF46=ux2i7EShu7RmRc&D?PocwOw-+ai23#^ zI~;Uvk<%+(ckhks)j>FCFAB<&uIZjTz4 zA{Ehx46ci<5|wuOz9A?L76esye@r?&Nlw&MM`mSIIG9a(%S{{kNj&D33b7#^>`lkt zO}h9~QcPLq^yb!fvZ2dbTk6fWaOe6MtnWZgO8)~0ZyxhmY+7HMv(5HBus_=L^p6Ch7ng^mWpi_Am0yTQ$>!(?JYqFNaYP*jH|dj0IApxLdHTvoV}o=a;4ZgIGS^2! z{?jBOP$HLdUJTdr^+-SQOC&fX2i7V<_gukUn;}ne0pKG&P3Ou3#Y0qkC@Pu0Mdl^8uJ5d@K4^D*8N_`3CMy z^N|Jj5Pdg7W^saP8^{YHxmyXDgJoF}EH0M4Fy>|s{R2lQu2~1 z-_jXdq@fYgo7Cj=!dhsV%{3a@o7-o^9Oq1a_#SjH_Mh299sz z-c;WJpzTJx^bpP7TkLA-CEjZZ`iIEx=(U~mETc^1o?9wLpR3MsH`<4XiNjgu%$g~* zn+@iY^Uapl=4GvQE7~f=P3H#v3N!ZNQI1p6TfB2_FYyz;kCvFh{aqX`&0xq|zL?jV zC0bgQ_3B0(f1I%Q6Wdw?;xDbi;XSb+ukLx0yPn5_PCAonMPAVQB=`D#Gl1VqE80i+ zYsJ{M)5Vo-LH|7Y9lf6BaDgU@=i4TT^mcVFytJZcxpd~IwFkx8_K+VDH}HV|=ZOAZ z;^p>Y@l|^$WPp}L-SZ-M{ROndpMFJ1BBpqe!;?fL?@lB_UMAKKGG{lp*ENb6t184T zD}&unmr(S5g_b(d9NQWWOJM4%pkDz&(`ynaCa)SGF2?sMau8^GgJ>Elo?I0YKjZr} z`5ioci@w*0;pdGK7o8XEK2?4PKi?*y8D-AFPKlcHs>Sgr5R!XH0VM?lT)o=C2x)zn z^Fm;JboD6l{p#S9BCOu0d*0`+Pq6x~l$+v$4=a10dsBR*Z+*mtztb$K=D0|EOkJ-$ zU)gXUc`W~=nNnnj`sNiY=oIcdKP3G?AMMWv1Wz}|H8<8ZEsNpEzd-41AMMpgq)Ywg z%#{e&qDJ9@3mh!q&=K0@bXzGq2B<V+BN@P(nY+b9f6qP2WOI{O;Y|Dxey z#YNQ!!_JE|Ho_89kZHDJePMHHB-{wc;F*h*!AYX!eMbt*4yBZ1khdl%gNG!t?#F2N zRq(KJjq=r!=rkRtlc0i!FV=*lxlSUL^%L(Z>YnuLpo%Y&NL#Jb{;&Ar*TlP*@uEs2czDENx#H?e=ZM3XDovKeVX3dzct2>e!u7qx*!3Z3 zIPOl?JvVBu+aWLVd%lvFWbFTqnm5x&(vVE@ax<;}H1YQO;X=Pm9pq#Z`dc)J<47_6 zvXHn2-;t$4e+bBJ8XVRk;^1Y2h5Pal+;{Fy(LHx+uK&SQMPkO~g-E`TKac_>cWO9j z6fdRFRCj4mH|gY%C?`*fQ-!$ma%Is{Xxe);2$F72mN6b#WV_SXmy-j*-Ko0gK8>=Y za3CtLD6x-0Dn{N%bI~zKrMd1WJbsmxF`HJdSVDIFvMW^dmP#{iBii5T4^xjC@x+Ev;-?MD zB~2ySe^kRUMBYlKS?!RuLQK5UnI6Yr7m0!2NjS>HXN9=u%8-laFt8GF6ueBS`^)Ox0yU(zDIe>*~)5 zH#L~y*4Ac9@3pnnErUz7a8n>PAbTQlm%|H<0%2{+7mwmI#R)F#ot6s~k}JO2WQe3| z2C_$XjJjqj%YHvat*ol^%Ko3(_1>{nrTY@0q=V(s3z2u)&P2-%dEVCWxysXWZy6=V zY?&g&mOv`yWLywot(XUmDsga2fAPzf!01v;47o0Gl`|vHtPQueN06qb^j&MXt);oC z4S77u2&rjh#@(Ciqxf59+{<_gQt~Y~6bW%dbxMtod$3RaTvf~%B;LJYU{5*BLn+mM z-V7hYa1Rmd4)XpQob!NHwPTSrIFaw3zr(uYq12ppBUB;d2>Y*DEgt-1KcvZ};N+0t z3^N6LAVd88$6hKaE_s-P#ZWp(vM?8RMcPR*XL}%}QE{fg)sGpA#is3x`p0-s;4Su% zuP=E}cRIOXsf}l)0r_`Jo!j9#FvDR zstJR=c``#Ts|iDK?0k046WXxg(Lfeu&na`GRZEy8o-}2B6o!SJCSfuWOtAlX^idKa zH}u~a*JKi*vv&@(=Y)`IW4t+XPD(jw<2uf{f2W$0G7czK5Ixa36L$qlRVDy)PJ;O7 zniG)h11~8@tW=-U_TcAPyQ))aK?IcTG}l}Pt9AFT!H5QF;fPkXX*hKh{7|r}&48B9 zG{>xtz(I@0Qz23w3&`L+f#{hPXI318FgMx(M9qoo;MjxPA5%L3rFw>IG3~&i$DAEN zSgM_2?*K)m+L;}>G3;^04G+z}up>9tJgz9C_)}X17wcq$_uS)wl!@Q~EJeL*DKkRi zm&Zp06$cP$Y4zToG90ErOAE`SfU-waQHUl5Ry+~VM*s_~N5s|0jQ%pGV6`-|KIODC zwnjmqqeZ+~a$hOVK}Ds*-u?VUAcJHAPFJ(56*6Itrrf^O+{lWpiyN3H9vOlat=Se5 zid9fT>45CI-2tQs$>mR2>DqtB2%NF4>?BJW>Yi@i~) z%7af<%iK9gr}{|L{SE9@`59FGWToU3Iq$3YDxVbES$AJX8A#hF{b;XBGWf_VKrN-R zOP_SezL0+vriS0Tk-7RBXPcwNqOAquzU_m>pZDpulSo0uM&>Q`%|ciBk(-$7W^j0n zcx|6yeY%(>i^`|+OJWY?Cgv@aqd;i4>lHAn zM7llwY}yo%0RQq<=DHswj5Ni?+j`I@TUSPyzaY-lyp?(LeL*l>x|*nB=tiL!@{B3w zJ)^>R>0Y9W;Uu4*!FO0O^vBewVmLcA@L3h0q>y`ecWj5OXVng+(9ZqODU->^o>iH` z6xvACK#J|`?$rIt_e`OkL$RY0zUQ14S%is(47ctNrA@$s;p9HZT-&kW;igqs!MbC` zy={h*tNS2>!l1mWbaheD=peXLo+CG&yZyT75$4)OY_q1VU?CfU9|#^HW)T8E4h7XH zIw1HO2w-ku|24FT;1_qVOF@87XyVjXxY5!k<~Uqw1Bvr{}zTmh!It%>R4u>Vkh3r67Bvu89;f z#N&&8%v46gz9!-)BjH>V$wKrn3q{|Cm5nG@MRW9D{xhGfBzi%W_QdIfEuwl>v_tvf ze5$XZ1JtRB++Bt_D;#d<*eP;2KP3d&g;e$;Z>>ta^mVD&eK@gH87*=@d%?!25;_!m zANa~CW^E(#DwvF1k1r1^qbLa}m4rB8Rg@U|K|qG@l8|y_OS(tLFNsj1uw^+i{+E9c zNL9gzbjC7pjQ4$zB@TTMNEr$OAyJjC3CswH^bh-%E8@tdu0$?|GE35(tO9X4si3zR=VA#Dr{y1 z&V-d#NkJ zj1i`I{k_aBx3Hd~;PXU#6%+(4h4)Ft9~lHJ$Nu&gV?M7Gt3Izzq4Cg`jjpvAFZO(n z7)vgm-1bHcqs2?Ny(zl*z!z#;q?_Jy%5Ayu3w5w?Lrd3MyF6IWeW4B(6`!>Bt`1h( zm+D|85F1vV@?fp_QXQ-WI#{c_*ym@zbcn&px&S9D{*6@lML7OA5l zSov?27n5ZpIG?Am1ke9ld2Zc^+8gLjQF;^+@^(uj%PK^VZ-RX&^zKIf%8le4X2<$8 zMkvGRbZz{`K?ec9xg$Dx%LI|@6W;`rDO5sf={Dwigo*187l_Pnovc5Vly0LN7nJUl zC8axTCPwWtS;8~E4f^Szc!>jd%B>Pdf9Njm|5l|TWpU{)A{Le-ZX_(n@oz&?<;yzL zJyh?;E=Rk>Ovi%nRJzhj>)zUl2<+sp?^G$$OWx0Y#AH~HD5f~;k^H?%1AECGx}W$0 zlMwA_n}h}5E2;95Z?r8YRU41#;^6nebgB+|Db4v1T_;jTp^q4NEaBdDs zv>xj#ZaWt8_m$s~;eVJI)Kh$VEKhiU2>K~wf@<0>=6VX!H%yHEVW@pPsE)Ra+1Vyp zM|(VWJa%9x@jQ`uzB|Tq&v8X~A{~b(I}(20aV4pVBw%ow<#C9voOJWE$Adk{rALA5 zS>}2Z1dT-SKv(m`#2-pT<&SALZB*TQmYjP!y0W_UT#UArKPuW}QR_gAwgdQ1k&rBA zz1WeqVLvHZkwq*x++E1Z6+bCi0evVMo?2Eu`N^q=K@wi;YMEnxR!2idw{MWFKp#dK zq4eSPKL@2ELp|(m=K4@6vVudI;>gc^Y$j0r`nIFLWKj(6yJNj;PpG>jNwh)l5)+h> z{Ot*)3}hATuS8v!R`T-`sxT<4UU2dac%Qa0l`hxNUqbR0nJjz#otObBR>n4VYOG(J z0ung!Pl~>}vbEp;q7Hwr-7e&G+Xkj#$jD#=d*!Og^rlqBkGUxD)O(;@pyT(*@#ZN-B4o4Up7T-zw>=rJ) zsvYywAz!cVX2f@++m_ZW^pf|#{B+zer(W6Cb#9hr-3y3J75nKVZJ>&AR)=XEW>#1y z&^2uumX@Y_uHr6%rPY|?sduw*405gJ1eRi-g)|U+755fMg^)(k{w6B_N>A4MV**H_ zbZQ!{>ssy{1}o9S)M-egm24)ibafi6GtnQbXwINRGIE!&J5Srp^%M&V*B#2xuO}@iYu&P zUZ(D^=(Nl`=|V{k1T9=2p-WpQb-osz<-X~(Z+8*1vaMIV*td@W$suwxbkA1qdXUI9 zYh`I|%H-*yW_N~lK{wRQCMB{Wdj%PwY^$?^3|awh&qP;nf1)jK8MK1?36fz>nKkAl zihhoD1NqzRZZ#)&o9YAMgUjZ|3b*RWH75uSpd-hXLDWo%$RPyKA26jgDpz7&esTzY)xD z%^k{0>`5VJT5oTKk8UB#z`F#K1}*;x4E@b`*28*XD63961BkJIeO;Bzm|~?3W0R{? zfJgmBw>JSC^HtB*4`|ZYi$d$6l*UL|6+)h*b`GgI{>vrIz%#{9fWd9mbzO-zJL6U zbnCCxOoimK#x(?KeB3~xTUgQRJzYt+%7?Rn|8im?{Dk2yygs@>GO;8|LJILO&ANAF zln#oJhkJvP4jCbj_z!fXpJvk`gXWQ^qGJ)dr7i;*kndX8SZ17QTK~{lj`hm|wT%Pq z&7)#gEs6n@nvunBeBNUMz91{VNDES`&R%9&doH}OlH(kIdrj|AEX-8G;c5Is>mAD46Ghc zY~&>i`Ao*j9SNpxAUY5X%yG?Q#zm$z!vKZ99?53fc&Pj|$6G1!$nw*#I^j7EJgJL- z2C>7Lt|iQvWm^6+=#Z(S*boG&l&hio)0sF3&RsJU@aPtpBFDa!V*POxtCn}DWff`> zj8L+3D}|hogc{64_wHmJst(TLAZug|8)&r?-~teUYEGEya!qm_hV{4Z*cDKbZhct8 z2HB**Db~U`S40Z=#M-hhNEv%NyE=6&P$ugM&92MfoDH-7aXK4nm(y^22t~PESxzHw z(k{w5cg3wywM^C1sMdqmP4QI)Ykdre%*#p%bV@xt57e^Hc_y7|6ni$nSHskk%rPrk z+RwNCwwUExN5(S8y{C&s8yISXXQDgY$g7y^8g!px^&7_~qq0x_2Dy<}F}uDi-N;Q; zazUo|Bt-x%aQ`@X8>GwNCT?b~Ex>iA^}{$u7c>YLxrv(@d>0fvl$(fLK}VhRyYWCl zIV-qhH!|04Kr!6ee|hsh7epqSjQN;#8TeJ8{45+mRwp)7@f z!C?f|k=NRFWa2mZMkr7zCP?4NE>Jmg=JTca65N15D+1(oni#i}C8jw|*oU1gqq|&= zbfoasCZ1pi4Fj5?fH`=mTJ%^94+EaZ2oJFiF4P|8dK$!cs$R!0fn2IR4lAWgg{L<0 ztWw1Cp3OG&7@d680%B|_4dk!+!YqT|1`gArhtk%^7Lk>Dy(Sz272SS~<0ub;JAjLv7 zG454|g=k``SBZtQ!NM%v^Cok>g{j6`_fKbIrm3m2Fyu{QA>BpJ);;g2r&G9W*V>Gi zjPZ9W)PQUZc!%NIB0XiyCfe{E$T0G(vu3f}km3P8g9rGo_>3k7{n_C&njq}Y#Amu} zkWG9>O|lp+@+~u1f9x$C6?_H`d^en??3SDFG=bwUtguMlhRLQ_2oHe2tU z0T~>Nr*kMho?=@Jp!t~c0<Ejqhr1G%@HCXIs$3+@H|4&~1H#*n<~N zMMf`c*DO|SOFKSeIry%YgC<1qQtwM;KZ}ptRlI)$$1BP$u%uxX~kEp=YC{(-H<4bo&eCz{8Z zyGlW&_@k)=BTq8+ILq$mK!N%=tL$$Nh4}x-+yiYO2|AkDP7{cKWH~{niJ?ETssZ-U z(P;j}+?6&|!&o#GWAivYl>CWh^>v`Kb43sulDm8Ao=doEJp$k%R^wb|U$$`f#E?rk z_LDB6_asi@QC2Tp`gscX*`}%u#Aoa$zDJvw_EMgdBj*7WI4#FLrZl7ZL;;?4b=IGNKzIRC`V&ozyOP`1 z7){K2CAY0{KAi`=0_$vz0Rb9-yuN-U6==(@Q9NYIHWD66Sm%?f!mBa+>W+P^@D=>P zXT=XRf%0l@A1gG0@oKIsLxmkC~DLJIKE$zdLa)z|UFOtoh~0gTrXjU)#7v>ri^R@B|E zD3J;3yMu%t&^i*>Z$-ZZsOh&Ul?Od z-E%8<{T^d}Wj!>X&9w#4M4wwZf+$iZCJEr}oDVuxOs|MVH_(oL(I#lWohK=S2Pkmf z&I{BzMH8go&Ib(i;l2;101&yrA|9U&uw@HCAO_SyOyYW{BME@Yv9=_j3B-4DNWvPd zuTb~g!(I1cea#kIz?zzs6HtgD_i)^{BWWq5^=+lS?J6OlCPg1iicV^y(FBIA&PJn& zNw?BQpN~n4bkF@NC3y}_nql2@8V))3A=5G!vT}PLih$vM?(O5F`dJatfNY`@x!X&} zXDl7x6%}ZLifzu)(FBfd&LKb(RBWTAQ+l{qW*(ox(rc~Cg-9IORp&%2Z5s1h7td#j zYwe_bG0-3zsq{@Tk%DYwXMF<*rUytd0Zoj1*wHs=V)}<2eN#+Ziri&qeFF&40OVaO zj|tkctF3R)1fEA@c%W~P>Lff)V57KEER_sE4mmXAt{6F_R(25@vR=hxy^s`rnk(yt zHq+N4O=?@OV(R?_caN}1A~S+!p3?;CCwR}HPE&Rsews8v#iVU^bN6H$NEsV6mH!MN zhVJIQ#yL<7-OVRXqM>Wu#iUpEaCeOjO~6<*)tLbhWB2fa(;O(q?%^Xx+0&x$liWSk z26|Mpm(#@1CwcD)P7_0)J%iU`y+R$zoi*}LI#Mr&Oc#PA;*u8xG1bZx! zK>N7c0eUeMP1Ej6W%7NzaFo-;(0#miv^^BrpQpI{bQ_pB7-P|PR!c?Rr(&y3#Mr0! z$QmEz33}J^a067aUc!=9qVoQiLybbNFG5~>q1EkId}zzAw#q;gc>Ws01C{Z9S1O}KstkY}a%jf)W8{z$ zc%RTv;lEV({8PPb9jR{3hv|oRtiAK`9Py#&y00Z|WGm28p!p{WAf<6ii5nku#SK8P z41m=1Xky$4&h%(v`VX8{loD+pb;S)pfMzXV4j$shM=?CajgMk@z>Onaaidgn10V+t z&3Gh+hPZKr(5wVE%5-`Q`wQe?nYu%5t?vt~CS8pB2vYaYgju;Q)@8th7qY!2JIaV1 zUv$L|K(G#g)cj~-+!xOLXkz{^oMn^|ad<}C*`5FbGyvJcfwt^w3kRCO^HmHF*zt8& z>?o7$0LUSSX8bxv4zc5FLPI~RQbsL2+{Mjy)H!A88WjhTy|~cMA)o`OLJtQUIjrCC z#6o!n0hQx>^_EU`8JUppPIjvCRee@!2Tfr7&awVz0^@g%Q;jAte&;yVWn@^6o$OTO zD=^}-gOS|VV=;_mZ;mp~JId`?@}aht4*>Vj_H2nhj0h_=($z6EuP1CyvAk-5@BVQr-#jsXN{5cd&V} zV)TeMf&2uwJ!%XG@)P7y;~gu_?FIG|3MCdS?DED24_ceBHp z0Ie4f&^vP&5TF6b&JUn1yV@K^6L@YRJY+Td>7F|@*WI97y@0VvhP1fv&}<9Yk4V0= zE0O`hTmUJO(Zskr9g@++RChWg_al<;>WXAQfCeC2DA1N&ZIaOhp1TN7A9WF8tL8#& z9~VetSKnq%uf_Fv^=nAd&6GDIwraQnN>5Z=w1)dMKHKPP)-*NY_sr_mZ}QdIjW+de zz`CZ1q1;cZjmChC`w&|=O;CBCmLao71ch+krx`LwMop-y`?Mi4B%vl~zE2Cy^x^s> zn!xmc#)lX^t-2OCxoOQTL75(cNuVdyo(30j(bq5iY=Q#O16s)-DjA~*Al}@cjwdy< zn^{Q|2Tkyh=8>sE>Lt6S%MgK@!10jQca%*GT05e|T4C9%gUp4kX?H$#&-H) z(Z{q5nK{Q=$jm*a1xMTb0N3$gpXi_`Mo}DO%67--@Bqi|7#(ETb`u@=r5m86_)5bo zqTbfgb6KzG_LC{w8^h5J}ky-v#uEA#SBkt+0M>;F~ieZ!4P`}irt>pYGi0ioiW4H+W0zO ze>nq!wf)4)VkKa?Z7eCu3<}luYn}`nQ6li}*SeQFO(5E@^&d^X4e+8^e?a4tjR97; zja7|w&H~+=J)n7HPLO&5#{mu3t<_2K0mlJt&_o}8&IVA_+h5Z7eB8LR*7im8_jwyD zi(;b7r!Q$98LU%ZV0uaGS#4uV0;ZR=+IjS2K!Dv!v zN9N(FFEG8L<;(b+n!xmmHfA0a9bv+ciM+1ydAJvBt?h^8&S&kcG|C~Wn7^)hWQaw5 zf$4QE&)LirV0vAvnQOBeKR@zT9IMY>8OLfWtG^Xvbt(|O6=QWO5WN*+HGZ$;9mVR0 kSF)J;?U-%3)v;Y7A diff --git a/src/dfdaemon.v2.rs b/src/dfdaemon.v2.rs index 0455968..915c3a2 100644 --- a/src/dfdaemon.v2.rs +++ b/src/dfdaemon.v2.rs @@ -153,7 +153,7 @@ pub struct DownloadCacheTaskRequest { pub task_id: ::prost::alloc::string::String, /// Persistent represents whether the cache task is persistent. /// If the cache task is persistent, the cache peer will - /// not be deleted when dfdamon runs garbage collection. + /// not be deleted when dfdaemon runs garbage collection. #[prost(bool, tag = "3")] pub persistent: bool, /// Tag is used to distinguish different cache tasks. diff --git a/src/scheduler.v2.rs b/src/scheduler.v2.rs index e16de09..7f1571a 100644 --- a/src/scheduler.v2.rs +++ b/src/scheduler.v2.rs @@ -272,6 +272,15 @@ pub struct DeletePeerRequest { #[prost(string, tag = "3")] pub peer_id: ::prost::alloc::string::String, } +/// AnnouncePeersRequest represents request of AnnouncePeers. +#[derive(serde::Serialize, serde::Deserialize)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AnnouncePeersRequest { + /// Peers information. + #[prost(message, repeated, tag = "1")] + pub peers: ::prost::alloc::vec::Vec, +} /// StatTaskRequest represents request of StatTask. #[derive(serde::Serialize, serde::Deserialize)] #[allow(clippy::derive_partial_eq_without_eq)] @@ -824,6 +833,34 @@ pub mod scheduler_client { .insert(GrpcMethod::new("scheduler.v2.Scheduler", "DeletePeer")); self.inner.unary(req, path, codec).await } + /// A host announces that it has the announced peers to scheduler at startup. + pub async fn announce_peers( + &mut self, + request: impl tonic::IntoStreamingRequest< + Message = super::AnnouncePeersRequest, + >, + ) -> std::result::Result< + tonic::Response>, + tonic::Status, + > { + self.inner + .ready() + .await + .map_err(|e| { + tonic::Status::new( + tonic::Code::Unknown, + format!("Service was not ready: {}", e.into()), + ) + })?; + let codec = tonic::codec::ProstCodec::default(); + let path = http::uri::PathAndQuery::from_static( + "/scheduler.v2.Scheduler/AnnouncePeers", + ); + let mut req = request.into_streaming_request(); + req.extensions_mut() + .insert(GrpcMethod::new("scheduler.v2.Scheduler", "AnnouncePeers")); + self.inner.streaming(req, path, codec).await + } /// Checks information of task. pub async fn stat_task( &mut self, @@ -1185,6 +1222,20 @@ pub mod scheduler_server { &self, request: tonic::Request, ) -> std::result::Result, tonic::Status>; + /// Server streaming response type for the AnnouncePeers method. + type AnnouncePeersStream: futures_core::Stream< + Item = std::result::Result<(), tonic::Status>, + > + + Send + + 'static; + /// A host announces that it has the announced peers to scheduler at startup. + async fn announce_peers( + &self, + request: tonic::Request>, + ) -> std::result::Result< + tonic::Response, + tonic::Status, + >; /// Checks information of task. async fn stat_task( &self, @@ -1498,6 +1549,55 @@ pub mod scheduler_server { }; Box::pin(fut) } + "/scheduler.v2.Scheduler/AnnouncePeers" => { + #[allow(non_camel_case_types)] + struct AnnouncePeersSvc(pub Arc); + impl< + T: Scheduler, + > tonic::server::StreamingService + for AnnouncePeersSvc { + type Response = (); + type ResponseStream = T::AnnouncePeersStream; + type Future = BoxFuture< + tonic::Response, + tonic::Status, + >; + fn call( + &mut self, + request: tonic::Request< + tonic::Streaming, + >, + ) -> Self::Future { + let inner = Arc::clone(&self.0); + let fut = async move { + (*inner).announce_peers(request).await + }; + Box::pin(fut) + } + } + let accept_compression_encodings = self.accept_compression_encodings; + let send_compression_encodings = self.send_compression_encodings; + let max_decoding_message_size = self.max_decoding_message_size; + let max_encoding_message_size = self.max_encoding_message_size; + let inner = self.inner.clone(); + let fut = async move { + let inner = inner.0; + let method = AnnouncePeersSvc(inner); + let codec = tonic::codec::ProstCodec::default(); + let mut grpc = tonic::server::Grpc::new(codec) + .apply_compression_config( + accept_compression_encodings, + send_compression_encodings, + ) + .apply_max_message_size_config( + max_decoding_message_size, + max_encoding_message_size, + ); + let res = grpc.streaming(method, req).await; + Ok(res) + }; + Box::pin(fut) + } "/scheduler.v2.Scheduler/StatTask" => { #[allow(non_camel_case_types)] struct StatTaskSvc(pub Arc);