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 5fa5285..6c97490 100644 Binary files a/src/descriptor.bin and b/src/descriptor.bin differ 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);