From cab5ed6d2e2572969bbd8486d7b9311eac484ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8A=A0=E8=8F=B2?= Date: Mon, 28 Jun 2021 10:24:41 +0800 Subject: [PATCH] Feature/dfget param (#373) * update image for arch Signed-off-by: zuozheng.hzz * feature: adjust dfget grpc param Signed-off-by: zuozheng.hzz --- client/daemon/service/manager.go | 4 +- client/daemon/service/manager_test.go | 4 +- client/dfget/dfget.go | 10 +- docs/en/images/arch.png | Bin 156704 -> 145668 bytes go.mod | 3 +- go.sum | 2 - hack/protoc.sh | 10 +- internal/rpc/base/base.pb.go | 302 +++++++------- internal/rpc/base/base.proto | 20 +- internal/rpc/cdnsystem/cdnsystem.pb.go | 138 +++---- internal/rpc/cdnsystem/cdnsystem_grpc.pb.go | 3 +- internal/rpc/dfdaemon/client/client.go | 2 +- internal/rpc/dfdaemon/dfdaemon.pb.go | 223 ++++++----- internal/rpc/dfdaemon/dfdaemon.proto | 31 +- internal/rpc/dfdaemon/dfdaemon_grpc.pb.go | 3 +- internal/rpc/manager/manager.pb.go | 380 +++++++++--------- internal/rpc/manager/manager_grpc.pb.go | 3 +- internal/rpc/scheduler/scheduler.pb.go | 422 ++++++++++---------- internal/rpc/scheduler/scheduler_grpc.pb.go | 3 +- 19 files changed, 801 insertions(+), 762 deletions(-) diff --git a/client/daemon/service/manager.go b/client/daemon/service/manager.go index 29851d8cc..f223771c4 100644 --- a/client/daemon/service/manager.go +++ b/client/daemon/service/manager.go @@ -140,8 +140,8 @@ func (m *manager) Download(ctx context.Context, peerTask := &peer.FilePeerTaskRequest{ PeerTaskRequest: scheduler.PeerTaskRequest{ Url: req.Url, - Filter: req.Filter, - BizId: req.BizId, + Filter: req.UrlMeta.Filter, + BizId: req.UrlMeta.Tag, UrlMeta: req.UrlMeta, PeerId: clientutil.GenPeerID(m.peerHost), PeerHost: m.peerHost, diff --git a/client/daemon/service/manager_test.go b/client/daemon/service/manager_test.go index e676d2f37..3ec09224d 100644 --- a/client/daemon/service/manager_test.go +++ b/client/daemon/service/manager_test.go @@ -101,7 +101,9 @@ func TestDownloadManager_ServeDownload(t *testing.T) { request := &dfdaemongrpc.DownRequest{ Url: "http://localhost/test", Output: "./testdata/file1", - BizId: "unit test", + UrlMeta: &base.UrlMeta{ + Tag: "unit test", + }, } down, err := client.Download(context.Background(), request) assert.Nil(err, "client download grpc call should be ok") diff --git a/client/dfget/dfget.go b/client/dfget/dfget.go index b468f343f..56c0cd562 100644 --- a/client/dfget/dfget.go +++ b/client/dfget/dfget.go @@ -71,12 +71,12 @@ func Download(cfg *config.DfgetConfig, client dfclient.DaemonClient) error { Digest: cfg.Digest, Range: hdr[headers.Range], Header: hdr, + Filter: filter, }, - Output: output, - BizId: cfg.CallSystem, - Filter: filter, - Uid: int64(basic.UserID), - Gid: int64(basic.UserGroup), + Output: output, + Callsystem: cfg.CallSystem, + Uid: int64(basic.UserID), + Gid: int64(basic.UserGroup), } var ( start = time.Now() diff --git a/docs/en/images/arch.png b/docs/en/images/arch.png index d5f8fd4f3b165fe0d92f2753291b930488b9c9ba..3c8a2398b66f691878729002426f2f9519d368e6 100644 GIT binary patch literal 145668 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 L(R=B4)Svu65?vz5 literal 156704 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

=PTEKflTCV};x0nUlykTUlzS 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

kYi^{R{`tP5YF zx+kX}eNCYQz#te7)07l4RP=qC4_t`L%loXC+Ia966~`||nv)>!#v9*OLOug9Ta|cj z>NS;!cm(pS>-Ih*1G|Ic)8%d#x&K`(GkdQLQEFEp;T94Cw` zH9O3!;yuy-9T~7AX%)VKq7e6r6_Bji>PHo`12r-epe&!sts{ZY2494)zS8{scW1}e z{Kp9sm!XUKt-Hk?LlI0AOzX8WH*~+f%Oa=lT!#fR+baiPf4QjJzD)+xLm7j-jsV0h zSo`F3O-902IfTmwkV=X;GUCsGI7Z!Wg0M~1$Vv{<24=Bj#_G^=Gh0x3^yv zu<4bygCwCRpo71kpXm59TET>clWE$hfN? z;#LXxpl&CKq&p-Yu<^L@*k^f(?fC&Qm_rjH*Y3bJ3RD41LRLjje|6~kGckv8Q#6PC zeM%;8DfAd~iLu#cFIC5?yba#4z)VGHNNGW+M0g9(u(r)2Fl|!1h7SN>>UPk zEn@5Me+{O?i7y_L+OLq=E+FFa>A!VA8^f;iaLm2GM2O2P%I*?9tg?Af4^}Xnsvcx6 zu(G_a?3#8G)5?#ogh62?Uab*Hz90!DgJj;FGW3={N8r`D2MqR2Zb(w#E$ zLxiSAS;^I5R$!I*=AhtD@tRd+fI!#ok6ZIuvCl7)WZRMtG(tZB z4|NUdS8E))3tCkTda_ewdB>JwHgxy3Mcb*F7kq2}d~5W#JmH&{fdhT&I^$?$Y_660MGj4YKeTB2<+@0B7r)M_x zA2n_2k4#B!t$W5#v z3}qKkm!<|{M6H~_`rrb?>6X2#RCl8bw11!PY@}+VgZtC(3o*vXFs|P{q*!T^voOX; zcP8;16b~x92UW=yrWl^Qw%G46_iA6sQMGQO$st|_#ts%4JzgFC(@~jDuls32A{F#F zonrejA($CpR;@a{O8|36gR(<%rksL!if0C8@=5P z;okxY2>D2T{tG?B9FHJK2=7u&_RDwr1C=9xWrXwp=Z5qzzv|UU3lME}DR}Sq{pnvG zi%b}Xf{`5ApkX)pxBoro1uA}i>IhUL`LDsSfe1(B5Yk)VKYmM5A8_wTj|`L>`S%+_ z=}D;6V#mk1t?=>llVN25;Tp^D`~TMsp$N}jD8gf)_M89ow@E}k&gllD`rLzxj_|)8 z3(C$*6Vz75{U@|%`Tq;-pOy6gV1dOMk5C;s!#3bn}k+fjFgSG`jZ6kM?qHgeC9a=@Bafcc^kX{ diff --git a/go.mod b/go.mod index 5ea575e6d..15a03c98b 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,6 @@ go 1.15 require ( github.com/HuKeping/rbtree v0.0.0-20210106022122-8ad34838eb2b - github.com/Jeffail/tunny v0.1.4 github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 github.com/alicebob/miniredis/v2 v2.14.5 github.com/aliyun/aliyun-oss-go-sdk v2.1.6+incompatible @@ -51,7 +50,7 @@ require ( go.opentelemetry.io/otel/trace v0.20.0 go.uber.org/atomic v1.6.0 go.uber.org/zap v1.16.0 - golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 + golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c golang.org/x/sys v0.0.0-20210309074719-68d13333faf2 // indirect golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf diff --git a/go.sum b/go.sum index 648890e5b..6235acfd8 100644 --- a/go.sum +++ b/go.sum @@ -17,8 +17,6 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/HuKeping/rbtree v0.0.0-20210106022122-8ad34838eb2b h1:zDhQxG7rm8RLgLgi6NpfaVFsop+zxw5hwhbzHr624us= github.com/HuKeping/rbtree v0.0.0-20210106022122-8ad34838eb2b/go.mod h1:bODsl3NElqKlgf1UkBLj67fYmY5DsqkKrrYm/kMT/6Y= -github.com/Jeffail/tunny v0.1.4 h1:chtpdz+nUtaYQeCKlNBg6GycFF/kGVHOr6A3cmzTJXs= -github.com/Jeffail/tunny v0.1.4/go.mod h1:P8xAx4XQl0xsuhjX1DtfaMDCSuavzdb2rwbd0lk+fvo= github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= diff --git a/hack/protoc.sh b/hack/protoc.sh index b61181777..23da8a4da 100755 --- a/hack/protoc.sh +++ b/hack/protoc.sh @@ -6,11 +6,11 @@ echo "work dir:$SRC" if protoc -I="$SRC" \ --go_out "$SRC" --go_opt paths=source_relative \ --go-grpc_out "$SRC" --go-grpc_opt paths=source_relative \ - "$SRC"/pkg/rpc/base/*.proto \ - "$SRC"/pkg/rpc/cdnsystem/*.proto \ - "$SRC"/pkg/rpc/dfdaemon/*.proto \ - "$SRC"/pkg/rpc/scheduler/*.proto \ - "$SRC"/pkg/rpc/manager/*.proto; then + "$SRC"/internal/rpc/base/*.proto \ + "$SRC"/internal/rpc/cdnsystem/*.proto \ + "$SRC"/internal/rpc/dfdaemon/*.proto \ + "$SRC"/internal/rpc/scheduler/*.proto \ + "$SRC"/internal/rpc/manager/*.proto; then echo "generate grpc code success" if cd "$SRC" && go mod tidy; then echo "go mod tidy success" diff --git a/internal/rpc/base/base.pb.go b/internal/rpc/base/base.pb.go index 330865380..b3146e278 100644 --- a/internal/rpc/base/base.pb.go +++ b/internal/rpc/base/base.pb.go @@ -17,17 +17,16 @@ // versions: // protoc-gen-go v1.25.0 // protoc v3.15.8 -// source: pkg/rpc/base/base.proto +// source: internal/rpc/base/base.proto package base import ( - reflect "reflect" - sync "sync" - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) const ( @@ -68,11 +67,11 @@ func (x Code) String() string { } func (Code) Descriptor() protoreflect.EnumDescriptor { - return file_pkg_rpc_base_base_proto_enumTypes[0].Descriptor() + return file_internal_rpc_base_base_proto_enumTypes[0].Descriptor() } func (Code) Type() protoreflect.EnumType { - return &file_pkg_rpc_base_base_proto_enumTypes[0] + return &file_internal_rpc_base_base_proto_enumTypes[0] } func (x Code) Number() protoreflect.EnumNumber { @@ -81,7 +80,7 @@ func (x Code) Number() protoreflect.EnumNumber { // Deprecated: Use Code.Descriptor instead. func (Code) EnumDescriptor() ([]byte, []int) { - return file_pkg_rpc_base_base_proto_rawDescGZIP(), []int{0} + return file_internal_rpc_base_base_proto_rawDescGZIP(), []int{0} } type PieceStyle int32 @@ -111,11 +110,11 @@ func (x PieceStyle) String() string { } func (PieceStyle) Descriptor() protoreflect.EnumDescriptor { - return file_pkg_rpc_base_base_proto_enumTypes[1].Descriptor() + return file_internal_rpc_base_base_proto_enumTypes[1].Descriptor() } func (PieceStyle) Type() protoreflect.EnumType { - return &file_pkg_rpc_base_base_proto_enumTypes[1] + return &file_internal_rpc_base_base_proto_enumTypes[1] } func (x PieceStyle) Number() protoreflect.EnumNumber { @@ -124,7 +123,7 @@ func (x PieceStyle) Number() protoreflect.EnumNumber { // Deprecated: Use PieceStyle.Descriptor instead. func (PieceStyle) EnumDescriptor() ([]byte, []int) { - return file_pkg_rpc_base_base_proto_rawDescGZIP(), []int{1} + return file_internal_rpc_base_base_proto_rawDescGZIP(), []int{1} } type SizeScope int32 @@ -163,11 +162,11 @@ func (x SizeScope) String() string { } func (SizeScope) Descriptor() protoreflect.EnumDescriptor { - return file_pkg_rpc_base_base_proto_enumTypes[2].Descriptor() + return file_internal_rpc_base_base_proto_enumTypes[2].Descriptor() } func (SizeScope) Type() protoreflect.EnumType { - return &file_pkg_rpc_base_base_proto_enumTypes[2] + return &file_internal_rpc_base_base_proto_enumTypes[2] } func (x SizeScope) Number() protoreflect.EnumNumber { @@ -176,7 +175,7 @@ func (x SizeScope) Number() protoreflect.EnumNumber { // Deprecated: Use SizeScope.Descriptor instead. func (SizeScope) EnumDescriptor() ([]byte, []int) { - return file_pkg_rpc_base_base_proto_rawDescGZIP(), []int{2} + return file_internal_rpc_base_base_proto_rawDescGZIP(), []int{2} } type GrpcDfError struct { @@ -191,7 +190,7 @@ type GrpcDfError struct { func (x *GrpcDfError) Reset() { *x = GrpcDfError{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_base_base_proto_msgTypes[0] + mi := &file_internal_rpc_base_base_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -204,7 +203,7 @@ func (x *GrpcDfError) String() string { func (*GrpcDfError) ProtoMessage() {} func (x *GrpcDfError) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_base_base_proto_msgTypes[0] + mi := &file_internal_rpc_base_base_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -217,7 +216,7 @@ func (x *GrpcDfError) ProtoReflect() protoreflect.Message { // Deprecated: Use GrpcDfError.ProtoReflect.Descriptor instead. func (*GrpcDfError) Descriptor() ([]byte, []int) { - return file_pkg_rpc_base_base_proto_rawDescGZIP(), []int{0} + return file_internal_rpc_base_base_proto_rawDescGZIP(), []int{0} } func (x *GrpcDfError) GetCode() Code { @@ -234,28 +233,28 @@ func (x *GrpcDfError) GetMessage() string { return "" } +// UrlMeta describes url meta info. type UrlMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // format:md5:xxx or sha256:yyy, used as follows: - // - // 1. check whether downloaded content is consistent with the source file - // - // 2. generate different task ids for same url + // digest checks integrity of url content, for example md5:xxx or sha256:yyy Digest string `protobuf:"bytes,1,opt,name=digest,proto3" json:"digest,omitempty"` - // downloaded range for url - Range string `protobuf:"bytes,2,opt,name=range,proto3" json:"range,omitempty"` - // other attributes for url - // eg, when url is http protocol, header is used as http header - Header map[string]string `protobuf:"bytes,3,rep,name=header,proto3" json:"header,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // url tag identifies different task for same url, conflict with digest + Tag string `protobuf:"bytes,2,opt,name=tag,proto3" json:"tag,omitempty"` + // content range for url + Range string `protobuf:"bytes,3,opt,name=range,proto3" json:"range,omitempty"` + // filter url used to generate task id + Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` + // other url header infos + Header map[string]string `protobuf:"bytes,5,rep,name=header,proto3" json:"header,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *UrlMeta) Reset() { *x = UrlMeta{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_base_base_proto_msgTypes[1] + mi := &file_internal_rpc_base_base_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -268,7 +267,7 @@ func (x *UrlMeta) String() string { func (*UrlMeta) ProtoMessage() {} func (x *UrlMeta) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_base_base_proto_msgTypes[1] + mi := &file_internal_rpc_base_base_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -281,7 +280,7 @@ func (x *UrlMeta) ProtoReflect() protoreflect.Message { // Deprecated: Use UrlMeta.ProtoReflect.Descriptor instead. func (*UrlMeta) Descriptor() ([]byte, []int) { - return file_pkg_rpc_base_base_proto_rawDescGZIP(), []int{1} + return file_internal_rpc_base_base_proto_rawDescGZIP(), []int{1} } func (x *UrlMeta) GetDigest() string { @@ -291,6 +290,13 @@ func (x *UrlMeta) GetDigest() string { return "" } +func (x *UrlMeta) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + func (x *UrlMeta) GetRange() string { if x != nil { return x.Range @@ -298,6 +304,13 @@ func (x *UrlMeta) GetRange() string { return "" } +func (x *UrlMeta) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + func (x *UrlMeta) GetHeader() map[string]string { if x != nil { return x.Header @@ -321,7 +334,7 @@ type HostLoad struct { func (x *HostLoad) Reset() { *x = HostLoad{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_base_base_proto_msgTypes[2] + mi := &file_internal_rpc_base_base_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -334,7 +347,7 @@ func (x *HostLoad) String() string { func (*HostLoad) ProtoMessage() {} func (x *HostLoad) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_base_base_proto_msgTypes[2] + mi := &file_internal_rpc_base_base_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -347,7 +360,7 @@ func (x *HostLoad) ProtoReflect() protoreflect.Message { // Deprecated: Use HostLoad.ProtoReflect.Descriptor instead. func (*HostLoad) Descriptor() ([]byte, []int) { - return file_pkg_rpc_base_base_proto_rawDescGZIP(), []int{2} + return file_internal_rpc_base_base_proto_rawDescGZIP(), []int{2} } func (x *HostLoad) GetCpuRatio() float32 { @@ -388,7 +401,7 @@ type PieceTaskRequest struct { func (x *PieceTaskRequest) Reset() { *x = PieceTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_base_base_proto_msgTypes[3] + mi := &file_internal_rpc_base_base_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -401,7 +414,7 @@ func (x *PieceTaskRequest) String() string { func (*PieceTaskRequest) ProtoMessage() {} func (x *PieceTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_base_base_proto_msgTypes[3] + mi := &file_internal_rpc_base_base_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -414,7 +427,7 @@ func (x *PieceTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PieceTaskRequest.ProtoReflect.Descriptor instead. func (*PieceTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_rpc_base_base_proto_rawDescGZIP(), []int{3} + return file_internal_rpc_base_base_proto_rawDescGZIP(), []int{3} } func (x *PieceTaskRequest) GetTaskId() string { @@ -468,7 +481,7 @@ type PieceInfo struct { func (x *PieceInfo) Reset() { *x = PieceInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_base_base_proto_msgTypes[4] + mi := &file_internal_rpc_base_base_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -481,7 +494,7 @@ func (x *PieceInfo) String() string { func (*PieceInfo) ProtoMessage() {} func (x *PieceInfo) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_base_base_proto_msgTypes[4] + mi := &file_internal_rpc_base_base_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -494,7 +507,7 @@ func (x *PieceInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use PieceInfo.ProtoReflect.Descriptor instead. func (*PieceInfo) Descriptor() ([]byte, []int) { - return file_pkg_rpc_base_base_proto_rawDescGZIP(), []int{4} + return file_internal_rpc_base_base_proto_rawDescGZIP(), []int{4} } func (x *PieceInfo) GetPieceNum() int32 { @@ -559,7 +572,7 @@ type PiecePacket struct { func (x *PiecePacket) Reset() { *x = PiecePacket{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_base_base_proto_msgTypes[5] + mi := &file_internal_rpc_base_base_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -572,7 +585,7 @@ func (x *PiecePacket) String() string { func (*PiecePacket) ProtoMessage() {} func (x *PiecePacket) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_base_base_proto_msgTypes[5] + mi := &file_internal_rpc_base_base_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -585,7 +598,7 @@ func (x *PiecePacket) ProtoReflect() protoreflect.Message { // Deprecated: Use PiecePacket.ProtoReflect.Descriptor instead. func (*PiecePacket) Descriptor() ([]byte, []int) { - return file_pkg_rpc_base_base_proto_rawDescGZIP(), []int{5} + return file_internal_rpc_base_base_proto_rawDescGZIP(), []int{5} } func (x *PiecePacket) GetTaskId() string { @@ -637,98 +650,101 @@ func (x *PiecePacket) GetPieceMd5Sign() string { return "" } -var File_pkg_rpc_base_base_proto protoreflect.FileDescriptor +var File_internal_rpc_base_base_proto protoreflect.FileDescriptor -var file_pkg_rpc_base_base_proto_rawDesc = []byte{ - 0x0a, 0x17, 0x70, 0x6b, 0x67, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x62, - 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x62, 0x61, 0x73, 0x65, 0x22, - 0x47, 0x0a, 0x0b, 0x47, 0x72, 0x70, 0x63, 0x44, 0x66, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1e, - 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x62, - 0x61, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x07, 0x55, 0x72, 0x6c, - 0x4d, 0x65, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0x12, 0x31, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x55, 0x72, 0x6c, 0x4d, 0x65, 0x74, - 0x61, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0x39, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x63, 0x0a, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x1b, 0x0a, 0x09, - 0x63, 0x70, 0x75, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x08, 0x63, 0x70, 0x75, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, - 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x65, - 0x6d, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x64, 0x69, 0x73, 0x6b, - 0x52, 0x61, 0x74, 0x69, 0x6f, 0x22, 0x90, 0x01, 0x0a, 0x10, 0x50, 0x69, 0x65, 0x63, 0x65, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, - 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, - 0x6b, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x72, 0x63, 0x50, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, - 0x64, 0x73, 0x74, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, - 0x73, 0x74, 0x50, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6e, - 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4e, - 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xdb, 0x01, 0x0a, 0x09, 0x50, 0x69, 0x65, - 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, - 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x69, 0x65, 0x63, 0x65, - 0x4e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6d, 0x64, 0x35, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4d, 0x64, 0x35, - 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x12, 0x31, 0x0a, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x79, - 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, - 0x50, 0x69, 0x65, 0x63, 0x65, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x0a, 0x70, 0x69, 0x65, 0x63, - 0x65, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x22, 0xfa, 0x01, 0x0a, 0x0b, 0x50, 0x69, 0x65, 0x63, 0x65, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, - 0x17, 0x0a, 0x07, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x64, 0x73, 0x74, 0x50, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x73, 0x74, 0x41, - 0x64, 0x64, 0x72, 0x12, 0x30, 0x0a, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, - 0x6f, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, - 0x50, 0x69, 0x65, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x70, 0x69, 0x65, 0x63, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, - 0x69, 0x65, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x50, 0x69, 0x65, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x24, 0x0a, - 0x0e, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6d, 0x64, 0x35, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4d, 0x64, 0x35, 0x53, - 0x69, 0x67, 0x6e, 0x2a, 0x19, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x58, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x2a, 0x17, - 0x0a, 0x0a, 0x50, 0x69, 0x65, 0x63, 0x65, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x09, 0x0a, 0x05, - 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x10, 0x00, 0x2a, 0x2c, 0x0a, 0x09, 0x53, 0x69, 0x7a, 0x65, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x54, - 0x49, 0x4e, 0x59, 0x10, 0x02, 0x42, 0x22, 0x5a, 0x20, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, - 0x64, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, +var file_internal_rpc_base_base_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x62, + 0x61, 0x73, 0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, + 0x62, 0x61, 0x73, 0x65, 0x22, 0x47, 0x0a, 0x0b, 0x47, 0x72, 0x70, 0x63, 0x44, 0x66, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x0a, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xcf, 0x01, + 0x0a, 0x07, 0x55, 0x72, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x67, + 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x74, 0x61, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x31, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x55, 0x72, 0x6c, 0x4d, 0x65, 0x74, 0x61, + 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x1a, 0x39, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x63, 0x0a, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, + 0x70, 0x75, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, + 0x63, 0x70, 0x75, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x5f, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x65, 0x6d, + 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x52, + 0x61, 0x74, 0x69, 0x6f, 0x22, 0x90, 0x01, 0x0a, 0x10, 0x50, 0x69, 0x65, 0x63, 0x65, 0x54, 0x61, + 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, + 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, + 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x72, 0x63, 0x50, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x64, + 0x73, 0x74, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x73, + 0x74, 0x50, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6e, 0x75, + 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x75, + 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xdb, 0x01, 0x0a, 0x09, 0x50, 0x69, 0x65, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6e, + 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4e, + 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6d, 0x64, 0x35, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4d, 0x64, 0x35, 0x12, + 0x21, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x12, 0x31, 0x0a, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x79, 0x6c, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x50, + 0x69, 0x65, 0x63, 0x65, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x52, 0x0a, 0x70, 0x69, 0x65, 0x63, 0x65, + 0x53, 0x74, 0x79, 0x6c, 0x65, 0x22, 0xfa, 0x01, 0x0a, 0x0b, 0x50, 0x69, 0x65, 0x63, 0x65, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x17, + 0x0a, 0x07, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x64, 0x73, 0x74, 0x50, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x73, 0x74, 0x41, 0x64, + 0x64, 0x72, 0x12, 0x30, 0x0a, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x50, + 0x69, 0x65, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x70, 0x69, 0x65, 0x63, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x69, + 0x65, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x50, 0x69, 0x65, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0e, + 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6d, 0x64, 0x35, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4d, 0x64, 0x35, 0x53, 0x69, + 0x67, 0x6e, 0x2a, 0x19, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x58, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x2a, 0x17, 0x0a, + 0x0a, 0x50, 0x69, 0x65, 0x63, 0x65, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x50, + 0x4c, 0x41, 0x49, 0x4e, 0x10, 0x00, 0x2a, 0x2c, 0x0a, 0x09, 0x53, 0x69, 0x7a, 0x65, 0x53, 0x63, + 0x6f, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x49, + 0x4e, 0x59, 0x10, 0x02, 0x42, 0x27, 0x5a, 0x25, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x64, + 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x2f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_pkg_rpc_base_base_proto_rawDescOnce sync.Once - file_pkg_rpc_base_base_proto_rawDescData = file_pkg_rpc_base_base_proto_rawDesc + file_internal_rpc_base_base_proto_rawDescOnce sync.Once + file_internal_rpc_base_base_proto_rawDescData = file_internal_rpc_base_base_proto_rawDesc ) -func file_pkg_rpc_base_base_proto_rawDescGZIP() []byte { - file_pkg_rpc_base_base_proto_rawDescOnce.Do(func() { - file_pkg_rpc_base_base_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_rpc_base_base_proto_rawDescData) +func file_internal_rpc_base_base_proto_rawDescGZIP() []byte { + file_internal_rpc_base_base_proto_rawDescOnce.Do(func() { + file_internal_rpc_base_base_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_rpc_base_base_proto_rawDescData) }) - return file_pkg_rpc_base_base_proto_rawDescData + return file_internal_rpc_base_base_proto_rawDescData } -var file_pkg_rpc_base_base_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_pkg_rpc_base_base_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_pkg_rpc_base_base_proto_goTypes = []interface{}{ +var file_internal_rpc_base_base_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_internal_rpc_base_base_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_internal_rpc_base_base_proto_goTypes = []interface{}{ (Code)(0), // 0: base.Code (PieceStyle)(0), // 1: base.PieceStyle (SizeScope)(0), // 2: base.SizeScope @@ -740,7 +756,7 @@ var file_pkg_rpc_base_base_proto_goTypes = []interface{}{ (*PiecePacket)(nil), // 8: base.PiecePacket nil, // 9: base.UrlMeta.HeaderEntry } -var file_pkg_rpc_base_base_proto_depIdxs = []int32{ +var file_internal_rpc_base_base_proto_depIdxs = []int32{ 0, // 0: base.GrpcDfError.code:type_name -> base.Code 9, // 1: base.UrlMeta.header:type_name -> base.UrlMeta.HeaderEntry 1, // 2: base.PieceInfo.piece_style:type_name -> base.PieceStyle @@ -752,13 +768,13 @@ var file_pkg_rpc_base_base_proto_depIdxs = []int32{ 0, // [0:4] is the sub-list for field type_name } -func init() { file_pkg_rpc_base_base_proto_init() } -func file_pkg_rpc_base_base_proto_init() { - if File_pkg_rpc_base_base_proto != nil { +func init() { file_internal_rpc_base_base_proto_init() } +func file_internal_rpc_base_base_proto_init() { + if File_internal_rpc_base_base_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_pkg_rpc_base_base_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_base_base_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GrpcDfError); i { case 0: return &v.state @@ -770,7 +786,7 @@ func file_pkg_rpc_base_base_proto_init() { return nil } } - file_pkg_rpc_base_base_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_base_base_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UrlMeta); i { case 0: return &v.state @@ -782,7 +798,7 @@ func file_pkg_rpc_base_base_proto_init() { return nil } } - file_pkg_rpc_base_base_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_base_base_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HostLoad); i { case 0: return &v.state @@ -794,7 +810,7 @@ func file_pkg_rpc_base_base_proto_init() { return nil } } - file_pkg_rpc_base_base_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_base_base_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PieceTaskRequest); i { case 0: return &v.state @@ -806,7 +822,7 @@ func file_pkg_rpc_base_base_proto_init() { return nil } } - file_pkg_rpc_base_base_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_base_base_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PieceInfo); i { case 0: return &v.state @@ -818,7 +834,7 @@ func file_pkg_rpc_base_base_proto_init() { return nil } } - file_pkg_rpc_base_base_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_base_base_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PiecePacket); i { case 0: return &v.state @@ -835,19 +851,19 @@ func file_pkg_rpc_base_base_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_pkg_rpc_base_base_proto_rawDesc, + RawDescriptor: file_internal_rpc_base_base_proto_rawDesc, NumEnums: 3, NumMessages: 7, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_pkg_rpc_base_base_proto_goTypes, - DependencyIndexes: file_pkg_rpc_base_base_proto_depIdxs, - EnumInfos: file_pkg_rpc_base_base_proto_enumTypes, - MessageInfos: file_pkg_rpc_base_base_proto_msgTypes, + GoTypes: file_internal_rpc_base_base_proto_goTypes, + DependencyIndexes: file_internal_rpc_base_base_proto_depIdxs, + EnumInfos: file_internal_rpc_base_base_proto_enumTypes, + MessageInfos: file_internal_rpc_base_base_proto_msgTypes, }.Build() - File_pkg_rpc_base_base_proto = out.File - file_pkg_rpc_base_base_proto_rawDesc = nil - file_pkg_rpc_base_base_proto_goTypes = nil - file_pkg_rpc_base_base_proto_depIdxs = nil + File_internal_rpc_base_base_proto = out.File + file_internal_rpc_base_base_proto_rawDesc = nil + file_internal_rpc_base_base_proto_goTypes = nil + file_internal_rpc_base_base_proto_depIdxs = nil } diff --git a/internal/rpc/base/base.proto b/internal/rpc/base/base.proto index b0f26ac6c..602890f69 100644 --- a/internal/rpc/base/base.proto +++ b/internal/rpc/base/base.proto @@ -41,18 +41,18 @@ message GrpcDfError { string message = 2; } +// UrlMeta describes url meta info. message UrlMeta{ - // format:md5:xxx or sha256:yyy, used as follows: - // - // 1. check whether downloaded content is consistent with the source file - // - // 2. generate different task ids for same url + // digest checks integrity of url content, for example md5:xxx or sha256:yyy string digest = 1; - // downloaded range for url - string range = 2; - // other attributes for url - // eg, when url is http protocol, header is used as http header - map header = 3; + // url tag identifies different task for same url, conflict with digest + string tag = 2; + // content range for url + string range = 3; + // filter url used to generate task id + string filter = 4; + // other url header infos + map header = 5; } message HostLoad{ diff --git a/internal/rpc/cdnsystem/cdnsystem.pb.go b/internal/rpc/cdnsystem/cdnsystem.pb.go index 16f224d35..3fa57d91d 100644 --- a/internal/rpc/cdnsystem/cdnsystem.pb.go +++ b/internal/rpc/cdnsystem/cdnsystem.pb.go @@ -17,18 +17,17 @@ // versions: // protoc-gen-go v1.25.0 // protoc v3.15.8 -// source: pkg/rpc/cdnsystem/cdnsystem.proto +// source: internal/rpc/cdnsystem/cdnsystem.proto package cdnsystem import ( - reflect "reflect" - sync "sync" - base "d7y.io/dragonfly/v2/internal/rpc/base" proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) const ( @@ -56,7 +55,7 @@ type SeedRequest struct { func (x *SeedRequest) Reset() { *x = SeedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_cdnsystem_cdnsystem_proto_msgTypes[0] + mi := &file_internal_rpc_cdnsystem_cdnsystem_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -69,7 +68,7 @@ func (x *SeedRequest) String() string { func (*SeedRequest) ProtoMessage() {} func (x *SeedRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_cdnsystem_cdnsystem_proto_msgTypes[0] + mi := &file_internal_rpc_cdnsystem_cdnsystem_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82,7 +81,7 @@ func (x *SeedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SeedRequest.ProtoReflect.Descriptor instead. func (*SeedRequest) Descriptor() ([]byte, []int) { - return file_pkg_rpc_cdnsystem_cdnsystem_proto_rawDescGZIP(), []int{0} + return file_internal_rpc_cdnsystem_cdnsystem_proto_rawDescGZIP(), []int{0} } func (x *SeedRequest) GetTaskId() string { @@ -134,7 +133,7 @@ type PieceSeed struct { func (x *PieceSeed) Reset() { *x = PieceSeed{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_cdnsystem_cdnsystem_proto_msgTypes[1] + mi := &file_internal_rpc_cdnsystem_cdnsystem_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -147,7 +146,7 @@ func (x *PieceSeed) String() string { func (*PieceSeed) ProtoMessage() {} func (x *PieceSeed) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_cdnsystem_cdnsystem_proto_msgTypes[1] + mi := &file_internal_rpc_cdnsystem_cdnsystem_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -160,7 +159,7 @@ func (x *PieceSeed) ProtoReflect() protoreflect.Message { // Deprecated: Use PieceSeed.ProtoReflect.Descriptor instead. func (*PieceSeed) Descriptor() ([]byte, []int) { - return file_pkg_rpc_cdnsystem_cdnsystem_proto_rawDescGZIP(), []int{1} + return file_internal_rpc_cdnsystem_cdnsystem_proto_rawDescGZIP(), []int{1} } func (x *PieceSeed) GetPeerId() string { @@ -198,60 +197,61 @@ func (x *PieceSeed) GetContentLength() int64 { return 0 } -var File_pkg_rpc_cdnsystem_cdnsystem_proto protoreflect.FileDescriptor +var File_internal_rpc_cdnsystem_cdnsystem_proto protoreflect.FileDescriptor -var file_pkg_rpc_cdnsystem_cdnsystem_proto_rawDesc = []byte{ - 0x0a, 0x21, 0x70, 0x6b, 0x67, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x64, 0x6e, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x64, 0x6e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x63, 0x64, 0x6e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x1a, 0x17, - 0x70, 0x6b, 0x67, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7a, 0x0a, 0x0b, 0x53, 0x65, 0x65, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, - 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, - 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x08, 0x75, 0x72, 0x6c, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x55, 0x72, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x4d, - 0x65, 0x74, 0x61, 0x22, 0xb0, 0x01, 0x0a, 0x09, 0x50, 0x69, 0x65, 0x63, 0x65, 0x53, 0x65, 0x65, - 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, - 0x65, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x73, 0x65, 0x65, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x70, - 0x69, 0x65, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x09, 0x70, 0x69, 0x65, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x64, - 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x12, - 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x32, 0x83, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x65, 0x64, 0x65, - 0x72, 0x12, 0x3d, 0x0a, 0x0b, 0x4f, 0x62, 0x74, 0x61, 0x69, 0x6e, 0x53, 0x65, 0x65, 0x64, 0x73, - 0x12, 0x16, 0x2e, 0x63, 0x64, 0x6e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x53, 0x65, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x64, 0x6e, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x53, 0x65, 0x65, 0x64, 0x30, 0x01, - 0x12, 0x3a, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x54, 0x61, 0x73, 0x6b, - 0x73, 0x12, 0x16, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x62, 0x61, 0x73, 0x65, - 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x27, 0x5a, 0x25, - 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x64, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x66, 0x6c, 0x79, - 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x64, 0x6e, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +var file_internal_rpc_cdnsystem_cdnsystem_proto_rawDesc = []byte{ + 0x0a, 0x26, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x63, + 0x64, 0x6e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2f, 0x63, 0x64, 0x6e, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x63, 0x64, 0x6e, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x1a, 0x1c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x72, 0x70, + 0x63, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0x7a, 0x0a, 0x0b, 0x53, 0x65, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x08, 0x75, 0x72, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x55, 0x72, 0x6c, + 0x4d, 0x65, 0x74, 0x61, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x22, 0xb0, 0x01, + 0x0a, 0x09, 0x50, 0x69, 0x65, 0x63, 0x65, 0x53, 0x65, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, + 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x65, 0x64, 0x65, 0x72, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x65, 0x64, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x70, 0x69, 0x65, 0x63, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x32, 0x83, 0x01, 0x0a, 0x06, 0x53, 0x65, 0x65, 0x64, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x0b, 0x4f, + 0x62, 0x74, 0x61, 0x69, 0x6e, 0x53, 0x65, 0x65, 0x64, 0x73, 0x12, 0x16, 0x2e, 0x63, 0x64, 0x6e, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x53, 0x65, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x63, 0x64, 0x6e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x50, + 0x69, 0x65, 0x63, 0x65, 0x53, 0x65, 0x65, 0x64, 0x30, 0x01, 0x12, 0x3a, 0x0a, 0x0d, 0x47, 0x65, + 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x16, 0x2e, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x2c, 0x5a, 0x2a, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, + 0x2f, 0x64, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x2f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x64, 0x6e, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_pkg_rpc_cdnsystem_cdnsystem_proto_rawDescOnce sync.Once - file_pkg_rpc_cdnsystem_cdnsystem_proto_rawDescData = file_pkg_rpc_cdnsystem_cdnsystem_proto_rawDesc + file_internal_rpc_cdnsystem_cdnsystem_proto_rawDescOnce sync.Once + file_internal_rpc_cdnsystem_cdnsystem_proto_rawDescData = file_internal_rpc_cdnsystem_cdnsystem_proto_rawDesc ) -func file_pkg_rpc_cdnsystem_cdnsystem_proto_rawDescGZIP() []byte { - file_pkg_rpc_cdnsystem_cdnsystem_proto_rawDescOnce.Do(func() { - file_pkg_rpc_cdnsystem_cdnsystem_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_rpc_cdnsystem_cdnsystem_proto_rawDescData) +func file_internal_rpc_cdnsystem_cdnsystem_proto_rawDescGZIP() []byte { + file_internal_rpc_cdnsystem_cdnsystem_proto_rawDescOnce.Do(func() { + file_internal_rpc_cdnsystem_cdnsystem_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_rpc_cdnsystem_cdnsystem_proto_rawDescData) }) - return file_pkg_rpc_cdnsystem_cdnsystem_proto_rawDescData + return file_internal_rpc_cdnsystem_cdnsystem_proto_rawDescData } -var file_pkg_rpc_cdnsystem_cdnsystem_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_pkg_rpc_cdnsystem_cdnsystem_proto_goTypes = []interface{}{ +var file_internal_rpc_cdnsystem_cdnsystem_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_internal_rpc_cdnsystem_cdnsystem_proto_goTypes = []interface{}{ (*SeedRequest)(nil), // 0: cdnsystem.SeedRequest (*PieceSeed)(nil), // 1: cdnsystem.PieceSeed (*base.UrlMeta)(nil), // 2: base.UrlMeta @@ -259,7 +259,7 @@ var file_pkg_rpc_cdnsystem_cdnsystem_proto_goTypes = []interface{}{ (*base.PieceTaskRequest)(nil), // 4: base.PieceTaskRequest (*base.PiecePacket)(nil), // 5: base.PiecePacket } -var file_pkg_rpc_cdnsystem_cdnsystem_proto_depIdxs = []int32{ +var file_internal_rpc_cdnsystem_cdnsystem_proto_depIdxs = []int32{ 2, // 0: cdnsystem.SeedRequest.url_meta:type_name -> base.UrlMeta 3, // 1: cdnsystem.PieceSeed.piece_info:type_name -> base.PieceInfo 0, // 2: cdnsystem.Seeder.ObtainSeeds:input_type -> cdnsystem.SeedRequest @@ -273,13 +273,13 @@ var file_pkg_rpc_cdnsystem_cdnsystem_proto_depIdxs = []int32{ 0, // [0:2] is the sub-list for field type_name } -func init() { file_pkg_rpc_cdnsystem_cdnsystem_proto_init() } -func file_pkg_rpc_cdnsystem_cdnsystem_proto_init() { - if File_pkg_rpc_cdnsystem_cdnsystem_proto != nil { +func init() { file_internal_rpc_cdnsystem_cdnsystem_proto_init() } +func file_internal_rpc_cdnsystem_cdnsystem_proto_init() { + if File_internal_rpc_cdnsystem_cdnsystem_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_pkg_rpc_cdnsystem_cdnsystem_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_cdnsystem_cdnsystem_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SeedRequest); i { case 0: return &v.state @@ -291,7 +291,7 @@ func file_pkg_rpc_cdnsystem_cdnsystem_proto_init() { return nil } } - file_pkg_rpc_cdnsystem_cdnsystem_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_cdnsystem_cdnsystem_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PieceSeed); i { case 0: return &v.state @@ -308,18 +308,18 @@ func file_pkg_rpc_cdnsystem_cdnsystem_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_pkg_rpc_cdnsystem_cdnsystem_proto_rawDesc, + RawDescriptor: file_internal_rpc_cdnsystem_cdnsystem_proto_rawDesc, NumEnums: 0, NumMessages: 2, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_pkg_rpc_cdnsystem_cdnsystem_proto_goTypes, - DependencyIndexes: file_pkg_rpc_cdnsystem_cdnsystem_proto_depIdxs, - MessageInfos: file_pkg_rpc_cdnsystem_cdnsystem_proto_msgTypes, + GoTypes: file_internal_rpc_cdnsystem_cdnsystem_proto_goTypes, + DependencyIndexes: file_internal_rpc_cdnsystem_cdnsystem_proto_depIdxs, + MessageInfos: file_internal_rpc_cdnsystem_cdnsystem_proto_msgTypes, }.Build() - File_pkg_rpc_cdnsystem_cdnsystem_proto = out.File - file_pkg_rpc_cdnsystem_cdnsystem_proto_rawDesc = nil - file_pkg_rpc_cdnsystem_cdnsystem_proto_goTypes = nil - file_pkg_rpc_cdnsystem_cdnsystem_proto_depIdxs = nil + File_internal_rpc_cdnsystem_cdnsystem_proto = out.File + file_internal_rpc_cdnsystem_cdnsystem_proto_rawDesc = nil + file_internal_rpc_cdnsystem_cdnsystem_proto_goTypes = nil + file_internal_rpc_cdnsystem_cdnsystem_proto_depIdxs = nil } diff --git a/internal/rpc/cdnsystem/cdnsystem_grpc.pb.go b/internal/rpc/cdnsystem/cdnsystem_grpc.pb.go index bdc2f25f6..a4ef8a10e 100644 --- a/internal/rpc/cdnsystem/cdnsystem_grpc.pb.go +++ b/internal/rpc/cdnsystem/cdnsystem_grpc.pb.go @@ -4,7 +4,6 @@ package cdnsystem import ( context "context" - base "d7y.io/dragonfly/v2/internal/rpc/base" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" @@ -163,5 +162,5 @@ var _Seeder_serviceDesc = grpc.ServiceDesc{ ServerStreams: true, }, }, - Metadata: "pkg/rpc/cdnsystem/cdnsystem.proto", + Metadata: "internal/rpc/cdnsystem/cdnsystem.proto", } diff --git a/internal/rpc/dfdaemon/client/client.go b/internal/rpc/dfdaemon/client/client.go index 6e55d6425..5cd8b8244 100644 --- a/internal/rpc/dfdaemon/client/client.go +++ b/internal/rpc/dfdaemon/client/client.go @@ -101,7 +101,7 @@ func (dc *daemonClient) getDaemonClientWithTarget(target string) (dfdaemon.Daemo func (dc *daemonClient) Download(ctx context.Context, req *dfdaemon.DownRequest, opts ...grpc.CallOption) (*DownResultStream, error) { req.Uuid = uuid.New().String() // generate taskID - taskID := idgen.TaskID(req.Url, req.Filter, req.UrlMeta, req.BizId) + taskID := idgen.TaskID(req.Url, req.UrlMeta.Filter, req.UrlMeta, req.UrlMeta.Tag) return newDownResultStream(ctx, dc, taskID, req, opts) } diff --git a/internal/rpc/dfdaemon/dfdaemon.pb.go b/internal/rpc/dfdaemon/dfdaemon.pb.go index cf3f30e3d..4ac967e02 100644 --- a/internal/rpc/dfdaemon/dfdaemon.pb.go +++ b/internal/rpc/dfdaemon/dfdaemon.pb.go @@ -17,19 +17,18 @@ // versions: // protoc-gen-go v1.25.0 // protoc v3.15.8 -// source: pkg/rpc/dfdaemon/dfdaemon.proto +// source: internal/rpc/dfdaemon/dfdaemon.proto package dfdaemon import ( - reflect "reflect" - sync "sync" - base "d7y.io/dragonfly/v2/internal/rpc/base" proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" + sync "sync" ) const ( @@ -48,27 +47,32 @@ type DownRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // download content with the url, but not only for http protocol - Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` + // identify one downloading, the framework will fill it automatically + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + // download file from the url, not only for http + Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"` // pieces will be written to output path directly, // at the same time, dfdaemon workspace also makes soft link to the output - Output string `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` - UrlMeta *base.UrlMeta `protobuf:"bytes,3,opt,name=url_meta,json=urlMeta,proto3" json:"url_meta,omitempty"` - // caller business id - BizId string `protobuf:"bytes,4,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` - // regex format - Filter string `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"` - // identify one downloading - // framework will fill it automatically - Uuid string `protobuf:"bytes,6,opt,name=uuid,proto3" json:"uuid,omitempty"` - Uid int64 `protobuf:"varint,7,opt,name=uid,proto3" json:"uid,omitempty"` - Gid int64 `protobuf:"varint,8,opt,name=gid,proto3" json:"gid,omitempty"` + Output string `protobuf:"bytes,3,opt,name=output,proto3" json:"output,omitempty"` + // timeout duration, default 3 hour + Timeout int64 `protobuf:"varint,4,opt,name=timeout,proto3" json:"timeout,omitempty"` + // rate limit in bytes per second + Limit int64 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` + UrlMeta *base.UrlMeta `protobuf:"bytes,6,opt,name=url_meta,json=urlMeta,proto3" json:"url_meta,omitempty"` + // p2p/cdn/source + Pattern string `protobuf:"bytes,7,opt,name=pattern,proto3" json:"pattern,omitempty"` + // call system + Callsystem string `protobuf:"bytes,8,opt,name=callsystem,proto3" json:"callsystem,omitempty"` + // user id + Uid int64 `protobuf:"varint,9,opt,name=uid,proto3" json:"uid,omitempty"` + // group id + Gid int64 `protobuf:"varint,10,opt,name=gid,proto3" json:"gid,omitempty"` } func (x *DownRequest) Reset() { *x = DownRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_dfdaemon_dfdaemon_proto_msgTypes[0] + mi := &file_internal_rpc_dfdaemon_dfdaemon_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -81,7 +85,7 @@ func (x *DownRequest) String() string { func (*DownRequest) ProtoMessage() {} func (x *DownRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_dfdaemon_dfdaemon_proto_msgTypes[0] + mi := &file_internal_rpc_dfdaemon_dfdaemon_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -94,7 +98,14 @@ func (x *DownRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DownRequest.ProtoReflect.Descriptor instead. func (*DownRequest) Descriptor() ([]byte, []int) { - return file_pkg_rpc_dfdaemon_dfdaemon_proto_rawDescGZIP(), []int{0} + return file_internal_rpc_dfdaemon_dfdaemon_proto_rawDescGZIP(), []int{0} +} + +func (x *DownRequest) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" } func (x *DownRequest) GetUrl() string { @@ -111,6 +122,20 @@ func (x *DownRequest) GetOutput() string { return "" } +func (x *DownRequest) GetTimeout() int64 { + if x != nil { + return x.Timeout + } + return 0 +} + +func (x *DownRequest) GetLimit() int64 { + if x != nil { + return x.Limit + } + return 0 +} + func (x *DownRequest) GetUrlMeta() *base.UrlMeta { if x != nil { return x.UrlMeta @@ -118,23 +143,16 @@ func (x *DownRequest) GetUrlMeta() *base.UrlMeta { return nil } -func (x *DownRequest) GetBizId() string { +func (x *DownRequest) GetPattern() string { if x != nil { - return x.BizId + return x.Pattern } return "" } -func (x *DownRequest) GetFilter() string { +func (x *DownRequest) GetCallsystem() string { if x != nil { - return x.Filter - } - return "" -} - -func (x *DownRequest) GetUuid() string { - if x != nil { - return x.Uuid + return x.Callsystem } return "" } @@ -168,7 +186,7 @@ type DownResult struct { func (x *DownResult) Reset() { *x = DownResult{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_dfdaemon_dfdaemon_proto_msgTypes[1] + mi := &file_internal_rpc_dfdaemon_dfdaemon_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -181,7 +199,7 @@ func (x *DownResult) String() string { func (*DownResult) ProtoMessage() {} func (x *DownResult) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_dfdaemon_dfdaemon_proto_msgTypes[1] + mi := &file_internal_rpc_dfdaemon_dfdaemon_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -194,7 +212,7 @@ func (x *DownResult) ProtoReflect() protoreflect.Message { // Deprecated: Use DownResult.ProtoReflect.Descriptor instead. func (*DownResult) Descriptor() ([]byte, []int) { - return file_pkg_rpc_dfdaemon_dfdaemon_proto_rawDescGZIP(), []int{1} + return file_internal_rpc_dfdaemon_dfdaemon_proto_rawDescGZIP(), []int{1} } func (x *DownResult) GetTaskId() string { @@ -225,67 +243,72 @@ func (x *DownResult) GetDone() bool { return false } -var File_pkg_rpc_dfdaemon_dfdaemon_proto protoreflect.FileDescriptor +var File_internal_rpc_dfdaemon_dfdaemon_proto protoreflect.FileDescriptor -var file_pkg_rpc_dfdaemon_dfdaemon_proto_rawDesc = []byte{ - 0x0a, 0x1f, 0x70, 0x6b, 0x67, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, - 0x6f, 0x6e, 0x2f, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x08, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x1a, 0x17, 0x70, 0x6b, 0x67, - 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0xc8, 0x01, 0x0a, 0x0b, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x28, 0x0a, 0x08, 0x75, - 0x72, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x55, 0x72, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x07, 0x75, 0x72, - 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, 0x69, 0x64, 0x22, 0x7d, 0x0a, 0x0a, - 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, - 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, - 0x6b, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, - 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, - 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x32, 0xbe, 0x01, 0x0a, 0x06, - 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, - 0x61, 0x64, 0x12, 0x15, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x6f, - 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x64, 0x66, 0x64, 0x61, - 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x30, - 0x01, 0x12, 0x3a, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x73, 0x12, 0x16, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x3d, 0x0a, - 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 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, 0x26, 0x5a, 0x24, - 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x64, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x66, 0x6c, 0x79, - 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x64, 0x66, 0x64, 0x61, - 0x65, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +var file_internal_rpc_dfdaemon_dfdaemon_proto_rawDesc = []byte{ + 0x0a, 0x24, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x64, + 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2f, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, + 0x1a, 0x1c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x62, + 0x61, 0x73, 0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x83, 0x02, 0x0a, 0x0b, + 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, + 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x08, 0x75, 0x72, 0x6c, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x55, 0x72, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x4d, + 0x65, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x1e, 0x0a, + 0x0a, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, + 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x67, 0x69, + 0x64, 0x22, 0x7d, 0x0a, 0x0a, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, + 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, + 0x32, 0xbe, 0x01, 0x0a, 0x06, 0x44, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x08, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x15, 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, + 0x6f, 0x6e, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, + 0x2e, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x30, 0x01, 0x12, 0x3a, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x69, 0x65, + 0x63, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x16, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x50, + 0x69, 0x65, 0x63, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x11, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 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, 0x2b, 0x5a, 0x29, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x64, 0x72, 0x61, 0x67, + 0x6f, 0x6e, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x64, 0x66, 0x64, 0x61, 0x65, 0x6d, 0x6f, 0x6e, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_pkg_rpc_dfdaemon_dfdaemon_proto_rawDescOnce sync.Once - file_pkg_rpc_dfdaemon_dfdaemon_proto_rawDescData = file_pkg_rpc_dfdaemon_dfdaemon_proto_rawDesc + file_internal_rpc_dfdaemon_dfdaemon_proto_rawDescOnce sync.Once + file_internal_rpc_dfdaemon_dfdaemon_proto_rawDescData = file_internal_rpc_dfdaemon_dfdaemon_proto_rawDesc ) -func file_pkg_rpc_dfdaemon_dfdaemon_proto_rawDescGZIP() []byte { - file_pkg_rpc_dfdaemon_dfdaemon_proto_rawDescOnce.Do(func() { - file_pkg_rpc_dfdaemon_dfdaemon_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_rpc_dfdaemon_dfdaemon_proto_rawDescData) +func file_internal_rpc_dfdaemon_dfdaemon_proto_rawDescGZIP() []byte { + file_internal_rpc_dfdaemon_dfdaemon_proto_rawDescOnce.Do(func() { + file_internal_rpc_dfdaemon_dfdaemon_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_rpc_dfdaemon_dfdaemon_proto_rawDescData) }) - return file_pkg_rpc_dfdaemon_dfdaemon_proto_rawDescData + return file_internal_rpc_dfdaemon_dfdaemon_proto_rawDescData } -var file_pkg_rpc_dfdaemon_dfdaemon_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_pkg_rpc_dfdaemon_dfdaemon_proto_goTypes = []interface{}{ +var file_internal_rpc_dfdaemon_dfdaemon_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_internal_rpc_dfdaemon_dfdaemon_proto_goTypes = []interface{}{ (*DownRequest)(nil), // 0: dfdaemon.DownRequest (*DownResult)(nil), // 1: dfdaemon.DownResult (*base.UrlMeta)(nil), // 2: base.UrlMeta @@ -293,7 +316,7 @@ var file_pkg_rpc_dfdaemon_dfdaemon_proto_goTypes = []interface{}{ (*emptypb.Empty)(nil), // 4: google.protobuf.Empty (*base.PiecePacket)(nil), // 5: base.PiecePacket } -var file_pkg_rpc_dfdaemon_dfdaemon_proto_depIdxs = []int32{ +var file_internal_rpc_dfdaemon_dfdaemon_proto_depIdxs = []int32{ 2, // 0: dfdaemon.DownRequest.url_meta:type_name -> base.UrlMeta 0, // 1: dfdaemon.Daemon.Download:input_type -> dfdaemon.DownRequest 3, // 2: dfdaemon.Daemon.GetPieceTasks:input_type -> base.PieceTaskRequest @@ -308,13 +331,13 @@ var file_pkg_rpc_dfdaemon_dfdaemon_proto_depIdxs = []int32{ 0, // [0:1] is the sub-list for field type_name } -func init() { file_pkg_rpc_dfdaemon_dfdaemon_proto_init() } -func file_pkg_rpc_dfdaemon_dfdaemon_proto_init() { - if File_pkg_rpc_dfdaemon_dfdaemon_proto != nil { +func init() { file_internal_rpc_dfdaemon_dfdaemon_proto_init() } +func file_internal_rpc_dfdaemon_dfdaemon_proto_init() { + if File_internal_rpc_dfdaemon_dfdaemon_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_pkg_rpc_dfdaemon_dfdaemon_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_dfdaemon_dfdaemon_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DownRequest); i { case 0: return &v.state @@ -326,7 +349,7 @@ func file_pkg_rpc_dfdaemon_dfdaemon_proto_init() { return nil } } - file_pkg_rpc_dfdaemon_dfdaemon_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_dfdaemon_dfdaemon_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DownResult); i { case 0: return &v.state @@ -343,18 +366,18 @@ func file_pkg_rpc_dfdaemon_dfdaemon_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_pkg_rpc_dfdaemon_dfdaemon_proto_rawDesc, + RawDescriptor: file_internal_rpc_dfdaemon_dfdaemon_proto_rawDesc, NumEnums: 0, NumMessages: 2, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_pkg_rpc_dfdaemon_dfdaemon_proto_goTypes, - DependencyIndexes: file_pkg_rpc_dfdaemon_dfdaemon_proto_depIdxs, - MessageInfos: file_pkg_rpc_dfdaemon_dfdaemon_proto_msgTypes, + GoTypes: file_internal_rpc_dfdaemon_dfdaemon_proto_goTypes, + DependencyIndexes: file_internal_rpc_dfdaemon_dfdaemon_proto_depIdxs, + MessageInfos: file_internal_rpc_dfdaemon_dfdaemon_proto_msgTypes, }.Build() - File_pkg_rpc_dfdaemon_dfdaemon_proto = out.File - file_pkg_rpc_dfdaemon_dfdaemon_proto_rawDesc = nil - file_pkg_rpc_dfdaemon_dfdaemon_proto_goTypes = nil - file_pkg_rpc_dfdaemon_dfdaemon_proto_depIdxs = nil + File_internal_rpc_dfdaemon_dfdaemon_proto = out.File + file_internal_rpc_dfdaemon_dfdaemon_proto_rawDesc = nil + file_internal_rpc_dfdaemon_dfdaemon_proto_goTypes = nil + file_internal_rpc_dfdaemon_dfdaemon_proto_depIdxs = nil } diff --git a/internal/rpc/dfdaemon/dfdaemon.proto b/internal/rpc/dfdaemon/dfdaemon.proto index b2c271aa7..dca0fdcd1 100644 --- a/internal/rpc/dfdaemon/dfdaemon.proto +++ b/internal/rpc/dfdaemon/dfdaemon.proto @@ -24,21 +24,26 @@ import "google/protobuf/empty.proto"; option go_package = "d7y.io/dragonfly/v2/internal/rpc/dfdaemon"; message DownRequest{ - // download content with the url, but not only for http protocol - string url = 1; + // identify one downloading, the framework will fill it automatically + string uuid = 1; + // download file from the url, not only for http + string url = 2; // pieces will be written to output path directly, // at the same time, dfdaemon workspace also makes soft link to the output - string output = 2; - base.UrlMeta url_meta = 3; - // caller business id - string biz_id = 4; - // regex format - string filter = 5; - // identify one downloading - // framework will fill it automatically - string uuid = 6; - int64 uid = 7; - int64 gid = 8; + string output = 3; + // timeout duration, default 3 hour + int64 timeout = 4; + // rate limit in bytes per second + int64 limit = 5; + base.UrlMeta url_meta = 6; + // p2p/cdn/source + string pattern = 7; + // call system + string callsystem = 8; + // user id + int64 uid = 9; + // group id + int64 gid = 10; } message DownResult{ diff --git a/internal/rpc/dfdaemon/dfdaemon_grpc.pb.go b/internal/rpc/dfdaemon/dfdaemon_grpc.pb.go index 553eaa9c5..c0152c447 100644 --- a/internal/rpc/dfdaemon/dfdaemon_grpc.pb.go +++ b/internal/rpc/dfdaemon/dfdaemon_grpc.pb.go @@ -4,7 +4,6 @@ package dfdaemon import ( context "context" - base "d7y.io/dragonfly/v2/internal/rpc/base" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" @@ -202,5 +201,5 @@ var _Daemon_serviceDesc = grpc.ServiceDesc{ ServerStreams: true, }, }, - Metadata: "pkg/rpc/dfdaemon/dfdaemon.proto", + Metadata: "internal/rpc/dfdaemon/dfdaemon.proto", } diff --git a/internal/rpc/manager/manager.pb.go b/internal/rpc/manager/manager.pb.go index e0dce065e..6a06d9405 100644 --- a/internal/rpc/manager/manager.pb.go +++ b/internal/rpc/manager/manager.pb.go @@ -17,18 +17,17 @@ // versions: // protoc-gen-go v1.25.0 // protoc v3.15.8 -// source: pkg/rpc/manager/manager.proto +// source: internal/rpc/manager/manager.proto package manager import ( - reflect "reflect" - sync "sync" - proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" + sync "sync" ) const ( @@ -72,11 +71,11 @@ func (x ResourceType) String() string { } func (ResourceType) Descriptor() protoreflect.EnumDescriptor { - return file_pkg_rpc_manager_manager_proto_enumTypes[0].Descriptor() + return file_internal_rpc_manager_manager_proto_enumTypes[0].Descriptor() } func (ResourceType) Type() protoreflect.EnumType { - return &file_pkg_rpc_manager_manager_proto_enumTypes[0] + return &file_internal_rpc_manager_manager_proto_enumTypes[0] } func (x ResourceType) Number() protoreflect.EnumNumber { @@ -85,7 +84,7 @@ func (x ResourceType) Number() protoreflect.EnumNumber { // Deprecated: Use ResourceType.Descriptor instead. func (ResourceType) EnumDescriptor() ([]byte, []int) { - return file_pkg_rpc_manager_manager_proto_rawDescGZIP(), []int{0} + return file_internal_rpc_manager_manager_proto_rawDescGZIP(), []int{0} } type GetSchedulersRequest struct { @@ -104,7 +103,7 @@ type GetSchedulersRequest struct { func (x *GetSchedulersRequest) Reset() { *x = GetSchedulersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[0] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -117,7 +116,7 @@ func (x *GetSchedulersRequest) String() string { func (*GetSchedulersRequest) ProtoMessage() {} func (x *GetSchedulersRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[0] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -130,7 +129,7 @@ func (x *GetSchedulersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSchedulersRequest.ProtoReflect.Descriptor instead. func (*GetSchedulersRequest) Descriptor() ([]byte, []int) { - return file_pkg_rpc_manager_manager_proto_rawDescGZIP(), []int{0} + return file_internal_rpc_manager_manager_proto_rawDescGZIP(), []int{0} } func (x *GetSchedulersRequest) GetIp() string { @@ -167,7 +166,7 @@ type SchedulerNodes struct { func (x *SchedulerNodes) Reset() { *x = SchedulerNodes{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[1] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -180,7 +179,7 @@ func (x *SchedulerNodes) String() string { func (*SchedulerNodes) ProtoMessage() {} func (x *SchedulerNodes) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[1] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -193,7 +192,7 @@ func (x *SchedulerNodes) ProtoReflect() protoreflect.Message { // Deprecated: Use SchedulerNodes.ProtoReflect.Descriptor instead. func (*SchedulerNodes) Descriptor() ([]byte, []int) { - return file_pkg_rpc_manager_manager_proto_rawDescGZIP(), []int{1} + return file_internal_rpc_manager_manager_proto_rawDescGZIP(), []int{1} } func (x *SchedulerNodes) GetAddrs() []string { @@ -223,7 +222,7 @@ type KeepAliveRequest struct { func (x *KeepAliveRequest) Reset() { *x = KeepAliveRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[2] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -236,7 +235,7 @@ func (x *KeepAliveRequest) String() string { func (*KeepAliveRequest) ProtoMessage() {} func (x *KeepAliveRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[2] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -249,7 +248,7 @@ func (x *KeepAliveRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use KeepAliveRequest.ProtoReflect.Descriptor instead. func (*KeepAliveRequest) Descriptor() ([]byte, []int) { - return file_pkg_rpc_manager_manager_proto_rawDescGZIP(), []int{2} + return file_internal_rpc_manager_manager_proto_rawDescGZIP(), []int{2} } func (x *KeepAliveRequest) GetHostName() string { @@ -279,7 +278,7 @@ type GetClusterConfigRequest struct { func (x *GetClusterConfigRequest) Reset() { *x = GetClusterConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[3] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -292,7 +291,7 @@ func (x *GetClusterConfigRequest) String() string { func (*GetClusterConfigRequest) ProtoMessage() {} func (x *GetClusterConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[3] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -305,7 +304,7 @@ func (x *GetClusterConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClusterConfigRequest.ProtoReflect.Descriptor instead. func (*GetClusterConfigRequest) Descriptor() ([]byte, []int) { - return file_pkg_rpc_manager_manager_proto_rawDescGZIP(), []int{3} + return file_internal_rpc_manager_manager_proto_rawDescGZIP(), []int{3} } func (x *GetClusterConfigRequest) GetHostName() string { @@ -331,7 +330,7 @@ type ClientConfig struct { func (x *ClientConfig) Reset() { *x = ClientConfig{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[4] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -344,7 +343,7 @@ func (x *ClientConfig) String() string { func (*ClientConfig) ProtoMessage() {} func (x *ClientConfig) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[4] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -357,7 +356,7 @@ func (x *ClientConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientConfig.ProtoReflect.Descriptor instead. func (*ClientConfig) Descriptor() ([]byte, []int) { - return file_pkg_rpc_manager_manager_proto_rawDescGZIP(), []int{4} + return file_internal_rpc_manager_manager_proto_rawDescGZIP(), []int{4} } type CdnConfig struct { @@ -375,7 +374,7 @@ type CdnConfig struct { func (x *CdnConfig) Reset() { *x = CdnConfig{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[5] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -388,7 +387,7 @@ func (x *CdnConfig) String() string { func (*CdnConfig) ProtoMessage() {} func (x *CdnConfig) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[5] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -401,7 +400,7 @@ func (x *CdnConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use CdnConfig.ProtoReflect.Descriptor instead. func (*CdnConfig) Descriptor() ([]byte, []int) { - return file_pkg_rpc_manager_manager_proto_rawDescGZIP(), []int{5} + return file_internal_rpc_manager_manager_proto_rawDescGZIP(), []int{5} } func (x *CdnConfig) GetClusterId() string { @@ -456,7 +455,7 @@ type SchedulerConfig struct { func (x *SchedulerConfig) Reset() { *x = SchedulerConfig{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[6] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -469,7 +468,7 @@ func (x *SchedulerConfig) String() string { func (*SchedulerConfig) ProtoMessage() {} func (x *SchedulerConfig) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[6] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -482,7 +481,7 @@ func (x *SchedulerConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use SchedulerConfig.ProtoReflect.Descriptor instead. func (*SchedulerConfig) Descriptor() ([]byte, []int) { - return file_pkg_rpc_manager_manager_proto_rawDescGZIP(), []int{6} + return file_internal_rpc_manager_manager_proto_rawDescGZIP(), []int{6} } func (x *SchedulerConfig) GetClusterId() string { @@ -548,7 +547,7 @@ type ClusterConfig struct { func (x *ClusterConfig) Reset() { *x = ClusterConfig{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[7] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -561,7 +560,7 @@ func (x *ClusterConfig) String() string { func (*ClusterConfig) ProtoMessage() {} func (x *ClusterConfig) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[7] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -574,7 +573,7 @@ func (x *ClusterConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterConfig.ProtoReflect.Descriptor instead. func (*ClusterConfig) Descriptor() ([]byte, []int) { - return file_pkg_rpc_manager_manager_proto_rawDescGZIP(), []int{7} + return file_internal_rpc_manager_manager_proto_rawDescGZIP(), []int{7} } func (m *ClusterConfig) GetConfig() isClusterConfig_Config { @@ -627,7 +626,7 @@ type ServerInfo struct { func (x *ServerInfo) Reset() { *x = ServerInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[8] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -640,7 +639,7 @@ func (x *ServerInfo) String() string { func (*ServerInfo) ProtoMessage() {} func (x *ServerInfo) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[8] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -653,7 +652,7 @@ func (x *ServerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ServerInfo.ProtoReflect.Descriptor instead. func (*ServerInfo) Descriptor() ([]byte, []int) { - return file_pkg_rpc_manager_manager_proto_rawDescGZIP(), []int{8} + return file_internal_rpc_manager_manager_proto_rawDescGZIP(), []int{8} } func (x *ServerInfo) GetHostInfo() *HostInfo { @@ -696,7 +695,7 @@ type HostInfo struct { func (x *HostInfo) Reset() { *x = HostInfo{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[9] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -709,7 +708,7 @@ func (x *HostInfo) String() string { func (*HostInfo) ProtoMessage() {} func (x *HostInfo) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_manager_manager_proto_msgTypes[9] + mi := &file_internal_rpc_manager_manager_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -722,7 +721,7 @@ func (x *HostInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use HostInfo.ProtoReflect.Descriptor instead. func (*HostInfo) Descriptor() ([]byte, []int) { - return file_pkg_rpc_manager_manager_proto_rawDescGZIP(), []int{9} + return file_internal_rpc_manager_manager_proto_rawDescGZIP(), []int{9} } func (x *HostInfo) GetIp() string { @@ -774,144 +773,145 @@ func (x *HostInfo) GetNetTopology() string { return "" } -var File_pkg_rpc_manager_manager_proto protoreflect.FileDescriptor +var File_internal_rpc_manager_manager_proto protoreflect.FileDescriptor -var file_pkg_rpc_manager_manager_proto_rawDesc = []byte{ - 0x0a, 0x1d, 0x70, 0x6b, 0x67, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1b, 0x0a, - 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x6f, - 0x73, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x6f, - 0x73, 0x74, 0x54, 0x61, 0x67, 0x22, 0x5a, 0x0a, 0x0e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, 0x72, 0x73, 0x12, 0x32, 0x0a, - 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x48, 0x6f, 0x73, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x6f, 0x73, - 0x74, 0x22, 0x5a, 0x0a, 0x10, 0x4b, 0x65, 0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x15, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x61, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x22, 0xce, 0x01, 0x0a, 0x09, 0x43, 0x64, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, - 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, - 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, - 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0xab, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, - 0x09, 0x63, 0x64, 0x6e, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x64, 0x6e, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x22, - 0x95, 0x01, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x45, 0x0a, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, 0x0a, 0x63, 0x64, 0x6e, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x43, 0x64, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x48, 0x00, 0x52, 0x09, 0x63, 0x64, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x08, 0x0a, - 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x74, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6e, - 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x68, 0x6f, 0x73, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x70, 0x63, 0x50, 0x6f, 0x72, 0x74, - 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x22, 0xb8, 0x02, - 0x0a, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, - 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, - 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x12, 0x45, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x69, 0x64, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x6f, 0x70, - 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x74, - 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x1a, 0x3e, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x78, - 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x26, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x64, 0x6e, 0x10, 0x01, - 0x32, 0xe6, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x0d, - 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x2e, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, - 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x09, 0x4b, 0x65, 0x65, 0x70, 0x41, - 0x6c, 0x69, 0x76, 0x65, 0x12, 0x19, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x4b, - 0x65, 0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 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, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x10, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x2e, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x00, 0x42, 0x25, 0x5a, 0x23, 0x64, 0x37, 0x79, - 0x2e, 0x69, 0x6f, 0x2f, 0x64, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, - 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +var file_internal_rpc_manager_manager_proto_rawDesc = []byte{ + 0x0a, 0x22, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x1a, 0x1b, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x5e, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x19, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x54, 0x61, 0x67, 0x22, 0x5a, 0x0a, 0x0e, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x64, 0x64, + 0x72, 0x73, 0x12, 0x32, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x6f, 0x73, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x22, 0x5a, 0x0a, 0x10, 0x4b, 0x65, 0x65, 0x70, 0x41, 0x6c, + 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, + 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x22, 0x61, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, + 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xce, 0x01, 0x0a, 0x09, 0x43, 0x64, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xab, 0x02, 0x0a, 0x0f, 0x53, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, + 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x09, 0x63, 0x64, 0x6e, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x64, 0x6e, 0x48, + 0x6f, 0x73, 0x74, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x45, 0x0a, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, + 0x0a, 0x63, 0x64, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x43, 0x64, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x09, 0x63, 0x64, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x74, 0x0a, 0x0a, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2e, 0x0a, 0x09, 0x68, 0x6f, + 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x70, + 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x70, + 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x50, 0x6f, + 0x72, 0x74, 0x22, 0xb8, 0x02, 0x0a, 0x08, 0x48, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, + 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x45, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x64, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, + 0x72, 0x6f, 0x78, 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0b, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x63, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, + 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x1a, 0x3e, 0x0a, + 0x10, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x26, 0x0a, + 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, + 0x09, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, + 0x43, 0x64, 0x6e, 0x10, 0x01, 0x32, 0xe6, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x12, 0x49, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x72, 0x73, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, + 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x53, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x09, + 0x4b, 0x65, 0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x19, 0x2e, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x2e, 0x4b, 0x65, 0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 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, 0x22, 0x00, 0x12, 0x4e, + 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x00, 0x42, 0x2a, + 0x5a, 0x28, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x64, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x66, + 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x72, + 0x70, 0x63, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( - file_pkg_rpc_manager_manager_proto_rawDescOnce sync.Once - file_pkg_rpc_manager_manager_proto_rawDescData = file_pkg_rpc_manager_manager_proto_rawDesc + file_internal_rpc_manager_manager_proto_rawDescOnce sync.Once + file_internal_rpc_manager_manager_proto_rawDescData = file_internal_rpc_manager_manager_proto_rawDesc ) -func file_pkg_rpc_manager_manager_proto_rawDescGZIP() []byte { - file_pkg_rpc_manager_manager_proto_rawDescOnce.Do(func() { - file_pkg_rpc_manager_manager_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_rpc_manager_manager_proto_rawDescData) +func file_internal_rpc_manager_manager_proto_rawDescGZIP() []byte { + file_internal_rpc_manager_manager_proto_rawDescOnce.Do(func() { + file_internal_rpc_manager_manager_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_rpc_manager_manager_proto_rawDescData) }) - return file_pkg_rpc_manager_manager_proto_rawDescData + return file_internal_rpc_manager_manager_proto_rawDescData } -var file_pkg_rpc_manager_manager_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_pkg_rpc_manager_manager_proto_msgTypes = make([]protoimpl.MessageInfo, 11) -var file_pkg_rpc_manager_manager_proto_goTypes = []interface{}{ +var file_internal_rpc_manager_manager_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_internal_rpc_manager_manager_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_internal_rpc_manager_manager_proto_goTypes = []interface{}{ (ResourceType)(0), // 0: manager.ResourceType (*GetSchedulersRequest)(nil), // 1: manager.GetSchedulersRequest (*SchedulerNodes)(nil), // 2: manager.SchedulerNodes @@ -926,7 +926,7 @@ var file_pkg_rpc_manager_manager_proto_goTypes = []interface{}{ nil, // 11: manager.HostInfo.ProxyDomainEntry (*emptypb.Empty)(nil), // 12: google.protobuf.Empty } -var file_pkg_rpc_manager_manager_proto_depIdxs = []int32{ +var file_internal_rpc_manager_manager_proto_depIdxs = []int32{ 10, // 0: manager.SchedulerNodes.client_host:type_name -> manager.HostInfo 0, // 1: manager.KeepAliveRequest.type:type_name -> manager.ResourceType 0, // 2: manager.GetClusterConfigRequest.type:type_name -> manager.ResourceType @@ -948,13 +948,13 @@ var file_pkg_rpc_manager_manager_proto_depIdxs = []int32{ 0, // [0:8] is the sub-list for field type_name } -func init() { file_pkg_rpc_manager_manager_proto_init() } -func file_pkg_rpc_manager_manager_proto_init() { - if File_pkg_rpc_manager_manager_proto != nil { +func init() { file_internal_rpc_manager_manager_proto_init() } +func file_internal_rpc_manager_manager_proto_init() { + if File_internal_rpc_manager_manager_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_pkg_rpc_manager_manager_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_manager_manager_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSchedulersRequest); i { case 0: return &v.state @@ -966,7 +966,7 @@ func file_pkg_rpc_manager_manager_proto_init() { return nil } } - file_pkg_rpc_manager_manager_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_manager_manager_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SchedulerNodes); i { case 0: return &v.state @@ -978,7 +978,7 @@ func file_pkg_rpc_manager_manager_proto_init() { return nil } } - file_pkg_rpc_manager_manager_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_manager_manager_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*KeepAliveRequest); i { case 0: return &v.state @@ -990,7 +990,7 @@ func file_pkg_rpc_manager_manager_proto_init() { return nil } } - file_pkg_rpc_manager_manager_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_manager_manager_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClusterConfigRequest); i { case 0: return &v.state @@ -1002,7 +1002,7 @@ func file_pkg_rpc_manager_manager_proto_init() { return nil } } - file_pkg_rpc_manager_manager_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_manager_manager_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClientConfig); i { case 0: return &v.state @@ -1014,7 +1014,7 @@ func file_pkg_rpc_manager_manager_proto_init() { return nil } } - file_pkg_rpc_manager_manager_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_manager_manager_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CdnConfig); i { case 0: return &v.state @@ -1026,7 +1026,7 @@ func file_pkg_rpc_manager_manager_proto_init() { return nil } } - file_pkg_rpc_manager_manager_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_manager_manager_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SchedulerConfig); i { case 0: return &v.state @@ -1038,7 +1038,7 @@ func file_pkg_rpc_manager_manager_proto_init() { return nil } } - file_pkg_rpc_manager_manager_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_manager_manager_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ClusterConfig); i { case 0: return &v.state @@ -1050,7 +1050,7 @@ func file_pkg_rpc_manager_manager_proto_init() { return nil } } - file_pkg_rpc_manager_manager_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_manager_manager_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServerInfo); i { case 0: return &v.state @@ -1062,7 +1062,7 @@ func file_pkg_rpc_manager_manager_proto_init() { return nil } } - file_pkg_rpc_manager_manager_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_manager_manager_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HostInfo); i { case 0: return &v.state @@ -1075,7 +1075,7 @@ func file_pkg_rpc_manager_manager_proto_init() { } } } - file_pkg_rpc_manager_manager_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_internal_rpc_manager_manager_proto_msgTypes[7].OneofWrappers = []interface{}{ (*ClusterConfig_SchedulerConfig)(nil), (*ClusterConfig_CdnConfig)(nil), } @@ -1083,19 +1083,19 @@ func file_pkg_rpc_manager_manager_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_pkg_rpc_manager_manager_proto_rawDesc, + RawDescriptor: file_internal_rpc_manager_manager_proto_rawDesc, NumEnums: 1, NumMessages: 11, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_pkg_rpc_manager_manager_proto_goTypes, - DependencyIndexes: file_pkg_rpc_manager_manager_proto_depIdxs, - EnumInfos: file_pkg_rpc_manager_manager_proto_enumTypes, - MessageInfos: file_pkg_rpc_manager_manager_proto_msgTypes, + GoTypes: file_internal_rpc_manager_manager_proto_goTypes, + DependencyIndexes: file_internal_rpc_manager_manager_proto_depIdxs, + EnumInfos: file_internal_rpc_manager_manager_proto_enumTypes, + MessageInfos: file_internal_rpc_manager_manager_proto_msgTypes, }.Build() - File_pkg_rpc_manager_manager_proto = out.File - file_pkg_rpc_manager_manager_proto_rawDesc = nil - file_pkg_rpc_manager_manager_proto_goTypes = nil - file_pkg_rpc_manager_manager_proto_depIdxs = nil + File_internal_rpc_manager_manager_proto = out.File + file_internal_rpc_manager_manager_proto_rawDesc = nil + file_internal_rpc_manager_manager_proto_goTypes = nil + file_internal_rpc_manager_manager_proto_depIdxs = nil } diff --git a/internal/rpc/manager/manager_grpc.pb.go b/internal/rpc/manager/manager_grpc.pb.go index 3789fe6c7..4e7bb4aa9 100644 --- a/internal/rpc/manager/manager_grpc.pb.go +++ b/internal/rpc/manager/manager_grpc.pb.go @@ -4,7 +4,6 @@ package manager import ( context "context" - grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -185,5 +184,5 @@ var _Manager_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "pkg/rpc/manager/manager.proto", + Metadata: "internal/rpc/manager/manager.proto", } diff --git a/internal/rpc/scheduler/scheduler.pb.go b/internal/rpc/scheduler/scheduler.pb.go index a7356581d..bbf1e6141 100644 --- a/internal/rpc/scheduler/scheduler.pb.go +++ b/internal/rpc/scheduler/scheduler.pb.go @@ -17,19 +17,18 @@ // versions: // protoc-gen-go v1.25.0 // protoc v3.15.8 -// source: pkg/rpc/scheduler/scheduler.proto +// source: internal/rpc/scheduler/scheduler.proto package scheduler import ( - reflect "reflect" - sync "sync" - base "d7y.io/dragonfly/v2/internal/rpc/base" proto "github.com/golang/protobuf/proto" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" + sync "sync" ) const ( @@ -56,7 +55,7 @@ type PeerTaskRequest struct { // biz id is used to generate different task ids for same url BizId string `protobuf:"bytes,3,opt,name=biz_id,json=bizId,proto3" json:"biz_id,omitempty"` // url meta info - UrlMeta *base.UrlMeta `protobuf:"bytes,4,opt,name=url_mata,json=urlMata,proto3" json:"url_mata,omitempty"` + UrlMeta *base.UrlMeta `protobuf:"bytes,4,opt,name=url_meta,json=urlMeta,proto3" json:"url_meta,omitempty"` // peer's id and must be global uniqueness PeerId string `protobuf:"bytes,5,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` // peer host info @@ -70,7 +69,7 @@ type PeerTaskRequest struct { func (x *PeerTaskRequest) Reset() { *x = PeerTaskRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[0] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -83,7 +82,7 @@ func (x *PeerTaskRequest) String() string { func (*PeerTaskRequest) ProtoMessage() {} func (x *PeerTaskRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[0] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -96,7 +95,7 @@ func (x *PeerTaskRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PeerTaskRequest.ProtoReflect.Descriptor instead. func (*PeerTaskRequest) Descriptor() ([]byte, []int) { - return file_pkg_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{0} + return file_internal_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{0} } func (x *PeerTaskRequest) GetUrl() string { @@ -120,7 +119,7 @@ func (x *PeerTaskRequest) GetBizId() string { return "" } -func (x *PeerTaskRequest) GetUrlMata() *base.UrlMeta { +func (x *PeerTaskRequest) GetUrlMeta() *base.UrlMeta { if x != nil { return x.UrlMeta } @@ -175,7 +174,7 @@ type RegisterResult struct { func (x *RegisterResult) Reset() { *x = RegisterResult{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[1] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -188,7 +187,7 @@ func (x *RegisterResult) String() string { func (*RegisterResult) ProtoMessage() {} func (x *RegisterResult) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[1] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -201,7 +200,7 @@ func (x *RegisterResult) ProtoReflect() protoreflect.Message { // Deprecated: Use RegisterResult.ProtoReflect.Descriptor instead. func (*RegisterResult) Descriptor() ([]byte, []int) { - return file_pkg_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{1} + return file_internal_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{1} } func (x *RegisterResult) GetTaskId() string { @@ -273,7 +272,7 @@ type SinglePiece struct { func (x *SinglePiece) Reset() { *x = SinglePiece{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[2] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -286,7 +285,7 @@ func (x *SinglePiece) String() string { func (*SinglePiece) ProtoMessage() {} func (x *SinglePiece) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[2] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -299,7 +298,7 @@ func (x *SinglePiece) ProtoReflect() protoreflect.Message { // Deprecated: Use SinglePiece.ProtoReflect.Descriptor instead. func (*SinglePiece) Descriptor() ([]byte, []int) { - return file_pkg_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{2} + return file_internal_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{2} } func (x *SinglePiece) GetDstPid() string { @@ -351,7 +350,7 @@ type PeerHost struct { func (x *PeerHost) Reset() { *x = PeerHost{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[3] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -364,7 +363,7 @@ func (x *PeerHost) String() string { func (*PeerHost) ProtoMessage() {} func (x *PeerHost) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[3] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -377,7 +376,7 @@ func (x *PeerHost) ProtoReflect() protoreflect.Message { // Deprecated: Use PeerHost.ProtoReflect.Descriptor instead. func (*PeerHost) Descriptor() ([]byte, []int) { - return file_pkg_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{3} + return file_internal_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{3} } func (x *PeerHost) GetUuid() string { @@ -473,7 +472,7 @@ type PieceResult struct { func (x *PieceResult) Reset() { *x = PieceResult{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[4] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -486,7 +485,7 @@ func (x *PieceResult) String() string { func (*PieceResult) ProtoMessage() {} func (x *PieceResult) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[4] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -499,7 +498,7 @@ func (x *PieceResult) ProtoReflect() protoreflect.Message { // Deprecated: Use PieceResult.ProtoReflect.Descriptor instead. func (*PieceResult) Descriptor() ([]byte, []int) { - return file_pkg_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{4} + return file_internal_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{4} } func (x *PieceResult) GetTaskId() string { @@ -591,7 +590,7 @@ type PeerPacket struct { func (x *PeerPacket) Reset() { *x = PeerPacket{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[5] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -604,7 +603,7 @@ func (x *PeerPacket) String() string { func (*PeerPacket) ProtoMessage() {} func (x *PeerPacket) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[5] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -617,7 +616,7 @@ func (x *PeerPacket) ProtoReflect() protoreflect.Message { // Deprecated: Use PeerPacket.ProtoReflect.Descriptor instead. func (*PeerPacket) Descriptor() ([]byte, []int) { - return file_pkg_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{5} + return file_internal_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{5} } func (x *PeerPacket) GetTaskId() string { @@ -688,7 +687,7 @@ type PeerResult struct { func (x *PeerResult) Reset() { *x = PeerResult{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[6] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -701,7 +700,7 @@ func (x *PeerResult) String() string { func (*PeerResult) ProtoMessage() {} func (x *PeerResult) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[6] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -714,7 +713,7 @@ func (x *PeerResult) ProtoReflect() protoreflect.Message { // Deprecated: Use PeerResult.ProtoReflect.Descriptor instead. func (*PeerResult) Descriptor() ([]byte, []int) { - return file_pkg_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{6} + return file_internal_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{6} } func (x *PeerResult) GetTaskId() string { @@ -806,7 +805,7 @@ type PeerTarget struct { func (x *PeerTarget) Reset() { *x = PeerTarget{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[7] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -819,7 +818,7 @@ func (x *PeerTarget) String() string { func (*PeerTarget) ProtoMessage() {} func (x *PeerTarget) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[7] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -832,7 +831,7 @@ func (x *PeerTarget) ProtoReflect() protoreflect.Message { // Deprecated: Use PeerTarget.ProtoReflect.Descriptor instead. func (*PeerTarget) Descriptor() ([]byte, []int) { - return file_pkg_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{7} + return file_internal_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{7} } func (x *PeerTarget) GetTaskId() string { @@ -865,7 +864,7 @@ type PeerPacket_DestPeer struct { func (x *PeerPacket_DestPeer) Reset() { *x = PeerPacket_DestPeer{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[8] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -878,7 +877,7 @@ func (x *PeerPacket_DestPeer) String() string { func (*PeerPacket_DestPeer) ProtoMessage() {} func (x *PeerPacket_DestPeer) ProtoReflect() protoreflect.Message { - mi := &file_pkg_rpc_scheduler_scheduler_proto_msgTypes[8] + mi := &file_internal_rpc_scheduler_scheduler_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -891,7 +890,7 @@ func (x *PeerPacket_DestPeer) ProtoReflect() protoreflect.Message { // Deprecated: Use PeerPacket_DestPeer.ProtoReflect.Descriptor instead. func (*PeerPacket_DestPeer) Descriptor() ([]byte, []int) { - return file_pkg_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{5, 0} + return file_internal_rpc_scheduler_scheduler_proto_rawDescGZIP(), []int{5, 0} } func (x *PeerPacket_DestPeer) GetIp() string { @@ -915,171 +914,172 @@ func (x *PeerPacket_DestPeer) GetPeerId() string { return "" } -var File_pkg_rpc_scheduler_scheduler_proto protoreflect.FileDescriptor +var File_internal_rpc_scheduler_scheduler_proto protoreflect.FileDescriptor -var file_pkg_rpc_scheduler_scheduler_proto_rawDesc = []byte{ - 0x0a, 0x21, 0x70, 0x6b, 0x67, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x72, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x1a, 0x17, - 0x70, 0x6b, 0x67, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x97, 0x02, 0x0a, 0x0f, 0x50, 0x65, 0x65, 0x72, 0x54, 0x61, 0x73, - 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x62, 0x69, 0x7a, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x08, 0x75, 0x72, 0x6c, - 0x5f, 0x6d, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x55, 0x72, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x4d, - 0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x09, - 0x70, 0x65, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, - 0x48, 0x6f, 0x73, 0x74, 0x52, 0x08, 0x70, 0x65, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x2b, - 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x4c, 0x6f, 0x61, - 0x64, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, - 0x73, 0x5f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x69, 0x73, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x22, 0xcd, - 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x0a, 0x73, 0x69, - 0x7a, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, - 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x53, 0x69, 0x7a, 0x65, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, - 0x09, 0x73, 0x69, 0x7a, 0x65, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x73, 0x69, - 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6e, - 0x67, 0x6c, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x69, 0x6e, 0x67, - 0x6c, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x69, 0x65, 0x63, 0x65, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, - 0x52, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x0e, - 0x0a, 0x0c, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x22, 0x71, - 0x0a, 0x0b, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x12, 0x17, 0x0a, - 0x07, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x64, 0x73, 0x74, 0x50, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x73, 0x74, 0x41, 0x64, 0x64, - 0x72, 0x12, 0x2e, 0x0a, 0x0a, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x50, 0x69, 0x65, - 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x70, 0x69, 0x65, 0x63, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0xfd, 0x01, 0x0a, 0x08, 0x50, 0x65, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, - 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x70, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, - 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, - 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, - 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, - 0x69, 0x64, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x63, 0x12, 0x21, - 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x5f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, - 0x79, 0x22, 0xbd, 0x02, 0x0a, 0x0b, 0x50, 0x69, 0x65, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x72, - 0x63, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x72, 0x63, - 0x50, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x73, 0x74, 0x50, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, - 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x65, 0x67, - 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, - 0x65, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, - 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x2b, 0x0a, - 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x4c, 0x6f, 0x61, 0x64, - 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x69, - 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0xd3, 0x02, 0x0a, 0x0a, 0x50, 0x65, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x72, 0x63, - 0x5f, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x72, 0x63, 0x50, - 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x61, - 0x6c, 0x6c, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x09, 0x6d, 0x61, 0x69, - 0x6e, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x08, 0x6d, 0x61, - 0x69, 0x6e, 0x50, 0x65, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0b, 0x73, 0x74, 0x65, 0x61, 0x6c, 0x5f, - 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, +var file_internal_rpc_scheduler_scheduler_proto_rawDesc = []byte{ + 0x0a, 0x26, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x1a, 0x1c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x72, 0x70, + 0x63, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x97, + 0x02, 0x0a, 0x0f, 0x50, 0x65, 0x65, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x15, 0x0a, 0x06, + 0x62, 0x69, 0x7a, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x69, + 0x7a, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x08, 0x75, 0x72, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x55, 0x72, 0x6c, + 0x4d, 0x65, 0x74, 0x61, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x17, 0x0a, + 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x09, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x68, + 0x6f, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x08, + 0x70, 0x65, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, + 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x08, 0x68, 0x6f, 0x73, + 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x6d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x4d, + 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x22, 0xcd, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, + 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, + 0x73, 0x6b, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x0a, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x73, 0x63, 0x6f, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, + 0x53, 0x69, 0x7a, 0x65, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x70, + 0x69, 0x65, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x50, 0x69, 0x65, + 0x63, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x50, 0x69, 0x65, 0x63, + 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x69, 0x65, 0x63, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x22, 0x71, 0x0a, 0x0b, 0x53, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x50, 0x69, 0x65, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x73, 0x74, 0x5f, 0x70, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x73, 0x74, 0x50, 0x69, 0x64, + 0x12, 0x19, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x64, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x12, 0x2e, 0x0a, 0x0a, 0x70, + 0x69, 0x65, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x09, 0x70, 0x69, 0x65, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xfd, 0x01, 0x0a, 0x08, + 0x50, 0x65, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x19, 0x0a, 0x08, + 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x72, 0x70, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x6f, 0x77, 0x6e, + 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x6f, + 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x63, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x5f, + 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x6e, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x22, 0xbd, 0x02, 0x0a, 0x0b, + 0x50, 0x69, 0x65, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, + 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, + 0x73, 0x6b, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x72, 0x63, 0x50, 0x69, 0x64, 0x12, 0x17, 0x0a, + 0x07, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x64, 0x73, 0x74, 0x50, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, + 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x69, 0x65, 0x63, 0x65, + 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x64, + 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x2b, 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f, + 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, + 0x4c, 0x6f, 0x61, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x66, 0x69, + 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xd3, 0x02, 0x0a, 0x0a, + 0x50, 0x65, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, + 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, + 0x6b, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x72, 0x63, 0x50, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e, + 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x09, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x65, 0x72, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x44, 0x65, + 0x73, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x50, 0x65, 0x65, 0x72, + 0x12, 0x3f, 0x0a, 0x0b, 0x73, 0x74, 0x65, 0x61, 0x6c, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x44, 0x65, 0x73, + 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x0a, 0x73, 0x74, 0x65, 0x61, 0x6c, 0x50, 0x65, 0x65, 0x72, + 0x73, 0x12, 0x1e, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x0a, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x1a, 0x4e, 0x0a, 0x08, 0x44, 0x65, 0x73, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x19, 0x0a, + 0x08, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x72, 0x70, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, + 0x64, 0x22, 0xb1, 0x02, 0x0a, 0x0a, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x69, 0x64, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x18, 0x0a, + 0x07, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, + 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3e, 0x0a, 0x0a, 0x50, 0x65, 0x65, 0x72, 0x54, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, + 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, + 0x65, 0x65, 0x72, 0x49, 0x64, 0x32, 0x9d, 0x02, 0x0a, 0x09, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x10, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, + 0x65, 0x65, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1a, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x46, + 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x69, 0x65, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x16, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, + 0x50, 0x69, 0x65, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x15, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x0a, 0x73, 0x74, 0x65, - 0x61, 0x6c, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x64, - 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x1a, 0x4e, 0x0a, 0x08, 0x44, 0x65, 0x73, 0x74, 0x50, - 0x65, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x70, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x17, - 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0xb1, 0x02, 0x0a, 0x0a, 0x50, 0x65, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, - 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, - 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x12, - 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x63, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, - 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12, 0x12, 0x0a, - 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x73, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x04, 0x63, - 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x62, 0x61, 0x73, 0x65, - 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x3e, 0x0a, 0x0a, 0x50, - 0x65, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, - 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, - 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x32, 0x9d, 0x02, 0x0a, 0x09, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x10, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x65, 0x65, 0x72, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1a, 0x2e, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x46, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x69, - 0x65, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x2e, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x50, 0x69, 0x65, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x1a, 0x15, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x50, 0x65, - 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x28, 0x01, 0x30, 0x01, 0x12, 0x41, 0x0a, 0x10, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x15, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 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, 0x09, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x15, 0x2e, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x54, 0x61, 0x72, - 0x67, 0x65, 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, 0x27, 0x5a, 0x25, 0x64, - 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x64, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x66, 0x6c, 0x79, 0x2f, - 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x74, 0x28, 0x01, 0x30, 0x01, 0x12, 0x41, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x15, 0x2e, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, + 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, 0x09, 0x4c, 0x65, 0x61, + 0x76, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x15, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 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, 0x2c, 0x5a, 0x2a, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, + 0x64, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_pkg_rpc_scheduler_scheduler_proto_rawDescOnce sync.Once - file_pkg_rpc_scheduler_scheduler_proto_rawDescData = file_pkg_rpc_scheduler_scheduler_proto_rawDesc + file_internal_rpc_scheduler_scheduler_proto_rawDescOnce sync.Once + file_internal_rpc_scheduler_scheduler_proto_rawDescData = file_internal_rpc_scheduler_scheduler_proto_rawDesc ) -func file_pkg_rpc_scheduler_scheduler_proto_rawDescGZIP() []byte { - file_pkg_rpc_scheduler_scheduler_proto_rawDescOnce.Do(func() { - file_pkg_rpc_scheduler_scheduler_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_rpc_scheduler_scheduler_proto_rawDescData) +func file_internal_rpc_scheduler_scheduler_proto_rawDescGZIP() []byte { + file_internal_rpc_scheduler_scheduler_proto_rawDescOnce.Do(func() { + file_internal_rpc_scheduler_scheduler_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_rpc_scheduler_scheduler_proto_rawDescData) }) - return file_pkg_rpc_scheduler_scheduler_proto_rawDescData + return file_internal_rpc_scheduler_scheduler_proto_rawDescData } -var file_pkg_rpc_scheduler_scheduler_proto_msgTypes = make([]protoimpl.MessageInfo, 9) -var file_pkg_rpc_scheduler_scheduler_proto_goTypes = []interface{}{ +var file_internal_rpc_scheduler_scheduler_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_internal_rpc_scheduler_scheduler_proto_goTypes = []interface{}{ (*PeerTaskRequest)(nil), // 0: scheduler.PeerTaskRequest (*RegisterResult)(nil), // 1: scheduler.RegisterResult (*SinglePiece)(nil), // 2: scheduler.SinglePiece @@ -1096,8 +1096,8 @@ var file_pkg_rpc_scheduler_scheduler_proto_goTypes = []interface{}{ (base.Code)(0), // 13: base.Code (*emptypb.Empty)(nil), // 14: google.protobuf.Empty } -var file_pkg_rpc_scheduler_scheduler_proto_depIdxs = []int32{ - 9, // 0: scheduler.PeerTaskRequest.url_mata:type_name -> base.UrlMeta +var file_internal_rpc_scheduler_scheduler_proto_depIdxs = []int32{ + 9, // 0: scheduler.PeerTaskRequest.url_meta:type_name -> base.UrlMeta 3, // 1: scheduler.PeerTaskRequest.peer_host:type_name -> scheduler.PeerHost 10, // 2: scheduler.PeerTaskRequest.host_load:type_name -> base.HostLoad 11, // 3: scheduler.RegisterResult.size_scope:type_name -> base.SizeScope @@ -1124,13 +1124,13 @@ var file_pkg_rpc_scheduler_scheduler_proto_depIdxs = []int32{ 0, // [0:12] is the sub-list for field type_name } -func init() { file_pkg_rpc_scheduler_scheduler_proto_init() } -func file_pkg_rpc_scheduler_scheduler_proto_init() { - if File_pkg_rpc_scheduler_scheduler_proto != nil { +func init() { file_internal_rpc_scheduler_scheduler_proto_init() } +func file_internal_rpc_scheduler_scheduler_proto_init() { + if File_internal_rpc_scheduler_scheduler_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_pkg_rpc_scheduler_scheduler_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_scheduler_scheduler_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PeerTaskRequest); i { case 0: return &v.state @@ -1142,7 +1142,7 @@ func file_pkg_rpc_scheduler_scheduler_proto_init() { return nil } } - file_pkg_rpc_scheduler_scheduler_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_scheduler_scheduler_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RegisterResult); i { case 0: return &v.state @@ -1154,7 +1154,7 @@ func file_pkg_rpc_scheduler_scheduler_proto_init() { return nil } } - file_pkg_rpc_scheduler_scheduler_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_scheduler_scheduler_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SinglePiece); i { case 0: return &v.state @@ -1166,7 +1166,7 @@ func file_pkg_rpc_scheduler_scheduler_proto_init() { return nil } } - file_pkg_rpc_scheduler_scheduler_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_scheduler_scheduler_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PeerHost); i { case 0: return &v.state @@ -1178,7 +1178,7 @@ func file_pkg_rpc_scheduler_scheduler_proto_init() { return nil } } - file_pkg_rpc_scheduler_scheduler_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_scheduler_scheduler_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PieceResult); i { case 0: return &v.state @@ -1190,7 +1190,7 @@ func file_pkg_rpc_scheduler_scheduler_proto_init() { return nil } } - file_pkg_rpc_scheduler_scheduler_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_scheduler_scheduler_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PeerPacket); i { case 0: return &v.state @@ -1202,7 +1202,7 @@ func file_pkg_rpc_scheduler_scheduler_proto_init() { return nil } } - file_pkg_rpc_scheduler_scheduler_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_scheduler_scheduler_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PeerResult); i { case 0: return &v.state @@ -1214,7 +1214,7 @@ func file_pkg_rpc_scheduler_scheduler_proto_init() { return nil } } - file_pkg_rpc_scheduler_scheduler_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_scheduler_scheduler_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PeerTarget); i { case 0: return &v.state @@ -1226,7 +1226,7 @@ func file_pkg_rpc_scheduler_scheduler_proto_init() { return nil } } - file_pkg_rpc_scheduler_scheduler_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_internal_rpc_scheduler_scheduler_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PeerPacket_DestPeer); i { case 0: return &v.state @@ -1239,7 +1239,7 @@ func file_pkg_rpc_scheduler_scheduler_proto_init() { } } } - file_pkg_rpc_scheduler_scheduler_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_internal_rpc_scheduler_scheduler_proto_msgTypes[1].OneofWrappers = []interface{}{ (*RegisterResult_SinglePiece)(nil), (*RegisterResult_PieceContent)(nil), } @@ -1247,18 +1247,18 @@ func file_pkg_rpc_scheduler_scheduler_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_pkg_rpc_scheduler_scheduler_proto_rawDesc, + RawDescriptor: file_internal_rpc_scheduler_scheduler_proto_rawDesc, NumEnums: 0, NumMessages: 9, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_pkg_rpc_scheduler_scheduler_proto_goTypes, - DependencyIndexes: file_pkg_rpc_scheduler_scheduler_proto_depIdxs, - MessageInfos: file_pkg_rpc_scheduler_scheduler_proto_msgTypes, + GoTypes: file_internal_rpc_scheduler_scheduler_proto_goTypes, + DependencyIndexes: file_internal_rpc_scheduler_scheduler_proto_depIdxs, + MessageInfos: file_internal_rpc_scheduler_scheduler_proto_msgTypes, }.Build() - File_pkg_rpc_scheduler_scheduler_proto = out.File - file_pkg_rpc_scheduler_scheduler_proto_rawDesc = nil - file_pkg_rpc_scheduler_scheduler_proto_goTypes = nil - file_pkg_rpc_scheduler_scheduler_proto_depIdxs = nil + File_internal_rpc_scheduler_scheduler_proto = out.File + file_internal_rpc_scheduler_scheduler_proto_rawDesc = nil + file_internal_rpc_scheduler_scheduler_proto_goTypes = nil + file_internal_rpc_scheduler_scheduler_proto_depIdxs = nil } diff --git a/internal/rpc/scheduler/scheduler_grpc.pb.go b/internal/rpc/scheduler/scheduler_grpc.pb.go index fbaea5045..86d02f8c9 100644 --- a/internal/rpc/scheduler/scheduler_grpc.pb.go +++ b/internal/rpc/scheduler/scheduler_grpc.pb.go @@ -4,7 +4,6 @@ package scheduler import ( context "context" - grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -248,5 +247,5 @@ var _Scheduler_serviceDesc = grpc.ServiceDesc{ ClientStreams: true, }, }, - Metadata: "pkg/rpc/scheduler/scheduler.proto", + Metadata: "internal/rpc/scheduler/scheduler.proto", }