mirror of https://github.com/dragonflyoss/api.git
Compare commits
85 Commits
Author | SHA1 | Date |
---|---|---|
|
17c5322a9e | |
|
47585b7eaf | |
|
cc94665915 | |
|
e528000637 | |
|
05a74d22cb | |
|
9b789e3418 | |
|
38508c2d68 | |
|
203a7b194b | |
|
96fe4250ae | |
|
d7a9e1c3d2 | |
|
07d2017a8a | |
|
18ebde934b | |
|
53d7b93edc | |
|
e509a2c3cc | |
|
da640571e2 | |
|
8c8e4d0b7b | |
|
86c6246bef | |
|
75f50ea5ab | |
|
e264b50709 | |
|
8e1782b9d8 | |
|
b7701531cf | |
|
6bd235200f | |
|
50ab9e7b9c | |
|
33be225960 | |
|
d69955fe1f | |
|
2c77b64e97 | |
|
9e4f8d11bb | |
|
8677f335fc | |
|
be1ca95b4c | |
|
b040351547 | |
|
ff110f324b | |
|
4b5d9d7120 | |
|
87be7d1d22 | |
|
ee08ab7f31 | |
|
9bee47043a | |
|
8d312b5628 | |
|
f201aeb1b8 | |
|
ff1adb1882 | |
|
96d32ae2af | |
|
4d150a7dfd | |
|
4df0158d23 | |
|
d257df3a42 | |
|
45c2817e5e | |
|
c6f625f3ad | |
|
c8e0b2526f | |
|
572faaa58f | |
|
7fde34770f | |
|
2c761170dd | |
|
c8398377dd | |
|
05b74d50e3 | |
|
2a23158326 | |
|
d4e497d037 | |
|
c7f8c2a600 | |
|
1920f90700 | |
|
214460fd27 | |
|
161f9d810f | |
|
73d6bea208 | |
|
dc2431554e | |
|
86b994e4ae | |
|
b9b98411e4 | |
|
13a45c2c30 | |
|
352bcc2611 | |
|
76b2eac2d0 | |
|
4b7da56505 | |
|
1a1fa3aaec | |
|
bff2301ac7 | |
|
1834d538ba | |
|
05f657ba25 | |
|
502a8fbe6e | |
|
190d05d9bf | |
|
af929d036c | |
|
c3487f9ffd | |
|
7f2a53a4eb | |
|
de2bebaccf | |
|
4aa3825a82 | |
|
4a0832895c | |
|
956178e875 | |
|
bcc8f4c984 | |
|
f6b1efbe8d | |
|
9d4dd33c94 | |
|
f4f537a6fb | |
|
1ce6ea0738 | |
|
d92317ee72 | |
|
8ac708ed9c | |
|
f79271fd78 |
|
@ -18,10 +18,9 @@ jobs:
|
|||
fetch-depth: '0'
|
||||
|
||||
- name: Golangci lint
|
||||
uses: golangci/golangci-lint-action@v6
|
||||
uses: golangci/golangci-lint-action@v8
|
||||
with:
|
||||
version: v1.54
|
||||
args: --verbose
|
||||
version: v2.1.6
|
||||
|
||||
rust-lint:
|
||||
name: Rust Lint
|
||||
|
|
|
@ -1,37 +1,53 @@
|
|||
version: "2"
|
||||
run:
|
||||
deadline: 3m
|
||||
modules-download-mode: readonly
|
||||
|
||||
linters-settings:
|
||||
gocyclo:
|
||||
min-complexity: 60
|
||||
gci:
|
||||
sections:
|
||||
- standard
|
||||
- default
|
||||
|
||||
linters:
|
||||
default: none
|
||||
enable:
|
||||
- errcheck
|
||||
- goconst
|
||||
- gocyclo
|
||||
- govet
|
||||
- misspell
|
||||
- staticcheck
|
||||
settings:
|
||||
gocyclo:
|
||||
min-complexity: 60
|
||||
exclusions:
|
||||
generated: lax
|
||||
presets:
|
||||
- comments
|
||||
- common-false-positives
|
||||
- legacy
|
||||
- std-error-handling
|
||||
rules:
|
||||
- linters:
|
||||
- staticcheck
|
||||
text: 'SA1019:'
|
||||
paths:
|
||||
- third_party$
|
||||
- builtin$
|
||||
- examples$
|
||||
issues:
|
||||
new: true
|
||||
exclude-rules:
|
||||
- linters:
|
||||
- staticcheck
|
||||
text: "SA1019:"
|
||||
|
||||
linters:
|
||||
disable-all: true
|
||||
formatters:
|
||||
enable:
|
||||
- gci
|
||||
- gofmt
|
||||
- golint
|
||||
- misspell
|
||||
- govet
|
||||
- goconst
|
||||
- deadcode
|
||||
- gocyclo
|
||||
- staticcheck
|
||||
- errcheck
|
||||
|
||||
settings:
|
||||
gci:
|
||||
sections:
|
||||
- standard
|
||||
- default
|
||||
exclusions:
|
||||
generated: lax
|
||||
paths:
|
||||
- third_party$
|
||||
- builtin$
|
||||
- examples$
|
||||
output:
|
||||
format: colored-line-number
|
||||
print-issued-lines: true
|
||||
print-linter-name: true
|
||||
formats:
|
||||
text:
|
||||
path: stdout
|
||||
print-linter-name: true
|
||||
print-issued-lines: true
|
|
@ -1,6 +1,6 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "addr2line"
|
||||
|
@ -190,10 +190,10 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "dragonfly-api"
|
||||
version = "2.0.174"
|
||||
version = "2.1.39"
|
||||
dependencies = [
|
||||
"prost",
|
||||
"prost-types",
|
||||
"prost 0.13.5",
|
||||
"prost-types 0.14.0",
|
||||
"prost-wkt-types",
|
||||
"serde",
|
||||
"tokio",
|
||||
|
@ -493,9 +493,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
|
|||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.158"
|
||||
version = "0.2.169"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
|
||||
checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
|
||||
|
||||
[[package]]
|
||||
name = "linux-raw-sys"
|
||||
|
@ -656,12 +656,22 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "prost"
|
||||
version = "0.13.3"
|
||||
version = "0.13.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f"
|
||||
checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"prost-derive",
|
||||
"prost-derive 0.13.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "prost"
|
||||
version = "0.14.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bbe28332295ca4451b7d779aff2749b144cabe5e6e05fe86f31337831d7df232"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"prost-derive 0.14.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -678,8 +688,8 @@ dependencies = [
|
|||
"once_cell",
|
||||
"petgraph",
|
||||
"prettyplease",
|
||||
"prost",
|
||||
"prost-types",
|
||||
"prost 0.13.5",
|
||||
"prost-types 0.13.5",
|
||||
"regex",
|
||||
"syn",
|
||||
"tempfile",
|
||||
|
@ -687,9 +697,22 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "prost-derive"
|
||||
version = "0.13.3"
|
||||
version = "0.13.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5"
|
||||
checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"itertools",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "prost-derive"
|
||||
version = "0.14.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "26ac3e3c6b0e1c219e61ceda600eaad26d7195ecc9b5c027925c904091374ab5"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"itertools",
|
||||
|
@ -700,22 +723,31 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "prost-types"
|
||||
version = "0.13.3"
|
||||
version = "0.13.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670"
|
||||
checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16"
|
||||
dependencies = [
|
||||
"prost",
|
||||
"prost 0.13.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "prost-types"
|
||||
version = "0.14.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f2bfff0dbd11dbadf180fea466aa146cdf20aed230e1c42b8bae192df8f0469a"
|
||||
dependencies = [
|
||||
"prost 0.14.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "prost-wkt"
|
||||
version = "0.6.0"
|
||||
version = "0.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a8d84e2bee181b04c2bac339f2bfe818c46a99750488cc6728ce4181d5aa8299"
|
||||
checksum = "497e1e938f0c09ef9cabe1d49437b4016e03e8f82fbbe5d1c62a9b61b9decae1"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"inventory",
|
||||
"prost",
|
||||
"prost 0.13.5",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
|
@ -724,27 +756,27 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "prost-wkt-build"
|
||||
version = "0.6.0"
|
||||
version = "0.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a669d5acbe719010c6f62a64e6d7d88fdedc1fe46e419747949ecb6312e9b14"
|
||||
checksum = "07b8bf115b70a7aa5af1fd5d6e9418492e9ccb6e4785e858c938e28d132a884b"
|
||||
dependencies = [
|
||||
"heck",
|
||||
"prost",
|
||||
"prost 0.13.5",
|
||||
"prost-build",
|
||||
"prost-types",
|
||||
"prost-types 0.13.5",
|
||||
"quote",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "prost-wkt-types"
|
||||
version = "0.6.0"
|
||||
version = "0.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "01ef068e9b82e654614b22e6b13699bd545b6c0e2e721736008b00b38aeb4f64"
|
||||
checksum = "c8cdde6df0a98311c839392ca2f2f0bcecd545f86a62b4e3c6a49c336e970fe5"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"prost",
|
||||
"prost 0.13.5",
|
||||
"prost-build",
|
||||
"prost-types",
|
||||
"prost-types 0.13.5",
|
||||
"prost-wkt",
|
||||
"prost-wkt-build",
|
||||
"regex",
|
||||
|
@ -854,18 +886,18 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
|
|||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.215"
|
||||
version = "1.0.219"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f"
|
||||
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.215"
|
||||
version = "1.0.219"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0"
|
||||
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -953,9 +985,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "1.41.1"
|
||||
version = "1.45.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33"
|
||||
checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779"
|
||||
dependencies = [
|
||||
"backtrace",
|
||||
"bytes",
|
||||
|
@ -969,9 +1001,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tokio-macros"
|
||||
version = "2.4.0"
|
||||
version = "2.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
|
||||
checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -1022,7 +1054,7 @@ dependencies = [
|
|||
"hyper-util",
|
||||
"percent-encoding",
|
||||
"pin-project",
|
||||
"prost",
|
||||
"prost 0.13.5",
|
||||
"socket2",
|
||||
"tokio",
|
||||
"tokio-stream",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "dragonfly-api"
|
||||
version = "2.0.174"
|
||||
version = "2.1.39"
|
||||
authors = ["Gaius <gaius.qi@gmail.com>"]
|
||||
edition = "2021"
|
||||
license = "Apache-2.0"
|
||||
|
@ -12,9 +12,9 @@ readme = "README.md"
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
[dependencies]
|
||||
tonic = "0.12.3"
|
||||
prost = "0.13.3"
|
||||
prost-types = "0.13.3"
|
||||
tokio = { version = "1.41.1", features = ["rt-multi-thread", "macros"] }
|
||||
prost = "0.13.5"
|
||||
prost-types = "0.14.0"
|
||||
tokio = { version = "1.45.1", features = ["rt-multi-thread", "macros"] }
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
prost-wkt-types = "0.6"
|
||||
|
||||
|
|
2
Makefile
2
Makefile
|
@ -17,7 +17,7 @@ all: help
|
|||
# Run code lint
|
||||
lint: markdownlint
|
||||
@echo "Begin to golangci-lint."
|
||||
@golangci-lint run
|
||||
@./hack/golanglint.sh
|
||||
.PHONY: lint
|
||||
|
||||
# Run markdown lint
|
||||
|
|
12
README.md
12
README.md
|
@ -1,6 +1,6 @@
|
|||
# api
|
||||
|
||||
[](https://github.com/dragonflyoss/Dragonfly2/discussions)
|
||||
[](https://github.com/dragonflyoss/dragonfly/discussions)
|
||||
[](https://github.com/dragonflyoss/api/blob/main/LICENSE)
|
||||
|
||||
Canonical location of the Dragonfly API definition.
|
||||
|
@ -9,24 +9,24 @@ The project includes the api definitions of dragonfly services and the mocks of
|
|||
## Note to developers
|
||||
|
||||
If developers need to change dragonfly api definition,
|
||||
please contact [dragonfly maintainers](https://github.com/dragonflyoss/Dragonfly2/blob/main/MAINTAINERS.md).
|
||||
please contact [dragonfly maintainers](https://github.com/dragonflyoss/dragonfly/blob/main/MAINTAINERS.md).
|
||||
|
||||
## Community
|
||||
|
||||
Join the conversation and help the community.
|
||||
|
||||
- **Slack Channel**: [#dragonfly](https://cloud-native.slack.com/messages/dragonfly/) on [CNCF Slack](https://slack.cncf.io/)
|
||||
- **Discussion Group**: <dragonfly-discuss@googlegroups.com>
|
||||
- **Github Discussions**: [Dragonfly Discussion Forum](https://github.com/dragonflyoss/dragonfly/discussions)
|
||||
- **Developer Group**: <dragonfly-developers@googlegroups.com>
|
||||
- **Github Discussions**: [Dragonfly Discussion Forum](https://github.com/dragonflyoss/Dragonfly2/discussions)
|
||||
- **Maintainer Group**: <dragonfly-maintainers@googlegroups.com>
|
||||
- **Twitter**: [@dragonfly_oss](https://twitter.com/dragonfly_oss)
|
||||
- **DingTalk**: [22880028764](https://qr.dingtalk.com/action/joingroup?code=v1,k1,pkV9IbsSyDusFQdByPSK3HfCG61ZCLeb8b/lpQ3uUqI=&_dt_no_comment=1&origin=11)
|
||||
|
||||
## Contributing
|
||||
|
||||
You should check out our
|
||||
[CONTRIBUTING](https://github.com/dragonflyoss/Dragonfly2/blob/main/CONTRIBUTING.md) and develop the project together.
|
||||
[CONTRIBUTING](https://github.com/dragonflyoss/dragonfly/blob/main/CONTRIBUTING.md) and develop the project together.
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
Please refer to our [Code of Conduct](https://github.com/dragonflyoss/Dragonfly2/blob/main/CODE_OF_CONDUCT.md).
|
||||
Please refer to our [Code of Conduct](https://github.com/dragonflyoss/dragonfly/blob/main/CODE_OF_CONDUCT.md).
|
||||
|
|
18
go.mod
18
go.mod
|
@ -1,17 +1,17 @@
|
|||
module d7y.io/api/v2
|
||||
|
||||
go 1.23.0
|
||||
go 1.23.8
|
||||
|
||||
require (
|
||||
github.com/envoyproxy/protoc-gen-validate v1.1.0
|
||||
go.uber.org/mock v0.4.0
|
||||
google.golang.org/grpc v1.68.0
|
||||
google.golang.org/protobuf v1.35.2
|
||||
github.com/envoyproxy/protoc-gen-validate v1.2.1
|
||||
go.uber.org/mock v0.5.2
|
||||
google.golang.org/grpc v1.73.0
|
||||
google.golang.org/protobuf v1.36.6
|
||||
)
|
||||
|
||||
require (
|
||||
golang.org/x/net v0.29.0 // indirect
|
||||
golang.org/x/sys v0.25.0 // indirect
|
||||
golang.org/x/text v0.18.0 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
|
||||
golang.org/x/net v0.38.0 // indirect
|
||||
golang.org/x/sys v0.31.0 // indirect
|
||||
golang.org/x/text v0.23.0 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 // indirect
|
||||
)
|
||||
|
|
54
go.sum
54
go.sum
|
@ -1,20 +1,38 @@
|
|||
github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM=
|
||||
github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4=
|
||||
github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8=
|
||||
github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU=
|
||||
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
|
||||
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
|
||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
|
||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
|
||||
go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
|
||||
golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
|
||||
golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
|
||||
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
|
||||
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
|
||||
golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
|
||||
google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0=
|
||||
google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA=
|
||||
google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io=
|
||||
google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
|
||||
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
|
||||
go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ=
|
||||
go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y=
|
||||
go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M=
|
||||
go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE=
|
||||
go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY=
|
||||
go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w=
|
||||
go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs=
|
||||
go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc=
|
||||
go.uber.org/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko=
|
||||
go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o=
|
||||
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
|
||||
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
|
||||
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
|
||||
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
|
||||
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 h1:e0AIkUUhxyBKh6ssZNrAMeqhA7RKUj42346d1y02i2g=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
|
||||
google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok=
|
||||
google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc=
|
||||
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
|
||||
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
|
||||
LINT_DIR=/data
|
||||
GOLANGCI_IMAGE=golangci/golangci-lint:v1.54
|
||||
|
||||
docker run --rm \
|
||||
-w "${LINT_DIR}" \
|
||||
-v "$(pwd):${LINT_DIR}:ro" \
|
||||
${GOLANGCI_IMAGE} \
|
||||
golangci-lint \
|
||||
run -v
|
File diff suppressed because it is too large
Load Diff
|
@ -668,17 +668,6 @@ func (m *Task) validate(all bool) error {
|
|||
|
||||
// no validation rules for RequestHeader
|
||||
|
||||
if m.GetPieceLength() < 1 {
|
||||
err := TaskValidationError{
|
||||
field: "PieceLength",
|
||||
reason: "value must be greater than or equal to 1",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
}
|
||||
errors = append(errors, err)
|
||||
}
|
||||
|
||||
// no validation rules for ContentLength
|
||||
|
||||
// no validation rules for PieceCount
|
||||
|
@ -778,7 +767,7 @@ func (m *Task) validate(all bool) error {
|
|||
if !_Task_Digest_Pattern.MatchString(m.GetDigest()) {
|
||||
err := TaskValidationError{
|
||||
field: "Digest",
|
||||
reason: "value does not match regex pattern \"^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$\"",
|
||||
reason: "value does not match regex pattern \"^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]+)$\"",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
|
@ -875,7 +864,7 @@ var _ interface {
|
|||
ErrorName() string
|
||||
} = TaskValidationError{}
|
||||
|
||||
var _Task_Digest_Pattern = regexp.MustCompile("^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$")
|
||||
var _Task_Digest_Pattern = regexp.MustCompile("^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]+)$")
|
||||
|
||||
// Validate checks the field values on PersistentCacheTask with the rules
|
||||
// defined in the proto definition for this message. If any rules are
|
||||
|
@ -925,21 +914,10 @@ func (m *PersistentCacheTask) validate(all bool) error {
|
|||
|
||||
// no validation rules for CurrentReplicaCount
|
||||
|
||||
if !_PersistentCacheTask_Digest_Pattern.MatchString(m.GetDigest()) {
|
||||
err := PersistentCacheTaskValidationError{
|
||||
field: "Digest",
|
||||
reason: "value does not match regex pattern \"^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$\"",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
}
|
||||
errors = append(errors, err)
|
||||
}
|
||||
|
||||
if m.GetPieceLength() < 1 {
|
||||
if m.GetPieceLength() < 4194304 {
|
||||
err := PersistentCacheTaskValidationError{
|
||||
field: "PieceLength",
|
||||
reason: "value must be greater than or equal to 1",
|
||||
reason: "value must be greater than or equal to 4194304",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
|
@ -962,6 +940,17 @@ func (m *PersistentCacheTask) validate(all bool) error {
|
|||
errors = append(errors, err)
|
||||
}
|
||||
|
||||
if m.GetTtl() == nil {
|
||||
err := PersistentCacheTaskValidationError{
|
||||
field: "Ttl",
|
||||
reason: "value is required",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
}
|
||||
errors = append(errors, err)
|
||||
}
|
||||
|
||||
if m.GetCreatedAt() == nil {
|
||||
err := PersistentCacheTaskValidationError{
|
||||
field: "CreatedAt",
|
||||
|
@ -1072,8 +1061,6 @@ var _ interface {
|
|||
ErrorName() string
|
||||
} = PersistentCacheTaskValidationError{}
|
||||
|
||||
var _PersistentCacheTask_Digest_Pattern = regexp.MustCompile("^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$")
|
||||
|
||||
// Validate checks the field values on Host with the rules defined in the proto
|
||||
// definition for this message. If any rules are violated, the first error
|
||||
// encountered is returned, or nil if there are no violations.
|
||||
|
@ -2356,6 +2343,12 @@ func (m *Download) validate(all bool) error {
|
|||
|
||||
// no validation rules for IsPrefetch
|
||||
|
||||
// no validation rules for NeedPieceContent
|
||||
|
||||
// no validation rules for LoadToCache
|
||||
|
||||
// no validation rules for ForceHardLink
|
||||
|
||||
if m.Digest != nil {
|
||||
|
||||
if m.GetDigest() != "" {
|
||||
|
@ -2363,7 +2356,7 @@ func (m *Download) validate(all bool) error {
|
|||
if !_Download_Digest_Pattern.MatchString(m.GetDigest()) {
|
||||
err := DownloadValidationError{
|
||||
field: "Digest",
|
||||
reason: "value does not match regex pattern \"^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$\"",
|
||||
reason: "value does not match regex pattern \"^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]+)$\"",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
|
@ -2420,10 +2413,10 @@ func (m *Download) validate(all bool) error {
|
|||
|
||||
if m.GetPieceLength() != 0 {
|
||||
|
||||
if m.GetPieceLength() < 1 {
|
||||
if m.GetPieceLength() < 4194304 {
|
||||
err := DownloadValidationError{
|
||||
field: "PieceLength",
|
||||
reason: "value must be greater than or equal to 1",
|
||||
reason: "value must be greater than or equal to 4194304",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
|
@ -2553,6 +2546,10 @@ func (m *Download) validate(all bool) error {
|
|||
|
||||
}
|
||||
|
||||
if m.ContentForCalculatingTaskId != nil {
|
||||
// no validation rules for ContentForCalculatingTaskId
|
||||
}
|
||||
|
||||
if len(errors) > 0 {
|
||||
return DownloadMultiError(errors)
|
||||
}
|
||||
|
@ -2630,7 +2627,7 @@ var _ interface {
|
|||
ErrorName() string
|
||||
} = DownloadValidationError{}
|
||||
|
||||
var _Download_Digest_Pattern = regexp.MustCompile("^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$")
|
||||
var _Download_Digest_Pattern = regexp.MustCompile("^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]+)$")
|
||||
|
||||
// Validate checks the field values on ObjectStorage with the rules defined in
|
||||
// the proto definition for this message. If any rules are violated, the first
|
||||
|
@ -3108,7 +3105,7 @@ func (m *Piece) validate(all bool) error {
|
|||
if !_Piece_Digest_Pattern.MatchString(m.GetDigest()) {
|
||||
err := PieceValidationError{
|
||||
field: "Digest",
|
||||
reason: "value does not match regex pattern \"^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$\"",
|
||||
reason: "value does not match regex pattern \"^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]+)$\"",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
|
@ -3259,4 +3256,4 @@ var _ interface {
|
|||
ErrorName() string
|
||||
} = PieceValidationError{}
|
||||
|
||||
var _Piece_Digest_Pattern = regexp.MustCompile("^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$")
|
||||
var _Piece_Digest_Pattern = regexp.MustCompile("^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]+)$")
|
||||
|
|
|
@ -170,7 +170,7 @@ message Task {
|
|||
// Download url.
|
||||
string url = 3 [(validate.rules).string.uri = true];
|
||||
// Digest of the task digest, for example blake3:xxx or sha256:yyy.
|
||||
optional string digest = 4 [(validate.rules).string = {pattern: "^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$", ignore_empty: true}];
|
||||
optional string digest = 4 [(validate.rules).string = {pattern: "^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]+)$", ignore_empty: true}];
|
||||
// URL tag identifies different task for same url.
|
||||
optional string tag = 5;
|
||||
// Application of task.
|
||||
|
@ -183,26 +183,24 @@ message Task {
|
|||
repeated string filtered_query_params = 7;
|
||||
// Task request headers.
|
||||
map<string, string> request_header = 8;
|
||||
// Task piece length.
|
||||
uint64 piece_length = 9 [(validate.rules).uint64.gte = 1];
|
||||
// Task content length.
|
||||
uint64 content_length = 10;
|
||||
uint64 content_length = 9;
|
||||
// Task piece count.
|
||||
uint32 piece_count = 11;
|
||||
uint32 piece_count = 10;
|
||||
// Task size scope.
|
||||
SizeScope size_scope = 12;
|
||||
SizeScope size_scope = 11;
|
||||
// Pieces of task.
|
||||
repeated Piece pieces = 13 [(validate.rules).repeated = {min_items: 1, ignore_empty: true}];
|
||||
repeated Piece pieces = 12 [(validate.rules).repeated = {min_items: 1, ignore_empty: true}];
|
||||
// Task state.
|
||||
string state = 14 [(validate.rules).string.min_len = 1];
|
||||
string state = 13 [(validate.rules).string.min_len = 1];
|
||||
// Task peer count.
|
||||
uint32 peer_count = 15;
|
||||
uint32 peer_count = 14;
|
||||
// Task contains available peer.
|
||||
bool has_available_peer = 16;
|
||||
bool has_available_peer = 15;
|
||||
// Task create time.
|
||||
google.protobuf.Timestamp created_at = 17 [(validate.rules).timestamp.required = true];
|
||||
google.protobuf.Timestamp created_at = 16 [(validate.rules).timestamp.required = true];
|
||||
// Task update time.
|
||||
google.protobuf.Timestamp updated_at = 18 [(validate.rules).timestamp.required = true];
|
||||
google.protobuf.Timestamp updated_at = 17 [(validate.rules).timestamp.required = true];
|
||||
}
|
||||
|
||||
// PersistentCacheTask metadata.
|
||||
|
@ -220,20 +218,20 @@ message PersistentCacheTask {
|
|||
// Current replica count of the cache task. If cache task is not persistent,
|
||||
// the persistent cache task will be deleted when dfdaemon runs garbage collection.
|
||||
uint64 current_replica_count = 4;
|
||||
// Digest of the task digest, for example blake3:xxx or sha256:yyy.
|
||||
string digest = 5 [(validate.rules).string = {pattern: "^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$"}];
|
||||
// Tag is used to distinguish different persistent cache tasks.
|
||||
optional string tag = 6;
|
||||
optional string tag = 5;
|
||||
// Application of task.
|
||||
optional string application = 7;
|
||||
optional string application = 6;
|
||||
// Task piece length.
|
||||
uint64 piece_length = 8 [(validate.rules).uint64.gte = 1];
|
||||
uint64 piece_length = 7 [(validate.rules).uint64.gte = 4194304];
|
||||
// Task content length.
|
||||
uint64 content_length = 9;
|
||||
uint64 content_length = 8;
|
||||
// Task piece count.
|
||||
uint32 piece_count = 10;
|
||||
uint32 piece_count = 9;
|
||||
// Task state.
|
||||
string state = 11 [(validate.rules).string.min_len = 1];
|
||||
string state = 10 [(validate.rules).string.min_len = 1];
|
||||
// TTL of the persistent cache task.
|
||||
google.protobuf.Duration ttl = 11 [(validate.rules).duration.required = true];
|
||||
// Task create time.
|
||||
google.protobuf.Timestamp created_at = 12 [(validate.rules).timestamp.required = true];
|
||||
// Task update time.
|
||||
|
@ -398,7 +396,7 @@ message Download {
|
|||
// Download url.
|
||||
string url = 1 [(validate.rules).string.uri = true];
|
||||
// Digest of the task digest, for example blake3:xxx or sha256:yyy.
|
||||
optional string digest = 2 [(validate.rules).string = {pattern: "^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$", ignore_empty: true}];
|
||||
optional string digest = 2 [(validate.rules).string = {pattern: "^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]+)$", ignore_empty: true}];
|
||||
// Range is url range of request. If protocol is http, range
|
||||
// will set in request header. If protocol is others, range
|
||||
// will set in range field.
|
||||
|
@ -419,26 +417,42 @@ message Download {
|
|||
repeated string filtered_query_params = 8;
|
||||
// Task request headers.
|
||||
map<string, string> request_header = 9;
|
||||
// Task piece length.
|
||||
optional uint64 piece_length = 10 [(validate.rules).uint64 = {gte: 1, ignore_empty: true}];
|
||||
// File path to be exported.
|
||||
// Task piece length, the value needs to be greater than or equal to 4194304(4MiB).
|
||||
optional uint64 piece_length = 10 [(validate.rules).uint64 = {gte: 4194304, ignore_empty: true}];
|
||||
// File path to be downloaded. If output_path is set, the downloaded file will be saved to the specified path.
|
||||
// Dfdaemon will try to create hard link to the output path before starting the download. If hard link creation fails,
|
||||
// it will copy the file to the output path after the download is completed.
|
||||
// For more details refer to https://github.com/dragonflyoss/design/blob/main/systems-analysis/file-download-workflow-with-hard-link/README.md.
|
||||
optional string output_path = 11 [(validate.rules).string = {min_len: 1, ignore_empty: true}];
|
||||
// Download timeout.
|
||||
optional google.protobuf.Duration timeout = 12;
|
||||
// Dfdaemon will disable download back-to-source by itself, if disable_back_to_source is true.
|
||||
// Dfdaemon cannot download the task from the source if disable_back_to_source is true.
|
||||
bool disable_back_to_source = 13;
|
||||
// Scheduler will triggers peer to download back-to-source, if need_back_to_source is true.
|
||||
// Scheduler needs to schedule the task downloads from the source if need_back_to_source is true.
|
||||
bool need_back_to_source = 14;
|
||||
// certificate_chain is the client certs with DER format for the backend client to download back-to-source.
|
||||
repeated bytes certificate_chain = 15;
|
||||
// Prefetch pre-downloads all pieces of the task when download task with range request.
|
||||
// Prefetch pre-downloads all pieces of the task when the download task request is a range request.
|
||||
bool prefetch = 16;
|
||||
// Object Storage related information.
|
||||
// Object storage protocol information.
|
||||
optional ObjectStorage object_storage = 17;
|
||||
// HDFS related information.
|
||||
// HDFS protocol information.
|
||||
optional HDFS hdfs = 18;
|
||||
// is_prefetch is the flag to indicate whether the request is a prefetch request.
|
||||
bool is_prefetch = 19;
|
||||
// need_piece_content is the flag to indicate whether the response needs to return piece content.
|
||||
bool need_piece_content = 20;
|
||||
// load_to_cache indicates whether the content downloaded will be stored in the cache storage.
|
||||
// Cache storage is designed to store downloaded piece content from preheat tasks,
|
||||
// allowing other peers to access the content from memory instead of disk.
|
||||
bool load_to_cache = 21;
|
||||
// force_hard_link is the flag to indicate whether the download file must be hard linked to the output path.
|
||||
// For more details refer to https://github.com/dragonflyoss/design/blob/main/systems-analysis/file-download-workflow-with-hard-link/README.md.
|
||||
bool force_hard_link = 22;
|
||||
// content_for_calculating_task_id is the content used to calculate the task id.
|
||||
// If content_for_calculating_task_id is set, use its value to calculate the task ID.
|
||||
// Otherwise, calculate the task ID based on url, piece_length, tag, application, and filtered_query_params.
|
||||
optional string content_for_calculating_task_id = 23;
|
||||
}
|
||||
|
||||
// Object Storage related information.
|
||||
|
@ -484,7 +498,7 @@ message Piece {
|
|||
// Piece length.
|
||||
uint64 length = 4;
|
||||
// Digest of the piece data, for example blake3:xxx or sha256:yyy.
|
||||
string digest = 5 [(validate.rules).string = {pattern: "^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$", ignore_empty: true}];
|
||||
string digest = 5 [(validate.rules).string = {pattern: "^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]+)$", ignore_empty: true}];
|
||||
// Piece content.
|
||||
optional bytes content = 6 [(validate.rules).bytes = {min_len: 1, ignore_empty: true}];
|
||||
// Traffic type.
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -105,12 +105,8 @@ message DownloadPieceRequest{
|
|||
message DownloadPieceResponse {
|
||||
// Piece information.
|
||||
common.v2.Piece piece = 1 [(validate.rules).message.required = true];
|
||||
}
|
||||
|
||||
// UploadTaskRequest represents request of UploadTask.
|
||||
message UploadTaskRequest {
|
||||
// Task metadata.
|
||||
common.v2.Task task = 1 [(validate.rules).message.required = true];
|
||||
// Piece metadata digest, it is used to verify the integrity of the piece metadata.
|
||||
optional string digest = 2 [(validate.rules).string = {pattern: "^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]+)$", ignore_empty: true}];
|
||||
}
|
||||
|
||||
// StatTaskRequest represents request of StatTask.
|
||||
|
@ -137,10 +133,18 @@ message DownloadPersistentCacheTaskRequest {
|
|||
optional string tag = 3;
|
||||
// Application of task.
|
||||
optional string application = 4;
|
||||
// File path to be exported.
|
||||
string output_path = 5 [(validate.rules).string.min_len = 1];
|
||||
// File path to be exported. If output_path is set, the exported file will be saved to the specified path.
|
||||
// Dfdaemon will try to create hard link to the output path before starting the export. If hard link creation fails,
|
||||
// it will copy the file to the output path after the export is completed.
|
||||
// For more details refer to https://github.com/dragonflyoss/design/blob/main/systems-analysis/file-download-workflow-with-hard-link/README.md.
|
||||
optional string output_path = 5 [(validate.rules).string = {min_len: 1, ignore_empty: true}];
|
||||
// Download timeout.
|
||||
optional google.protobuf.Duration timeout = 6;
|
||||
// need_piece_content is the flag to indicate whether the response needs to return piece content.
|
||||
bool need_piece_content = 7;
|
||||
// force_hard_link is the flag to indicate whether the exported file must be hard linked to the output path.
|
||||
// For more details refer to https://github.com/dragonflyoss/design/blob/main/systems-analysis/file-download-workflow-with-hard-link/README.md.
|
||||
bool force_hard_link = 8;
|
||||
}
|
||||
|
||||
// DownloadPersistentCacheTaskStartedResponse represents task download started response of DownloadPersistentCacheTaskResponse.
|
||||
|
@ -168,18 +172,35 @@ message DownloadPersistentCacheTaskResponse {
|
|||
|
||||
// UploadPersistentCacheTaskRequest represents request of UploadPersistentCacheTask.
|
||||
message UploadPersistentCacheTaskRequest {
|
||||
// content_for_calculating_task_id is the content used to calculate the task id.
|
||||
// If content_for_calculating_task_id is set, use its value to calculate the task ID.
|
||||
// Otherwise, calculate the task ID based on the file content, tag and application by crc32 algorithm`.
|
||||
optional string content_for_calculating_task_id = 1;
|
||||
// Upload file path of persistent cache task.
|
||||
string path = 1 [(validate.rules).string = {min_len: 1}];
|
||||
string path = 2 [(validate.rules).string = {min_len: 1}];
|
||||
// Replica count of the persistent persistent cache task.
|
||||
uint64 persistent_replica_count = 2 [(validate.rules).uint64.gte = 1];
|
||||
uint64 persistent_replica_count = 3 [(validate.rules).uint64 = {gte: 1, lte: 5}];
|
||||
// Tag is used to distinguish different persistent cache tasks.
|
||||
optional string tag = 3;
|
||||
// Application of task.
|
||||
optional string application = 4;
|
||||
optional string tag = 4;
|
||||
// Application of the persistent cache task.
|
||||
optional string application = 5;
|
||||
// Piece length of the persistent cache task, the value needs to be greater than or equal to 4194304(4MiB).
|
||||
optional uint64 piece_length = 6 [(validate.rules).uint64 = {gte: 4194304, ignore_empty: true}];
|
||||
// TTL of the persistent cache task.
|
||||
google.protobuf.Duration ttl = 5 [(validate.rules).duration = {gte:{seconds: 60}, lte:{seconds: 604800}}];
|
||||
// Upload timeout.
|
||||
optional google.protobuf.Duration timeout = 6;
|
||||
google.protobuf.Duration ttl = 7 [(validate.rules).duration = {gte:{seconds: 60}, lte:{seconds: 604800}}];
|
||||
// Download timeout.
|
||||
optional google.protobuf.Duration timeout = 8;
|
||||
}
|
||||
|
||||
// UpdatePersistentCacheTaskRequest represents request of UpdatePersistentCacheTask.
|
||||
message UpdatePersistentCacheTaskRequest {
|
||||
// Task id.
|
||||
string task_id = 1 [(validate.rules).string.min_len = 1];
|
||||
// Persistent represents whether the persistent cache peer is persistent.
|
||||
// If the persistent cache peer is persistent, the persistent cache peer will
|
||||
// not be deleted when dfdaemon runs garbage collection. It only be deleted
|
||||
// when the task is deleted by the user.
|
||||
bool persistent = 2;
|
||||
}
|
||||
|
||||
// StatPersistentCacheTaskRequest represents request of StatPersistentCacheTask.
|
||||
|
@ -194,6 +215,74 @@ message DeletePersistentCacheTaskRequest {
|
|||
string task_id = 1 [(validate.rules).string.min_len = 1];
|
||||
}
|
||||
|
||||
// SyncPersistentCachePiecesRequest represents request of SyncPersistentCachePieces.
|
||||
message SyncPersistentCachePiecesRequest {
|
||||
// Host id.
|
||||
string host_id = 1 [(validate.rules).string.min_len = 1];
|
||||
// Task id.
|
||||
string task_id = 2 [(validate.rules).string.min_len = 1];
|
||||
// Interested piece numbers.
|
||||
repeated uint32 interested_piece_numbers = 3 [(validate.rules).repeated = {min_items: 1}];
|
||||
}
|
||||
|
||||
// SyncPersistentCachePiecesResponse represents response of SyncPersistentCachePieces.
|
||||
message SyncPersistentCachePiecesResponse {
|
||||
// Exist piece number.
|
||||
uint32 number = 1;
|
||||
// Piece offset.
|
||||
uint64 offset = 2;
|
||||
// Piece length.
|
||||
uint64 length = 3;
|
||||
}
|
||||
|
||||
// DownloadPersistentCachePieceRequest represents request of DownloadPersistentCachePiece.
|
||||
message DownloadPersistentCachePieceRequest{
|
||||
// Host id.
|
||||
string host_id = 1 [(validate.rules).string.min_len = 1];
|
||||
// Task id.
|
||||
string task_id = 2 [(validate.rules).string.min_len = 1];
|
||||
// Piece number.
|
||||
uint32 piece_number = 3;
|
||||
}
|
||||
|
||||
// DownloadPersistentCachePieceResponse represents response of DownloadPersistentCachePieces.
|
||||
message DownloadPersistentCachePieceResponse {
|
||||
// Piece information.
|
||||
common.v2.Piece piece = 1 [(validate.rules).message.required = true];
|
||||
// Piece metadata digest, it is used to verify the integrity of the piece metadata.
|
||||
optional string digest = 2 [(validate.rules).string = {pattern: "^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]+)$", ignore_empty: true}];
|
||||
}
|
||||
|
||||
// SyncHostRequest represents request of SyncHost.
|
||||
message SyncHostRequest {
|
||||
// Host id.
|
||||
string host_id = 1 [(validate.rules).string.min_len = 1];
|
||||
// Peer id.
|
||||
string peer_id = 2 [(validate.rules).string.min_len = 1];
|
||||
}
|
||||
|
||||
// IBVerbsQueuePairEndpoint represents queue pair endpoint of IBVerbs.
|
||||
message IBVerbsQueuePairEndpoint {
|
||||
// Number of the queue pair.
|
||||
uint32 num = 1;
|
||||
// Local identifier of the context.
|
||||
uint32 lid = 2;
|
||||
// Global identifier of the context.
|
||||
bytes gid = 3 [(validate.rules).bytes.len = 16];
|
||||
}
|
||||
|
||||
// ExchangeIBVerbsQueuePairEndpointRequest represents request of ExchangeIBVerbsQueuePairEndpoint.
|
||||
message ExchangeIBVerbsQueuePairEndpointRequest {
|
||||
// Information of the source's queue pair endpoint of IBVerbs.
|
||||
IBVerbsQueuePairEndpoint endpoint = 1 [(validate.rules).message.required = true];
|
||||
}
|
||||
|
||||
// ExchangeIBVerbsQueuePairEndpointResponse represents response of ExchangeIBVerbsQueuePairEndpoint.
|
||||
message ExchangeIBVerbsQueuePairEndpointResponse {
|
||||
// Information of the destination's queue pair endpoint of IBVerbs.
|
||||
IBVerbsQueuePairEndpoint endpoint = 1 [(validate.rules).message.required = true];
|
||||
}
|
||||
|
||||
// DfdaemonUpload represents dfdaemon upload service.
|
||||
service DfdaemonUpload {
|
||||
// DownloadTask downloads task from p2p network.
|
||||
|
@ -214,11 +303,26 @@ service DfdaemonUpload {
|
|||
// DownloadPersistentCacheTask downloads persistent cache task from p2p network.
|
||||
rpc DownloadPersistentCacheTask(DownloadPersistentCacheTaskRequest) returns(stream DownloadPersistentCacheTaskResponse);
|
||||
|
||||
// UpdatePersistentCacheTask updates metadate of thr persistent cache task in p2p network.
|
||||
rpc UpdatePersistentCacheTask(UpdatePersistentCacheTaskRequest) returns(google.protobuf.Empty);
|
||||
|
||||
// StatPersistentCacheTask stats persistent cache task information.
|
||||
rpc StatPersistentCacheTask(StatPersistentCacheTaskRequest) returns(common.v2.PersistentCacheTask);
|
||||
|
||||
// DeletePersistentCacheTask deletes persistent cache task from p2p network.
|
||||
rpc DeletePersistentCacheTask(DeletePersistentCacheTaskRequest) returns(google.protobuf.Empty);
|
||||
|
||||
// SyncPersistentCachePieces syncs persistent cache pieces from remote peer.
|
||||
rpc SyncPersistentCachePieces(SyncPersistentCachePiecesRequest) returns(stream SyncPersistentCachePiecesResponse);
|
||||
|
||||
// DownloadPersistentCachePiece downloads persistent cache piece from the remote peer.
|
||||
rpc DownloadPersistentCachePiece(DownloadPersistentCachePieceRequest)returns(DownloadPersistentCachePieceResponse);
|
||||
|
||||
// SyncHost sync host info from parents.
|
||||
rpc SyncHost(SyncHostRequest) returns (stream common.v2.Host);
|
||||
|
||||
// ExchangeIBVerbsQueuePairEndpoint exchanges queue pair endpoint of IBVerbs with remote peer.
|
||||
rpc ExchangeIBVerbsQueuePairEndpoint(ExchangeIBVerbsQueuePairEndpointRequest) returns(ExchangeIBVerbsQueuePairEndpointResponse);
|
||||
}
|
||||
|
||||
// DfdaemonDownload represents dfdaemon download service.
|
||||
|
@ -226,9 +330,6 @@ service DfdaemonDownload {
|
|||
// DownloadTask downloads task from p2p network.
|
||||
rpc DownloadTask(DownloadTaskRequest) returns(stream DownloadTaskResponse);
|
||||
|
||||
// UploadTask uploads task to p2p network.
|
||||
rpc UploadTask(UploadTaskRequest) returns(google.protobuf.Empty);
|
||||
|
||||
// StatTask stats task information.
|
||||
rpc StatTask(StatTaskRequest) returns(common.v2.Task);
|
||||
|
||||
|
@ -246,7 +347,4 @@ service DfdaemonDownload {
|
|||
|
||||
// StatPersistentCacheTask stats persistent cache task information.
|
||||
rpc StatPersistentCacheTask(StatPersistentCacheTaskRequest) returns(common.v2.PersistentCacheTask);
|
||||
|
||||
// DeletePersistentCacheTask deletes persistent cache task from p2p network.
|
||||
rpc DeletePersistentCacheTask(DeletePersistentCacheTaskRequest) returns(google.protobuf.Empty);
|
||||
}
|
||||
|
|
|
@ -36,10 +36,20 @@ type DfdaemonUploadClient interface {
|
|||
DownloadPiece(ctx context.Context, in *DownloadPieceRequest, opts ...grpc.CallOption) (*DownloadPieceResponse, error)
|
||||
// DownloadPersistentCacheTask downloads persistent cache task from p2p network.
|
||||
DownloadPersistentCacheTask(ctx context.Context, in *DownloadPersistentCacheTaskRequest, opts ...grpc.CallOption) (DfdaemonUpload_DownloadPersistentCacheTaskClient, error)
|
||||
// UpdatePersistentCacheTask updates metadate of thr persistent cache task in p2p network.
|
||||
UpdatePersistentCacheTask(ctx context.Context, in *UpdatePersistentCacheTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||
// StatPersistentCacheTask stats persistent cache task information.
|
||||
StatPersistentCacheTask(ctx context.Context, in *StatPersistentCacheTaskRequest, opts ...grpc.CallOption) (*v2.PersistentCacheTask, error)
|
||||
// DeletePersistentCacheTask deletes persistent cache task from p2p network.
|
||||
DeletePersistentCacheTask(ctx context.Context, in *DeletePersistentCacheTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||
// SyncPersistentCachePieces syncs persistent cache pieces from remote peer.
|
||||
SyncPersistentCachePieces(ctx context.Context, in *SyncPersistentCachePiecesRequest, opts ...grpc.CallOption) (DfdaemonUpload_SyncPersistentCachePiecesClient, error)
|
||||
// DownloadPersistentCachePiece downloads persistent cache piece from the remote peer.
|
||||
DownloadPersistentCachePiece(ctx context.Context, in *DownloadPersistentCachePieceRequest, opts ...grpc.CallOption) (*DownloadPersistentCachePieceResponse, error)
|
||||
// SyncHost sync host info from parents.
|
||||
SyncHost(ctx context.Context, in *SyncHostRequest, opts ...grpc.CallOption) (DfdaemonUpload_SyncHostClient, error)
|
||||
// ExchangeIBVerbsQueuePairEndpoint exchanges queue pair endpoint of IBVerbs with remote peer.
|
||||
ExchangeIBVerbsQueuePairEndpoint(ctx context.Context, in *ExchangeIBVerbsQueuePairEndpointRequest, opts ...grpc.CallOption) (*ExchangeIBVerbsQueuePairEndpointResponse, error)
|
||||
}
|
||||
|
||||
type dfdaemonUploadClient struct {
|
||||
|
@ -173,6 +183,15 @@ func (x *dfdaemonUploadDownloadPersistentCacheTaskClient) Recv() (*DownloadPersi
|
|||
return m, nil
|
||||
}
|
||||
|
||||
func (c *dfdaemonUploadClient) UpdatePersistentCacheTask(ctx context.Context, in *UpdatePersistentCacheTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
|
||||
out := new(emptypb.Empty)
|
||||
err := c.cc.Invoke(ctx, "/dfdaemon.v2.DfdaemonUpload/UpdatePersistentCacheTask", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *dfdaemonUploadClient) StatPersistentCacheTask(ctx context.Context, in *StatPersistentCacheTaskRequest, opts ...grpc.CallOption) (*v2.PersistentCacheTask, error) {
|
||||
out := new(v2.PersistentCacheTask)
|
||||
err := c.cc.Invoke(ctx, "/dfdaemon.v2.DfdaemonUpload/StatPersistentCacheTask", in, out, opts...)
|
||||
|
@ -191,6 +210,88 @@ func (c *dfdaemonUploadClient) DeletePersistentCacheTask(ctx context.Context, in
|
|||
return out, nil
|
||||
}
|
||||
|
||||
func (c *dfdaemonUploadClient) SyncPersistentCachePieces(ctx context.Context, in *SyncPersistentCachePiecesRequest, opts ...grpc.CallOption) (DfdaemonUpload_SyncPersistentCachePiecesClient, error) {
|
||||
stream, err := c.cc.NewStream(ctx, &DfdaemonUpload_ServiceDesc.Streams[3], "/dfdaemon.v2.DfdaemonUpload/SyncPersistentCachePieces", opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
x := &dfdaemonUploadSyncPersistentCachePiecesClient{stream}
|
||||
if err := x.ClientStream.SendMsg(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := x.ClientStream.CloseSend(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return x, nil
|
||||
}
|
||||
|
||||
type DfdaemonUpload_SyncPersistentCachePiecesClient interface {
|
||||
Recv() (*SyncPersistentCachePiecesResponse, error)
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
type dfdaemonUploadSyncPersistentCachePiecesClient struct {
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
func (x *dfdaemonUploadSyncPersistentCachePiecesClient) Recv() (*SyncPersistentCachePiecesResponse, error) {
|
||||
m := new(SyncPersistentCachePiecesResponse)
|
||||
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
func (c *dfdaemonUploadClient) DownloadPersistentCachePiece(ctx context.Context, in *DownloadPersistentCachePieceRequest, opts ...grpc.CallOption) (*DownloadPersistentCachePieceResponse, error) {
|
||||
out := new(DownloadPersistentCachePieceResponse)
|
||||
err := c.cc.Invoke(ctx, "/dfdaemon.v2.DfdaemonUpload/DownloadPersistentCachePiece", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *dfdaemonUploadClient) SyncHost(ctx context.Context, in *SyncHostRequest, opts ...grpc.CallOption) (DfdaemonUpload_SyncHostClient, error) {
|
||||
stream, err := c.cc.NewStream(ctx, &DfdaemonUpload_ServiceDesc.Streams[4], "/dfdaemon.v2.DfdaemonUpload/SyncHost", opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
x := &dfdaemonUploadSyncHostClient{stream}
|
||||
if err := x.ClientStream.SendMsg(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := x.ClientStream.CloseSend(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return x, nil
|
||||
}
|
||||
|
||||
type DfdaemonUpload_SyncHostClient interface {
|
||||
Recv() (*v2.Host, error)
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
type dfdaemonUploadSyncHostClient struct {
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
func (x *dfdaemonUploadSyncHostClient) Recv() (*v2.Host, error) {
|
||||
m := new(v2.Host)
|
||||
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
func (c *dfdaemonUploadClient) ExchangeIBVerbsQueuePairEndpoint(ctx context.Context, in *ExchangeIBVerbsQueuePairEndpointRequest, opts ...grpc.CallOption) (*ExchangeIBVerbsQueuePairEndpointResponse, error) {
|
||||
out := new(ExchangeIBVerbsQueuePairEndpointResponse)
|
||||
err := c.cc.Invoke(ctx, "/dfdaemon.v2.DfdaemonUpload/ExchangeIBVerbsQueuePairEndpoint", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// DfdaemonUploadServer is the server API for DfdaemonUpload service.
|
||||
// All implementations should embed UnimplementedDfdaemonUploadServer
|
||||
// for forward compatibility
|
||||
|
@ -207,10 +308,20 @@ type DfdaemonUploadServer interface {
|
|||
DownloadPiece(context.Context, *DownloadPieceRequest) (*DownloadPieceResponse, error)
|
||||
// DownloadPersistentCacheTask downloads persistent cache task from p2p network.
|
||||
DownloadPersistentCacheTask(*DownloadPersistentCacheTaskRequest, DfdaemonUpload_DownloadPersistentCacheTaskServer) error
|
||||
// UpdatePersistentCacheTask updates metadate of thr persistent cache task in p2p network.
|
||||
UpdatePersistentCacheTask(context.Context, *UpdatePersistentCacheTaskRequest) (*emptypb.Empty, error)
|
||||
// StatPersistentCacheTask stats persistent cache task information.
|
||||
StatPersistentCacheTask(context.Context, *StatPersistentCacheTaskRequest) (*v2.PersistentCacheTask, error)
|
||||
// DeletePersistentCacheTask deletes persistent cache task from p2p network.
|
||||
DeletePersistentCacheTask(context.Context, *DeletePersistentCacheTaskRequest) (*emptypb.Empty, error)
|
||||
// SyncPersistentCachePieces syncs persistent cache pieces from remote peer.
|
||||
SyncPersistentCachePieces(*SyncPersistentCachePiecesRequest, DfdaemonUpload_SyncPersistentCachePiecesServer) error
|
||||
// DownloadPersistentCachePiece downloads persistent cache piece from the remote peer.
|
||||
DownloadPersistentCachePiece(context.Context, *DownloadPersistentCachePieceRequest) (*DownloadPersistentCachePieceResponse, error)
|
||||
// SyncHost sync host info from parents.
|
||||
SyncHost(*SyncHostRequest, DfdaemonUpload_SyncHostServer) error
|
||||
// ExchangeIBVerbsQueuePairEndpoint exchanges queue pair endpoint of IBVerbs with remote peer.
|
||||
ExchangeIBVerbsQueuePairEndpoint(context.Context, *ExchangeIBVerbsQueuePairEndpointRequest) (*ExchangeIBVerbsQueuePairEndpointResponse, error)
|
||||
}
|
||||
|
||||
// UnimplementedDfdaemonUploadServer should be embedded to have forward compatible implementations.
|
||||
|
@ -235,12 +346,27 @@ func (UnimplementedDfdaemonUploadServer) DownloadPiece(context.Context, *Downloa
|
|||
func (UnimplementedDfdaemonUploadServer) DownloadPersistentCacheTask(*DownloadPersistentCacheTaskRequest, DfdaemonUpload_DownloadPersistentCacheTaskServer) error {
|
||||
return status.Errorf(codes.Unimplemented, "method DownloadPersistentCacheTask not implemented")
|
||||
}
|
||||
func (UnimplementedDfdaemonUploadServer) UpdatePersistentCacheTask(context.Context, *UpdatePersistentCacheTaskRequest) (*emptypb.Empty, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method UpdatePersistentCacheTask not implemented")
|
||||
}
|
||||
func (UnimplementedDfdaemonUploadServer) StatPersistentCacheTask(context.Context, *StatPersistentCacheTaskRequest) (*v2.PersistentCacheTask, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method StatPersistentCacheTask not implemented")
|
||||
}
|
||||
func (UnimplementedDfdaemonUploadServer) DeletePersistentCacheTask(context.Context, *DeletePersistentCacheTaskRequest) (*emptypb.Empty, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method DeletePersistentCacheTask not implemented")
|
||||
}
|
||||
func (UnimplementedDfdaemonUploadServer) SyncPersistentCachePieces(*SyncPersistentCachePiecesRequest, DfdaemonUpload_SyncPersistentCachePiecesServer) error {
|
||||
return status.Errorf(codes.Unimplemented, "method SyncPersistentCachePieces not implemented")
|
||||
}
|
||||
func (UnimplementedDfdaemonUploadServer) DownloadPersistentCachePiece(context.Context, *DownloadPersistentCachePieceRequest) (*DownloadPersistentCachePieceResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method DownloadPersistentCachePiece not implemented")
|
||||
}
|
||||
func (UnimplementedDfdaemonUploadServer) SyncHost(*SyncHostRequest, DfdaemonUpload_SyncHostServer) error {
|
||||
return status.Errorf(codes.Unimplemented, "method SyncHost not implemented")
|
||||
}
|
||||
func (UnimplementedDfdaemonUploadServer) ExchangeIBVerbsQueuePairEndpoint(context.Context, *ExchangeIBVerbsQueuePairEndpointRequest) (*ExchangeIBVerbsQueuePairEndpointResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method ExchangeIBVerbsQueuePairEndpoint not implemented")
|
||||
}
|
||||
|
||||
// UnsafeDfdaemonUploadServer may be embedded to opt out of forward compatibility for this service.
|
||||
// Use of this interface is not recommended, as added methods to DfdaemonUploadServer will
|
||||
|
@ -370,6 +496,24 @@ func (x *dfdaemonUploadDownloadPersistentCacheTaskServer) Send(m *DownloadPersis
|
|||
return x.ServerStream.SendMsg(m)
|
||||
}
|
||||
|
||||
func _DfdaemonUpload_UpdatePersistentCacheTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(UpdatePersistentCacheTaskRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(DfdaemonUploadServer).UpdatePersistentCacheTask(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/dfdaemon.v2.DfdaemonUpload/UpdatePersistentCacheTask",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(DfdaemonUploadServer).UpdatePersistentCacheTask(ctx, req.(*UpdatePersistentCacheTaskRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _DfdaemonUpload_StatPersistentCacheTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(StatPersistentCacheTaskRequest)
|
||||
if err := dec(in); err != nil {
|
||||
|
@ -406,6 +550,84 @@ func _DfdaemonUpload_DeletePersistentCacheTask_Handler(srv interface{}, ctx cont
|
|||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _DfdaemonUpload_SyncPersistentCachePieces_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||
m := new(SyncPersistentCachePiecesRequest)
|
||||
if err := stream.RecvMsg(m); err != nil {
|
||||
return err
|
||||
}
|
||||
return srv.(DfdaemonUploadServer).SyncPersistentCachePieces(m, &dfdaemonUploadSyncPersistentCachePiecesServer{stream})
|
||||
}
|
||||
|
||||
type DfdaemonUpload_SyncPersistentCachePiecesServer interface {
|
||||
Send(*SyncPersistentCachePiecesResponse) error
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
type dfdaemonUploadSyncPersistentCachePiecesServer struct {
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
func (x *dfdaemonUploadSyncPersistentCachePiecesServer) Send(m *SyncPersistentCachePiecesResponse) error {
|
||||
return x.ServerStream.SendMsg(m)
|
||||
}
|
||||
|
||||
func _DfdaemonUpload_DownloadPersistentCachePiece_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(DownloadPersistentCachePieceRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(DfdaemonUploadServer).DownloadPersistentCachePiece(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/dfdaemon.v2.DfdaemonUpload/DownloadPersistentCachePiece",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(DfdaemonUploadServer).DownloadPersistentCachePiece(ctx, req.(*DownloadPersistentCachePieceRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _DfdaemonUpload_SyncHost_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||
m := new(SyncHostRequest)
|
||||
if err := stream.RecvMsg(m); err != nil {
|
||||
return err
|
||||
}
|
||||
return srv.(DfdaemonUploadServer).SyncHost(m, &dfdaemonUploadSyncHostServer{stream})
|
||||
}
|
||||
|
||||
type DfdaemonUpload_SyncHostServer interface {
|
||||
Send(*v2.Host) error
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
type dfdaemonUploadSyncHostServer struct {
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
func (x *dfdaemonUploadSyncHostServer) Send(m *v2.Host) error {
|
||||
return x.ServerStream.SendMsg(m)
|
||||
}
|
||||
|
||||
func _DfdaemonUpload_ExchangeIBVerbsQueuePairEndpoint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(ExchangeIBVerbsQueuePairEndpointRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(DfdaemonUploadServer).ExchangeIBVerbsQueuePairEndpoint(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/dfdaemon.v2.DfdaemonUpload/ExchangeIBVerbsQueuePairEndpoint",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(DfdaemonUploadServer).ExchangeIBVerbsQueuePairEndpoint(ctx, req.(*ExchangeIBVerbsQueuePairEndpointRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
// DfdaemonUpload_ServiceDesc is the grpc.ServiceDesc for DfdaemonUpload service.
|
||||
// It's only intended for direct use with grpc.RegisterService,
|
||||
// and not to be introspected or modified (even as a copy)
|
||||
|
@ -425,6 +647,10 @@ var DfdaemonUpload_ServiceDesc = grpc.ServiceDesc{
|
|||
MethodName: "DownloadPiece",
|
||||
Handler: _DfdaemonUpload_DownloadPiece_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "UpdatePersistentCacheTask",
|
||||
Handler: _DfdaemonUpload_UpdatePersistentCacheTask_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "StatPersistentCacheTask",
|
||||
Handler: _DfdaemonUpload_StatPersistentCacheTask_Handler,
|
||||
|
@ -433,6 +659,14 @@ var DfdaemonUpload_ServiceDesc = grpc.ServiceDesc{
|
|||
MethodName: "DeletePersistentCacheTask",
|
||||
Handler: _DfdaemonUpload_DeletePersistentCacheTask_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "DownloadPersistentCachePiece",
|
||||
Handler: _DfdaemonUpload_DownloadPersistentCachePiece_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "ExchangeIBVerbsQueuePairEndpoint",
|
||||
Handler: _DfdaemonUpload_ExchangeIBVerbsQueuePairEndpoint_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{
|
||||
{
|
||||
|
@ -450,6 +684,16 @@ var DfdaemonUpload_ServiceDesc = grpc.ServiceDesc{
|
|||
Handler: _DfdaemonUpload_DownloadPersistentCacheTask_Handler,
|
||||
ServerStreams: true,
|
||||
},
|
||||
{
|
||||
StreamName: "SyncPersistentCachePieces",
|
||||
Handler: _DfdaemonUpload_SyncPersistentCachePieces_Handler,
|
||||
ServerStreams: true,
|
||||
},
|
||||
{
|
||||
StreamName: "SyncHost",
|
||||
Handler: _DfdaemonUpload_SyncHost_Handler,
|
||||
ServerStreams: true,
|
||||
},
|
||||
},
|
||||
Metadata: "pkg/apis/dfdaemon/v2/dfdaemon.proto",
|
||||
}
|
||||
|
@ -460,8 +704,6 @@ var DfdaemonUpload_ServiceDesc = grpc.ServiceDesc{
|
|||
type DfdaemonDownloadClient interface {
|
||||
// DownloadTask downloads task from p2p network.
|
||||
DownloadTask(ctx context.Context, in *DownloadTaskRequest, opts ...grpc.CallOption) (DfdaemonDownload_DownloadTaskClient, error)
|
||||
// UploadTask uploads task to p2p network.
|
||||
UploadTask(ctx context.Context, in *UploadTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||
// StatTask stats task information.
|
||||
StatTask(ctx context.Context, in *StatTaskRequest, opts ...grpc.CallOption) (*v2.Task, error)
|
||||
// DeleteTask deletes task from p2p network.
|
||||
|
@ -474,8 +716,6 @@ type DfdaemonDownloadClient interface {
|
|||
UploadPersistentCacheTask(ctx context.Context, in *UploadPersistentCacheTaskRequest, opts ...grpc.CallOption) (*v2.PersistentCacheTask, error)
|
||||
// StatPersistentCacheTask stats persistent cache task information.
|
||||
StatPersistentCacheTask(ctx context.Context, in *StatPersistentCacheTaskRequest, opts ...grpc.CallOption) (*v2.PersistentCacheTask, error)
|
||||
// DeletePersistentCacheTask deletes persistent cache task from p2p network.
|
||||
DeletePersistentCacheTask(ctx context.Context, in *DeletePersistentCacheTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
|
||||
}
|
||||
|
||||
type dfdaemonDownloadClient struct {
|
||||
|
@ -518,15 +758,6 @@ func (x *dfdaemonDownloadDownloadTaskClient) Recv() (*DownloadTaskResponse, erro
|
|||
return m, nil
|
||||
}
|
||||
|
||||
func (c *dfdaemonDownloadClient) UploadTask(ctx context.Context, in *UploadTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
|
||||
out := new(emptypb.Empty)
|
||||
err := c.cc.Invoke(ctx, "/dfdaemon.v2.DfdaemonDownload/UploadTask", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *dfdaemonDownloadClient) StatTask(ctx context.Context, in *StatTaskRequest, opts ...grpc.CallOption) (*v2.Task, error) {
|
||||
out := new(v2.Task)
|
||||
err := c.cc.Invoke(ctx, "/dfdaemon.v2.DfdaemonDownload/StatTask", in, out, opts...)
|
||||
|
@ -604,23 +835,12 @@ func (c *dfdaemonDownloadClient) StatPersistentCacheTask(ctx context.Context, in
|
|||
return out, nil
|
||||
}
|
||||
|
||||
func (c *dfdaemonDownloadClient) DeletePersistentCacheTask(ctx context.Context, in *DeletePersistentCacheTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
|
||||
out := new(emptypb.Empty)
|
||||
err := c.cc.Invoke(ctx, "/dfdaemon.v2.DfdaemonDownload/DeletePersistentCacheTask", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// DfdaemonDownloadServer is the server API for DfdaemonDownload service.
|
||||
// All implementations should embed UnimplementedDfdaemonDownloadServer
|
||||
// for forward compatibility
|
||||
type DfdaemonDownloadServer interface {
|
||||
// DownloadTask downloads task from p2p network.
|
||||
DownloadTask(*DownloadTaskRequest, DfdaemonDownload_DownloadTaskServer) error
|
||||
// UploadTask uploads task to p2p network.
|
||||
UploadTask(context.Context, *UploadTaskRequest) (*emptypb.Empty, error)
|
||||
// StatTask stats task information.
|
||||
StatTask(context.Context, *StatTaskRequest) (*v2.Task, error)
|
||||
// DeleteTask deletes task from p2p network.
|
||||
|
@ -633,8 +853,6 @@ type DfdaemonDownloadServer interface {
|
|||
UploadPersistentCacheTask(context.Context, *UploadPersistentCacheTaskRequest) (*v2.PersistentCacheTask, error)
|
||||
// StatPersistentCacheTask stats persistent cache task information.
|
||||
StatPersistentCacheTask(context.Context, *StatPersistentCacheTaskRequest) (*v2.PersistentCacheTask, error)
|
||||
// DeletePersistentCacheTask deletes persistent cache task from p2p network.
|
||||
DeletePersistentCacheTask(context.Context, *DeletePersistentCacheTaskRequest) (*emptypb.Empty, error)
|
||||
}
|
||||
|
||||
// UnimplementedDfdaemonDownloadServer should be embedded to have forward compatible implementations.
|
||||
|
@ -644,9 +862,6 @@ type UnimplementedDfdaemonDownloadServer struct {
|
|||
func (UnimplementedDfdaemonDownloadServer) DownloadTask(*DownloadTaskRequest, DfdaemonDownload_DownloadTaskServer) error {
|
||||
return status.Errorf(codes.Unimplemented, "method DownloadTask not implemented")
|
||||
}
|
||||
func (UnimplementedDfdaemonDownloadServer) UploadTask(context.Context, *UploadTaskRequest) (*emptypb.Empty, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method UploadTask not implemented")
|
||||
}
|
||||
func (UnimplementedDfdaemonDownloadServer) StatTask(context.Context, *StatTaskRequest) (*v2.Task, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method StatTask not implemented")
|
||||
}
|
||||
|
@ -665,9 +880,6 @@ func (UnimplementedDfdaemonDownloadServer) UploadPersistentCacheTask(context.Con
|
|||
func (UnimplementedDfdaemonDownloadServer) StatPersistentCacheTask(context.Context, *StatPersistentCacheTaskRequest) (*v2.PersistentCacheTask, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method StatPersistentCacheTask not implemented")
|
||||
}
|
||||
func (UnimplementedDfdaemonDownloadServer) DeletePersistentCacheTask(context.Context, *DeletePersistentCacheTaskRequest) (*emptypb.Empty, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method DeletePersistentCacheTask not implemented")
|
||||
}
|
||||
|
||||
// UnsafeDfdaemonDownloadServer may be embedded to opt out of forward compatibility for this service.
|
||||
// Use of this interface is not recommended, as added methods to DfdaemonDownloadServer will
|
||||
|
@ -701,24 +913,6 @@ func (x *dfdaemonDownloadDownloadTaskServer) Send(m *DownloadTaskResponse) error
|
|||
return x.ServerStream.SendMsg(m)
|
||||
}
|
||||
|
||||
func _DfdaemonDownload_UploadTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(UploadTaskRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(DfdaemonDownloadServer).UploadTask(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/dfdaemon.v2.DfdaemonDownload/UploadTask",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(DfdaemonDownloadServer).UploadTask(ctx, req.(*UploadTaskRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _DfdaemonDownload_StatTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(StatTaskRequest)
|
||||
if err := dec(in); err != nil {
|
||||
|
@ -830,24 +1024,6 @@ func _DfdaemonDownload_StatPersistentCacheTask_Handler(srv interface{}, ctx cont
|
|||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _DfdaemonDownload_DeletePersistentCacheTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(DeletePersistentCacheTaskRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(DfdaemonDownloadServer).DeletePersistentCacheTask(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/dfdaemon.v2.DfdaemonDownload/DeletePersistentCacheTask",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(DfdaemonDownloadServer).DeletePersistentCacheTask(ctx, req.(*DeletePersistentCacheTaskRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
// DfdaemonDownload_ServiceDesc is the grpc.ServiceDesc for DfdaemonDownload service.
|
||||
// It's only intended for direct use with grpc.RegisterService,
|
||||
// and not to be introspected or modified (even as a copy)
|
||||
|
@ -855,10 +1031,6 @@ var DfdaemonDownload_ServiceDesc = grpc.ServiceDesc{
|
|||
ServiceName: "dfdaemon.v2.DfdaemonDownload",
|
||||
HandlerType: (*DfdaemonDownloadServer)(nil),
|
||||
Methods: []grpc.MethodDesc{
|
||||
{
|
||||
MethodName: "UploadTask",
|
||||
Handler: _DfdaemonDownload_UploadTask_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "StatTask",
|
||||
Handler: _DfdaemonDownload_StatTask_Handler,
|
||||
|
@ -879,10 +1051,6 @@ var DfdaemonDownload_ServiceDesc = grpc.ServiceDesc{
|
|||
MethodName: "StatPersistentCacheTask",
|
||||
Handler: _DfdaemonDownload_StatPersistentCacheTask_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "DeletePersistentCacheTask",
|
||||
Handler: _DfdaemonDownload_DeletePersistentCacheTask_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{
|
||||
{
|
||||
|
|
|
@ -85,6 +85,26 @@ func (mr *MockDfdaemonUploadClientMockRecorder) DeleteTask(ctx, in any, opts ...
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteTask", reflect.TypeOf((*MockDfdaemonUploadClient)(nil).DeleteTask), varargs...)
|
||||
}
|
||||
|
||||
// DownloadPersistentCachePiece mocks base method.
|
||||
func (m *MockDfdaemonUploadClient) DownloadPersistentCachePiece(ctx context.Context, in *dfdaemon.DownloadPersistentCachePieceRequest, opts ...grpc.CallOption) (*dfdaemon.DownloadPersistentCachePieceResponse, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []any{ctx, in}
|
||||
for _, a := range opts {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "DownloadPersistentCachePiece", varargs...)
|
||||
ret0, _ := ret[0].(*dfdaemon.DownloadPersistentCachePieceResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// DownloadPersistentCachePiece indicates an expected call of DownloadPersistentCachePiece.
|
||||
func (mr *MockDfdaemonUploadClientMockRecorder) DownloadPersistentCachePiece(ctx, in any, opts ...any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]any{ctx, in}, opts...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DownloadPersistentCachePiece", reflect.TypeOf((*MockDfdaemonUploadClient)(nil).DownloadPersistentCachePiece), varargs...)
|
||||
}
|
||||
|
||||
// DownloadPersistentCacheTask mocks base method.
|
||||
func (m *MockDfdaemonUploadClient) DownloadPersistentCacheTask(ctx context.Context, in *dfdaemon.DownloadPersistentCacheTaskRequest, opts ...grpc.CallOption) (dfdaemon.DfdaemonUpload_DownloadPersistentCacheTaskClient, error) {
|
||||
m.ctrl.T.Helper()
|
||||
|
@ -145,6 +165,26 @@ func (mr *MockDfdaemonUploadClientMockRecorder) DownloadTask(ctx, in any, opts .
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DownloadTask", reflect.TypeOf((*MockDfdaemonUploadClient)(nil).DownloadTask), varargs...)
|
||||
}
|
||||
|
||||
// ExchangeIBVerbsQueuePairEndpoint mocks base method.
|
||||
func (m *MockDfdaemonUploadClient) ExchangeIBVerbsQueuePairEndpoint(ctx context.Context, in *dfdaemon.ExchangeIBVerbsQueuePairEndpointRequest, opts ...grpc.CallOption) (*dfdaemon.ExchangeIBVerbsQueuePairEndpointResponse, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []any{ctx, in}
|
||||
for _, a := range opts {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "ExchangeIBVerbsQueuePairEndpoint", varargs...)
|
||||
ret0, _ := ret[0].(*dfdaemon.ExchangeIBVerbsQueuePairEndpointResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// ExchangeIBVerbsQueuePairEndpoint indicates an expected call of ExchangeIBVerbsQueuePairEndpoint.
|
||||
func (mr *MockDfdaemonUploadClientMockRecorder) ExchangeIBVerbsQueuePairEndpoint(ctx, in any, opts ...any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]any{ctx, in}, opts...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExchangeIBVerbsQueuePairEndpoint", reflect.TypeOf((*MockDfdaemonUploadClient)(nil).ExchangeIBVerbsQueuePairEndpoint), varargs...)
|
||||
}
|
||||
|
||||
// StatPersistentCacheTask mocks base method.
|
||||
func (m *MockDfdaemonUploadClient) StatPersistentCacheTask(ctx context.Context, in *dfdaemon.StatPersistentCacheTaskRequest, opts ...grpc.CallOption) (*common.PersistentCacheTask, error) {
|
||||
m.ctrl.T.Helper()
|
||||
|
@ -185,6 +225,46 @@ func (mr *MockDfdaemonUploadClientMockRecorder) StatTask(ctx, in any, opts ...an
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StatTask", reflect.TypeOf((*MockDfdaemonUploadClient)(nil).StatTask), varargs...)
|
||||
}
|
||||
|
||||
// SyncHost mocks base method.
|
||||
func (m *MockDfdaemonUploadClient) SyncHost(ctx context.Context, in *dfdaemon.SyncHostRequest, opts ...grpc.CallOption) (dfdaemon.DfdaemonUpload_SyncHostClient, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []any{ctx, in}
|
||||
for _, a := range opts {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "SyncHost", varargs...)
|
||||
ret0, _ := ret[0].(dfdaemon.DfdaemonUpload_SyncHostClient)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// SyncHost indicates an expected call of SyncHost.
|
||||
func (mr *MockDfdaemonUploadClientMockRecorder) SyncHost(ctx, in any, opts ...any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]any{ctx, in}, opts...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SyncHost", reflect.TypeOf((*MockDfdaemonUploadClient)(nil).SyncHost), varargs...)
|
||||
}
|
||||
|
||||
// SyncPersistentCachePieces mocks base method.
|
||||
func (m *MockDfdaemonUploadClient) SyncPersistentCachePieces(ctx context.Context, in *dfdaemon.SyncPersistentCachePiecesRequest, opts ...grpc.CallOption) (dfdaemon.DfdaemonUpload_SyncPersistentCachePiecesClient, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []any{ctx, in}
|
||||
for _, a := range opts {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "SyncPersistentCachePieces", varargs...)
|
||||
ret0, _ := ret[0].(dfdaemon.DfdaemonUpload_SyncPersistentCachePiecesClient)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// SyncPersistentCachePieces indicates an expected call of SyncPersistentCachePieces.
|
||||
func (mr *MockDfdaemonUploadClientMockRecorder) SyncPersistentCachePieces(ctx, in any, opts ...any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]any{ctx, in}, opts...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SyncPersistentCachePieces", reflect.TypeOf((*MockDfdaemonUploadClient)(nil).SyncPersistentCachePieces), varargs...)
|
||||
}
|
||||
|
||||
// SyncPieces mocks base method.
|
||||
func (m *MockDfdaemonUploadClient) SyncPieces(ctx context.Context, in *dfdaemon.SyncPiecesRequest, opts ...grpc.CallOption) (dfdaemon.DfdaemonUpload_SyncPiecesClient, error) {
|
||||
m.ctrl.T.Helper()
|
||||
|
@ -205,6 +285,26 @@ func (mr *MockDfdaemonUploadClientMockRecorder) SyncPieces(ctx, in any, opts ...
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SyncPieces", reflect.TypeOf((*MockDfdaemonUploadClient)(nil).SyncPieces), varargs...)
|
||||
}
|
||||
|
||||
// UpdatePersistentCacheTask mocks base method.
|
||||
func (m *MockDfdaemonUploadClient) UpdatePersistentCacheTask(ctx context.Context, in *dfdaemon.UpdatePersistentCacheTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []any{ctx, in}
|
||||
for _, a := range opts {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "UpdatePersistentCacheTask", varargs...)
|
||||
ret0, _ := ret[0].(*emptypb.Empty)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// UpdatePersistentCacheTask indicates an expected call of UpdatePersistentCacheTask.
|
||||
func (mr *MockDfdaemonUploadClientMockRecorder) UpdatePersistentCacheTask(ctx, in any, opts ...any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]any{ctx, in}, opts...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdatePersistentCacheTask", reflect.TypeOf((*MockDfdaemonUploadClient)(nil).UpdatePersistentCacheTask), varargs...)
|
||||
}
|
||||
|
||||
// MockDfdaemonUpload_DownloadTaskClient is a mock of DfdaemonUpload_DownloadTaskClient interface.
|
||||
type MockDfdaemonUpload_DownloadTaskClient struct {
|
||||
ctrl *gomock.Controller
|
||||
|
@ -577,6 +677,254 @@ func (mr *MockDfdaemonUpload_DownloadPersistentCacheTaskClientMockRecorder) Trai
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Trailer", reflect.TypeOf((*MockDfdaemonUpload_DownloadPersistentCacheTaskClient)(nil).Trailer))
|
||||
}
|
||||
|
||||
// MockDfdaemonUpload_SyncPersistentCachePiecesClient is a mock of DfdaemonUpload_SyncPersistentCachePiecesClient interface.
|
||||
type MockDfdaemonUpload_SyncPersistentCachePiecesClient struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockDfdaemonUpload_SyncPersistentCachePiecesClientMockRecorder
|
||||
isgomock struct{}
|
||||
}
|
||||
|
||||
// MockDfdaemonUpload_SyncPersistentCachePiecesClientMockRecorder is the mock recorder for MockDfdaemonUpload_SyncPersistentCachePiecesClient.
|
||||
type MockDfdaemonUpload_SyncPersistentCachePiecesClientMockRecorder struct {
|
||||
mock *MockDfdaemonUpload_SyncPersistentCachePiecesClient
|
||||
}
|
||||
|
||||
// NewMockDfdaemonUpload_SyncPersistentCachePiecesClient creates a new mock instance.
|
||||
func NewMockDfdaemonUpload_SyncPersistentCachePiecesClient(ctrl *gomock.Controller) *MockDfdaemonUpload_SyncPersistentCachePiecesClient {
|
||||
mock := &MockDfdaemonUpload_SyncPersistentCachePiecesClient{ctrl: ctrl}
|
||||
mock.recorder = &MockDfdaemonUpload_SyncPersistentCachePiecesClientMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockDfdaemonUpload_SyncPersistentCachePiecesClient) EXPECT() *MockDfdaemonUpload_SyncPersistentCachePiecesClientMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// CloseSend mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncPersistentCachePiecesClient) CloseSend() error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "CloseSend")
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// CloseSend indicates an expected call of CloseSend.
|
||||
func (mr *MockDfdaemonUpload_SyncPersistentCachePiecesClientMockRecorder) CloseSend() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CloseSend", reflect.TypeOf((*MockDfdaemonUpload_SyncPersistentCachePiecesClient)(nil).CloseSend))
|
||||
}
|
||||
|
||||
// Context mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncPersistentCachePiecesClient) Context() context.Context {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Context")
|
||||
ret0, _ := ret[0].(context.Context)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Context indicates an expected call of Context.
|
||||
func (mr *MockDfdaemonUpload_SyncPersistentCachePiecesClientMockRecorder) Context() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockDfdaemonUpload_SyncPersistentCachePiecesClient)(nil).Context))
|
||||
}
|
||||
|
||||
// Header mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncPersistentCachePiecesClient) Header() (metadata.MD, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Header")
|
||||
ret0, _ := ret[0].(metadata.MD)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Header indicates an expected call of Header.
|
||||
func (mr *MockDfdaemonUpload_SyncPersistentCachePiecesClientMockRecorder) Header() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Header", reflect.TypeOf((*MockDfdaemonUpload_SyncPersistentCachePiecesClient)(nil).Header))
|
||||
}
|
||||
|
||||
// Recv mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncPersistentCachePiecesClient) Recv() (*dfdaemon.SyncPersistentCachePiecesResponse, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Recv")
|
||||
ret0, _ := ret[0].(*dfdaemon.SyncPersistentCachePiecesResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Recv indicates an expected call of Recv.
|
||||
func (mr *MockDfdaemonUpload_SyncPersistentCachePiecesClientMockRecorder) Recv() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Recv", reflect.TypeOf((*MockDfdaemonUpload_SyncPersistentCachePiecesClient)(nil).Recv))
|
||||
}
|
||||
|
||||
// RecvMsg mocks base method.
|
||||
func (m_2 *MockDfdaemonUpload_SyncPersistentCachePiecesClient) RecvMsg(m any) error {
|
||||
m_2.ctrl.T.Helper()
|
||||
ret := m_2.ctrl.Call(m_2, "RecvMsg", m)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// RecvMsg indicates an expected call of RecvMsg.
|
||||
func (mr *MockDfdaemonUpload_SyncPersistentCachePiecesClientMockRecorder) RecvMsg(m any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockDfdaemonUpload_SyncPersistentCachePiecesClient)(nil).RecvMsg), m)
|
||||
}
|
||||
|
||||
// SendMsg mocks base method.
|
||||
func (m_2 *MockDfdaemonUpload_SyncPersistentCachePiecesClient) SendMsg(m any) error {
|
||||
m_2.ctrl.T.Helper()
|
||||
ret := m_2.ctrl.Call(m_2, "SendMsg", m)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// SendMsg indicates an expected call of SendMsg.
|
||||
func (mr *MockDfdaemonUpload_SyncPersistentCachePiecesClientMockRecorder) SendMsg(m any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockDfdaemonUpload_SyncPersistentCachePiecesClient)(nil).SendMsg), m)
|
||||
}
|
||||
|
||||
// Trailer mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncPersistentCachePiecesClient) Trailer() metadata.MD {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Trailer")
|
||||
ret0, _ := ret[0].(metadata.MD)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Trailer indicates an expected call of Trailer.
|
||||
func (mr *MockDfdaemonUpload_SyncPersistentCachePiecesClientMockRecorder) Trailer() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Trailer", reflect.TypeOf((*MockDfdaemonUpload_SyncPersistentCachePiecesClient)(nil).Trailer))
|
||||
}
|
||||
|
||||
// MockDfdaemonUpload_SyncHostClient is a mock of DfdaemonUpload_SyncHostClient interface.
|
||||
type MockDfdaemonUpload_SyncHostClient struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockDfdaemonUpload_SyncHostClientMockRecorder
|
||||
isgomock struct{}
|
||||
}
|
||||
|
||||
// MockDfdaemonUpload_SyncHostClientMockRecorder is the mock recorder for MockDfdaemonUpload_SyncHostClient.
|
||||
type MockDfdaemonUpload_SyncHostClientMockRecorder struct {
|
||||
mock *MockDfdaemonUpload_SyncHostClient
|
||||
}
|
||||
|
||||
// NewMockDfdaemonUpload_SyncHostClient creates a new mock instance.
|
||||
func NewMockDfdaemonUpload_SyncHostClient(ctrl *gomock.Controller) *MockDfdaemonUpload_SyncHostClient {
|
||||
mock := &MockDfdaemonUpload_SyncHostClient{ctrl: ctrl}
|
||||
mock.recorder = &MockDfdaemonUpload_SyncHostClientMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockDfdaemonUpload_SyncHostClient) EXPECT() *MockDfdaemonUpload_SyncHostClientMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// CloseSend mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncHostClient) CloseSend() error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "CloseSend")
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// CloseSend indicates an expected call of CloseSend.
|
||||
func (mr *MockDfdaemonUpload_SyncHostClientMockRecorder) CloseSend() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CloseSend", reflect.TypeOf((*MockDfdaemonUpload_SyncHostClient)(nil).CloseSend))
|
||||
}
|
||||
|
||||
// Context mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncHostClient) Context() context.Context {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Context")
|
||||
ret0, _ := ret[0].(context.Context)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Context indicates an expected call of Context.
|
||||
func (mr *MockDfdaemonUpload_SyncHostClientMockRecorder) Context() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockDfdaemonUpload_SyncHostClient)(nil).Context))
|
||||
}
|
||||
|
||||
// Header mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncHostClient) Header() (metadata.MD, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Header")
|
||||
ret0, _ := ret[0].(metadata.MD)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Header indicates an expected call of Header.
|
||||
func (mr *MockDfdaemonUpload_SyncHostClientMockRecorder) Header() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Header", reflect.TypeOf((*MockDfdaemonUpload_SyncHostClient)(nil).Header))
|
||||
}
|
||||
|
||||
// Recv mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncHostClient) Recv() (*common.Host, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Recv")
|
||||
ret0, _ := ret[0].(*common.Host)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Recv indicates an expected call of Recv.
|
||||
func (mr *MockDfdaemonUpload_SyncHostClientMockRecorder) Recv() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Recv", reflect.TypeOf((*MockDfdaemonUpload_SyncHostClient)(nil).Recv))
|
||||
}
|
||||
|
||||
// RecvMsg mocks base method.
|
||||
func (m_2 *MockDfdaemonUpload_SyncHostClient) RecvMsg(m any) error {
|
||||
m_2.ctrl.T.Helper()
|
||||
ret := m_2.ctrl.Call(m_2, "RecvMsg", m)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// RecvMsg indicates an expected call of RecvMsg.
|
||||
func (mr *MockDfdaemonUpload_SyncHostClientMockRecorder) RecvMsg(m any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockDfdaemonUpload_SyncHostClient)(nil).RecvMsg), m)
|
||||
}
|
||||
|
||||
// SendMsg mocks base method.
|
||||
func (m_2 *MockDfdaemonUpload_SyncHostClient) SendMsg(m any) error {
|
||||
m_2.ctrl.T.Helper()
|
||||
ret := m_2.ctrl.Call(m_2, "SendMsg", m)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// SendMsg indicates an expected call of SendMsg.
|
||||
func (mr *MockDfdaemonUpload_SyncHostClientMockRecorder) SendMsg(m any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockDfdaemonUpload_SyncHostClient)(nil).SendMsg), m)
|
||||
}
|
||||
|
||||
// Trailer mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncHostClient) Trailer() metadata.MD {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Trailer")
|
||||
ret0, _ := ret[0].(metadata.MD)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Trailer indicates an expected call of Trailer.
|
||||
func (mr *MockDfdaemonUpload_SyncHostClientMockRecorder) Trailer() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Trailer", reflect.TypeOf((*MockDfdaemonUpload_SyncHostClient)(nil).Trailer))
|
||||
}
|
||||
|
||||
// MockDfdaemonUploadServer is a mock of DfdaemonUploadServer interface.
|
||||
type MockDfdaemonUploadServer struct {
|
||||
ctrl *gomock.Controller
|
||||
|
@ -631,6 +979,21 @@ func (mr *MockDfdaemonUploadServerMockRecorder) DeleteTask(arg0, arg1 any) *gomo
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteTask", reflect.TypeOf((*MockDfdaemonUploadServer)(nil).DeleteTask), arg0, arg1)
|
||||
}
|
||||
|
||||
// DownloadPersistentCachePiece mocks base method.
|
||||
func (m *MockDfdaemonUploadServer) DownloadPersistentCachePiece(arg0 context.Context, arg1 *dfdaemon.DownloadPersistentCachePieceRequest) (*dfdaemon.DownloadPersistentCachePieceResponse, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "DownloadPersistentCachePiece", arg0, arg1)
|
||||
ret0, _ := ret[0].(*dfdaemon.DownloadPersistentCachePieceResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// DownloadPersistentCachePiece indicates an expected call of DownloadPersistentCachePiece.
|
||||
func (mr *MockDfdaemonUploadServerMockRecorder) DownloadPersistentCachePiece(arg0, arg1 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DownloadPersistentCachePiece", reflect.TypeOf((*MockDfdaemonUploadServer)(nil).DownloadPersistentCachePiece), arg0, arg1)
|
||||
}
|
||||
|
||||
// DownloadPersistentCacheTask mocks base method.
|
||||
func (m *MockDfdaemonUploadServer) DownloadPersistentCacheTask(arg0 *dfdaemon.DownloadPersistentCacheTaskRequest, arg1 dfdaemon.DfdaemonUpload_DownloadPersistentCacheTaskServer) error {
|
||||
m.ctrl.T.Helper()
|
||||
|
@ -674,6 +1037,21 @@ func (mr *MockDfdaemonUploadServerMockRecorder) DownloadTask(arg0, arg1 any) *go
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DownloadTask", reflect.TypeOf((*MockDfdaemonUploadServer)(nil).DownloadTask), arg0, arg1)
|
||||
}
|
||||
|
||||
// ExchangeIBVerbsQueuePairEndpoint mocks base method.
|
||||
func (m *MockDfdaemonUploadServer) ExchangeIBVerbsQueuePairEndpoint(arg0 context.Context, arg1 *dfdaemon.ExchangeIBVerbsQueuePairEndpointRequest) (*dfdaemon.ExchangeIBVerbsQueuePairEndpointResponse, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "ExchangeIBVerbsQueuePairEndpoint", arg0, arg1)
|
||||
ret0, _ := ret[0].(*dfdaemon.ExchangeIBVerbsQueuePairEndpointResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// ExchangeIBVerbsQueuePairEndpoint indicates an expected call of ExchangeIBVerbsQueuePairEndpoint.
|
||||
func (mr *MockDfdaemonUploadServerMockRecorder) ExchangeIBVerbsQueuePairEndpoint(arg0, arg1 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExchangeIBVerbsQueuePairEndpoint", reflect.TypeOf((*MockDfdaemonUploadServer)(nil).ExchangeIBVerbsQueuePairEndpoint), arg0, arg1)
|
||||
}
|
||||
|
||||
// StatPersistentCacheTask mocks base method.
|
||||
func (m *MockDfdaemonUploadServer) StatPersistentCacheTask(arg0 context.Context, arg1 *dfdaemon.StatPersistentCacheTaskRequest) (*common.PersistentCacheTask, error) {
|
||||
m.ctrl.T.Helper()
|
||||
|
@ -704,6 +1082,34 @@ func (mr *MockDfdaemonUploadServerMockRecorder) StatTask(arg0, arg1 any) *gomock
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StatTask", reflect.TypeOf((*MockDfdaemonUploadServer)(nil).StatTask), arg0, arg1)
|
||||
}
|
||||
|
||||
// SyncHost mocks base method.
|
||||
func (m *MockDfdaemonUploadServer) SyncHost(arg0 *dfdaemon.SyncHostRequest, arg1 dfdaemon.DfdaemonUpload_SyncHostServer) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "SyncHost", arg0, arg1)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// SyncHost indicates an expected call of SyncHost.
|
||||
func (mr *MockDfdaemonUploadServerMockRecorder) SyncHost(arg0, arg1 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SyncHost", reflect.TypeOf((*MockDfdaemonUploadServer)(nil).SyncHost), arg0, arg1)
|
||||
}
|
||||
|
||||
// SyncPersistentCachePieces mocks base method.
|
||||
func (m *MockDfdaemonUploadServer) SyncPersistentCachePieces(arg0 *dfdaemon.SyncPersistentCachePiecesRequest, arg1 dfdaemon.DfdaemonUpload_SyncPersistentCachePiecesServer) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "SyncPersistentCachePieces", arg0, arg1)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// SyncPersistentCachePieces indicates an expected call of SyncPersistentCachePieces.
|
||||
func (mr *MockDfdaemonUploadServerMockRecorder) SyncPersistentCachePieces(arg0, arg1 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SyncPersistentCachePieces", reflect.TypeOf((*MockDfdaemonUploadServer)(nil).SyncPersistentCachePieces), arg0, arg1)
|
||||
}
|
||||
|
||||
// SyncPieces mocks base method.
|
||||
func (m *MockDfdaemonUploadServer) SyncPieces(arg0 *dfdaemon.SyncPiecesRequest, arg1 dfdaemon.DfdaemonUpload_SyncPiecesServer) error {
|
||||
m.ctrl.T.Helper()
|
||||
|
@ -718,6 +1124,21 @@ func (mr *MockDfdaemonUploadServerMockRecorder) SyncPieces(arg0, arg1 any) *gomo
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SyncPieces", reflect.TypeOf((*MockDfdaemonUploadServer)(nil).SyncPieces), arg0, arg1)
|
||||
}
|
||||
|
||||
// UpdatePersistentCacheTask mocks base method.
|
||||
func (m *MockDfdaemonUploadServer) UpdatePersistentCacheTask(arg0 context.Context, arg1 *dfdaemon.UpdatePersistentCacheTaskRequest) (*emptypb.Empty, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "UpdatePersistentCacheTask", arg0, arg1)
|
||||
ret0, _ := ret[0].(*emptypb.Empty)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// UpdatePersistentCacheTask indicates an expected call of UpdatePersistentCacheTask.
|
||||
func (mr *MockDfdaemonUploadServerMockRecorder) UpdatePersistentCacheTask(arg0, arg1 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdatePersistentCacheTask", reflect.TypeOf((*MockDfdaemonUploadServer)(nil).UpdatePersistentCacheTask), arg0, arg1)
|
||||
}
|
||||
|
||||
// MockUnsafeDfdaemonUploadServer is a mock of UnsafeDfdaemonUploadServer interface.
|
||||
type MockUnsafeDfdaemonUploadServer struct {
|
||||
ctrl *gomock.Controller
|
||||
|
@ -1114,6 +1535,246 @@ func (mr *MockDfdaemonUpload_DownloadPersistentCacheTaskServerMockRecorder) SetT
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockDfdaemonUpload_DownloadPersistentCacheTaskServer)(nil).SetTrailer), arg0)
|
||||
}
|
||||
|
||||
// MockDfdaemonUpload_SyncPersistentCachePiecesServer is a mock of DfdaemonUpload_SyncPersistentCachePiecesServer interface.
|
||||
type MockDfdaemonUpload_SyncPersistentCachePiecesServer struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockDfdaemonUpload_SyncPersistentCachePiecesServerMockRecorder
|
||||
isgomock struct{}
|
||||
}
|
||||
|
||||
// MockDfdaemonUpload_SyncPersistentCachePiecesServerMockRecorder is the mock recorder for MockDfdaemonUpload_SyncPersistentCachePiecesServer.
|
||||
type MockDfdaemonUpload_SyncPersistentCachePiecesServerMockRecorder struct {
|
||||
mock *MockDfdaemonUpload_SyncPersistentCachePiecesServer
|
||||
}
|
||||
|
||||
// NewMockDfdaemonUpload_SyncPersistentCachePiecesServer creates a new mock instance.
|
||||
func NewMockDfdaemonUpload_SyncPersistentCachePiecesServer(ctrl *gomock.Controller) *MockDfdaemonUpload_SyncPersistentCachePiecesServer {
|
||||
mock := &MockDfdaemonUpload_SyncPersistentCachePiecesServer{ctrl: ctrl}
|
||||
mock.recorder = &MockDfdaemonUpload_SyncPersistentCachePiecesServerMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockDfdaemonUpload_SyncPersistentCachePiecesServer) EXPECT() *MockDfdaemonUpload_SyncPersistentCachePiecesServerMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Context mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncPersistentCachePiecesServer) Context() context.Context {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Context")
|
||||
ret0, _ := ret[0].(context.Context)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Context indicates an expected call of Context.
|
||||
func (mr *MockDfdaemonUpload_SyncPersistentCachePiecesServerMockRecorder) Context() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockDfdaemonUpload_SyncPersistentCachePiecesServer)(nil).Context))
|
||||
}
|
||||
|
||||
// RecvMsg mocks base method.
|
||||
func (m_2 *MockDfdaemonUpload_SyncPersistentCachePiecesServer) RecvMsg(m any) error {
|
||||
m_2.ctrl.T.Helper()
|
||||
ret := m_2.ctrl.Call(m_2, "RecvMsg", m)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// RecvMsg indicates an expected call of RecvMsg.
|
||||
func (mr *MockDfdaemonUpload_SyncPersistentCachePiecesServerMockRecorder) RecvMsg(m any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockDfdaemonUpload_SyncPersistentCachePiecesServer)(nil).RecvMsg), m)
|
||||
}
|
||||
|
||||
// Send mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncPersistentCachePiecesServer) Send(arg0 *dfdaemon.SyncPersistentCachePiecesResponse) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Send", arg0)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Send indicates an expected call of Send.
|
||||
func (mr *MockDfdaemonUpload_SyncPersistentCachePiecesServerMockRecorder) Send(arg0 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockDfdaemonUpload_SyncPersistentCachePiecesServer)(nil).Send), arg0)
|
||||
}
|
||||
|
||||
// SendHeader mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncPersistentCachePiecesServer) SendHeader(arg0 metadata.MD) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "SendHeader", arg0)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// SendHeader indicates an expected call of SendHeader.
|
||||
func (mr *MockDfdaemonUpload_SyncPersistentCachePiecesServerMockRecorder) SendHeader(arg0 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendHeader", reflect.TypeOf((*MockDfdaemonUpload_SyncPersistentCachePiecesServer)(nil).SendHeader), arg0)
|
||||
}
|
||||
|
||||
// SendMsg mocks base method.
|
||||
func (m_2 *MockDfdaemonUpload_SyncPersistentCachePiecesServer) SendMsg(m any) error {
|
||||
m_2.ctrl.T.Helper()
|
||||
ret := m_2.ctrl.Call(m_2, "SendMsg", m)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// SendMsg indicates an expected call of SendMsg.
|
||||
func (mr *MockDfdaemonUpload_SyncPersistentCachePiecesServerMockRecorder) SendMsg(m any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockDfdaemonUpload_SyncPersistentCachePiecesServer)(nil).SendMsg), m)
|
||||
}
|
||||
|
||||
// SetHeader mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncPersistentCachePiecesServer) SetHeader(arg0 metadata.MD) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "SetHeader", arg0)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// SetHeader indicates an expected call of SetHeader.
|
||||
func (mr *MockDfdaemonUpload_SyncPersistentCachePiecesServerMockRecorder) SetHeader(arg0 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetHeader", reflect.TypeOf((*MockDfdaemonUpload_SyncPersistentCachePiecesServer)(nil).SetHeader), arg0)
|
||||
}
|
||||
|
||||
// SetTrailer mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncPersistentCachePiecesServer) SetTrailer(arg0 metadata.MD) {
|
||||
m.ctrl.T.Helper()
|
||||
m.ctrl.Call(m, "SetTrailer", arg0)
|
||||
}
|
||||
|
||||
// SetTrailer indicates an expected call of SetTrailer.
|
||||
func (mr *MockDfdaemonUpload_SyncPersistentCachePiecesServerMockRecorder) SetTrailer(arg0 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockDfdaemonUpload_SyncPersistentCachePiecesServer)(nil).SetTrailer), arg0)
|
||||
}
|
||||
|
||||
// MockDfdaemonUpload_SyncHostServer is a mock of DfdaemonUpload_SyncHostServer interface.
|
||||
type MockDfdaemonUpload_SyncHostServer struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockDfdaemonUpload_SyncHostServerMockRecorder
|
||||
isgomock struct{}
|
||||
}
|
||||
|
||||
// MockDfdaemonUpload_SyncHostServerMockRecorder is the mock recorder for MockDfdaemonUpload_SyncHostServer.
|
||||
type MockDfdaemonUpload_SyncHostServerMockRecorder struct {
|
||||
mock *MockDfdaemonUpload_SyncHostServer
|
||||
}
|
||||
|
||||
// NewMockDfdaemonUpload_SyncHostServer creates a new mock instance.
|
||||
func NewMockDfdaemonUpload_SyncHostServer(ctrl *gomock.Controller) *MockDfdaemonUpload_SyncHostServer {
|
||||
mock := &MockDfdaemonUpload_SyncHostServer{ctrl: ctrl}
|
||||
mock.recorder = &MockDfdaemonUpload_SyncHostServerMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockDfdaemonUpload_SyncHostServer) EXPECT() *MockDfdaemonUpload_SyncHostServerMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Context mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncHostServer) Context() context.Context {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Context")
|
||||
ret0, _ := ret[0].(context.Context)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Context indicates an expected call of Context.
|
||||
func (mr *MockDfdaemonUpload_SyncHostServerMockRecorder) Context() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockDfdaemonUpload_SyncHostServer)(nil).Context))
|
||||
}
|
||||
|
||||
// RecvMsg mocks base method.
|
||||
func (m_2 *MockDfdaemonUpload_SyncHostServer) RecvMsg(m any) error {
|
||||
m_2.ctrl.T.Helper()
|
||||
ret := m_2.ctrl.Call(m_2, "RecvMsg", m)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// RecvMsg indicates an expected call of RecvMsg.
|
||||
func (mr *MockDfdaemonUpload_SyncHostServerMockRecorder) RecvMsg(m any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockDfdaemonUpload_SyncHostServer)(nil).RecvMsg), m)
|
||||
}
|
||||
|
||||
// Send mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncHostServer) Send(arg0 *common.Host) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Send", arg0)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Send indicates an expected call of Send.
|
||||
func (mr *MockDfdaemonUpload_SyncHostServerMockRecorder) Send(arg0 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Send", reflect.TypeOf((*MockDfdaemonUpload_SyncHostServer)(nil).Send), arg0)
|
||||
}
|
||||
|
||||
// SendHeader mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncHostServer) SendHeader(arg0 metadata.MD) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "SendHeader", arg0)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// SendHeader indicates an expected call of SendHeader.
|
||||
func (mr *MockDfdaemonUpload_SyncHostServerMockRecorder) SendHeader(arg0 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendHeader", reflect.TypeOf((*MockDfdaemonUpload_SyncHostServer)(nil).SendHeader), arg0)
|
||||
}
|
||||
|
||||
// SendMsg mocks base method.
|
||||
func (m_2 *MockDfdaemonUpload_SyncHostServer) SendMsg(m any) error {
|
||||
m_2.ctrl.T.Helper()
|
||||
ret := m_2.ctrl.Call(m_2, "SendMsg", m)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// SendMsg indicates an expected call of SendMsg.
|
||||
func (mr *MockDfdaemonUpload_SyncHostServerMockRecorder) SendMsg(m any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockDfdaemonUpload_SyncHostServer)(nil).SendMsg), m)
|
||||
}
|
||||
|
||||
// SetHeader mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncHostServer) SetHeader(arg0 metadata.MD) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "SetHeader", arg0)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// SetHeader indicates an expected call of SetHeader.
|
||||
func (mr *MockDfdaemonUpload_SyncHostServerMockRecorder) SetHeader(arg0 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetHeader", reflect.TypeOf((*MockDfdaemonUpload_SyncHostServer)(nil).SetHeader), arg0)
|
||||
}
|
||||
|
||||
// SetTrailer mocks base method.
|
||||
func (m *MockDfdaemonUpload_SyncHostServer) SetTrailer(arg0 metadata.MD) {
|
||||
m.ctrl.T.Helper()
|
||||
m.ctrl.Call(m, "SetTrailer", arg0)
|
||||
}
|
||||
|
||||
// SetTrailer indicates an expected call of SetTrailer.
|
||||
func (mr *MockDfdaemonUpload_SyncHostServerMockRecorder) SetTrailer(arg0 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetTrailer", reflect.TypeOf((*MockDfdaemonUpload_SyncHostServer)(nil).SetTrailer), arg0)
|
||||
}
|
||||
|
||||
// MockDfdaemonDownloadClient is a mock of DfdaemonDownloadClient interface.
|
||||
type MockDfdaemonDownloadClient struct {
|
||||
ctrl *gomock.Controller
|
||||
|
@ -1158,26 +1819,6 @@ func (mr *MockDfdaemonDownloadClientMockRecorder) DeleteHost(ctx, in any, opts .
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteHost", reflect.TypeOf((*MockDfdaemonDownloadClient)(nil).DeleteHost), varargs...)
|
||||
}
|
||||
|
||||
// DeletePersistentCacheTask mocks base method.
|
||||
func (m *MockDfdaemonDownloadClient) DeletePersistentCacheTask(ctx context.Context, in *dfdaemon.DeletePersistentCacheTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []any{ctx, in}
|
||||
for _, a := range opts {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "DeletePersistentCacheTask", varargs...)
|
||||
ret0, _ := ret[0].(*emptypb.Empty)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// DeletePersistentCacheTask indicates an expected call of DeletePersistentCacheTask.
|
||||
func (mr *MockDfdaemonDownloadClientMockRecorder) DeletePersistentCacheTask(ctx, in any, opts ...any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]any{ctx, in}, opts...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeletePersistentCacheTask", reflect.TypeOf((*MockDfdaemonDownloadClient)(nil).DeletePersistentCacheTask), varargs...)
|
||||
}
|
||||
|
||||
// DeleteTask mocks base method.
|
||||
func (m *MockDfdaemonDownloadClient) DeleteTask(ctx context.Context, in *dfdaemon.DeleteTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
|
||||
m.ctrl.T.Helper()
|
||||
|
@ -1298,26 +1939,6 @@ func (mr *MockDfdaemonDownloadClientMockRecorder) UploadPersistentCacheTask(ctx,
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadPersistentCacheTask", reflect.TypeOf((*MockDfdaemonDownloadClient)(nil).UploadPersistentCacheTask), varargs...)
|
||||
}
|
||||
|
||||
// UploadTask mocks base method.
|
||||
func (m *MockDfdaemonDownloadClient) UploadTask(ctx context.Context, in *dfdaemon.UploadTaskRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []any{ctx, in}
|
||||
for _, a := range opts {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "UploadTask", varargs...)
|
||||
ret0, _ := ret[0].(*emptypb.Empty)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// UploadTask indicates an expected call of UploadTask.
|
||||
func (mr *MockDfdaemonDownloadClientMockRecorder) UploadTask(ctx, in any, opts ...any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]any{ctx, in}, opts...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadTask", reflect.TypeOf((*MockDfdaemonDownloadClient)(nil).UploadTask), varargs...)
|
||||
}
|
||||
|
||||
// MockDfdaemonDownload_DownloadTaskClient is a mock of DfdaemonDownload_DownloadTaskClient interface.
|
||||
type MockDfdaemonDownload_DownloadTaskClient struct {
|
||||
ctrl *gomock.Controller
|
||||
|
@ -1605,21 +2226,6 @@ func (mr *MockDfdaemonDownloadServerMockRecorder) DeleteHost(arg0, arg1 any) *go
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteHost", reflect.TypeOf((*MockDfdaemonDownloadServer)(nil).DeleteHost), arg0, arg1)
|
||||
}
|
||||
|
||||
// DeletePersistentCacheTask mocks base method.
|
||||
func (m *MockDfdaemonDownloadServer) DeletePersistentCacheTask(arg0 context.Context, arg1 *dfdaemon.DeletePersistentCacheTaskRequest) (*emptypb.Empty, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "DeletePersistentCacheTask", arg0, arg1)
|
||||
ret0, _ := ret[0].(*emptypb.Empty)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// DeletePersistentCacheTask indicates an expected call of DeletePersistentCacheTask.
|
||||
func (mr *MockDfdaemonDownloadServerMockRecorder) DeletePersistentCacheTask(arg0, arg1 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeletePersistentCacheTask", reflect.TypeOf((*MockDfdaemonDownloadServer)(nil).DeletePersistentCacheTask), arg0, arg1)
|
||||
}
|
||||
|
||||
// DeleteTask mocks base method.
|
||||
func (m *MockDfdaemonDownloadServer) DeleteTask(arg0 context.Context, arg1 *dfdaemon.DeleteTaskRequest) (*emptypb.Empty, error) {
|
||||
m.ctrl.T.Helper()
|
||||
|
@ -1708,21 +2314,6 @@ func (mr *MockDfdaemonDownloadServerMockRecorder) UploadPersistentCacheTask(arg0
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadPersistentCacheTask", reflect.TypeOf((*MockDfdaemonDownloadServer)(nil).UploadPersistentCacheTask), arg0, arg1)
|
||||
}
|
||||
|
||||
// UploadTask mocks base method.
|
||||
func (m *MockDfdaemonDownloadServer) UploadTask(arg0 context.Context, arg1 *dfdaemon.UploadTaskRequest) (*emptypb.Empty, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "UploadTask", arg0, arg1)
|
||||
ret0, _ := ret[0].(*emptypb.Empty)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// UploadTask indicates an expected call of UploadTask.
|
||||
func (mr *MockDfdaemonDownloadServerMockRecorder) UploadTask(arg0, arg1 any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadTask", reflect.TypeOf((*MockDfdaemonDownloadServer)(nil).UploadTask), arg0, arg1)
|
||||
}
|
||||
|
||||
// MockUnsafeDfdaemonDownloadServer is a mock of UnsafeDfdaemonDownloadServer interface.
|
||||
type MockUnsafeDfdaemonDownloadServer struct {
|
||||
ctrl *gomock.Controller
|
||||
|
|
|
@ -1602,20 +1602,20 @@ type RegisterPersistentCachePeerRequest struct {
|
|||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
// Host id.
|
||||
HostId string `protobuf:"bytes,1,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"`
|
||||
// Task id.
|
||||
TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
|
||||
// Persistent represents whether the persistent cache task is persistent.
|
||||
// If the persistent cache task is persistent, the persistent cache peer will
|
||||
// not be deleted when dfdaemon runs garbage collection.
|
||||
Persistent bool `protobuf:"varint,1,opt,name=persistent,proto3" json:"persistent,omitempty"`
|
||||
// Tag is used to distinguish different persistent cache tasks.
|
||||
Tag *string `protobuf:"bytes,3,opt,name=tag,proto3,oneof" json:"tag,omitempty"`
|
||||
Tag *string `protobuf:"bytes,2,opt,name=tag,proto3,oneof" json:"tag,omitempty"`
|
||||
// Application of task.
|
||||
Application *string `protobuf:"bytes,4,opt,name=application,proto3,oneof" json:"application,omitempty"`
|
||||
// Task piece length.
|
||||
PieceLength uint64 `protobuf:"varint,5,opt,name=piece_length,json=pieceLength,proto3" json:"piece_length,omitempty"`
|
||||
Application *string `protobuf:"bytes,3,opt,name=application,proto3,oneof" json:"application,omitempty"`
|
||||
// Task piece length, the value needs to be greater than or equal to 4194304(4MiB)
|
||||
PieceLength uint64 `protobuf:"varint,4,opt,name=piece_length,json=pieceLength,proto3" json:"piece_length,omitempty"`
|
||||
// File path to be exported.
|
||||
OutputPath string `protobuf:"bytes,6,opt,name=output_path,json=outputPath,proto3" json:"output_path,omitempty"`
|
||||
OutputPath *string `protobuf:"bytes,5,opt,name=output_path,json=outputPath,proto3,oneof" json:"output_path,omitempty"`
|
||||
// Download timeout.
|
||||
Timeout *durationpb.Duration `protobuf:"bytes,7,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"`
|
||||
Timeout *durationpb.Duration `protobuf:"bytes,6,opt,name=timeout,proto3,oneof" json:"timeout,omitempty"`
|
||||
}
|
||||
|
||||
func (x *RegisterPersistentCachePeerRequest) Reset() {
|
||||
|
@ -1650,18 +1650,11 @@ func (*RegisterPersistentCachePeerRequest) Descriptor() ([]byte, []int) {
|
|||
return file_pkg_apis_scheduler_v2_scheduler_proto_rawDescGZIP(), []int{24}
|
||||
}
|
||||
|
||||
func (x *RegisterPersistentCachePeerRequest) GetHostId() string {
|
||||
func (x *RegisterPersistentCachePeerRequest) GetPersistent() bool {
|
||||
if x != nil {
|
||||
return x.HostId
|
||||
return x.Persistent
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *RegisterPersistentCachePeerRequest) GetTaskId() string {
|
||||
if x != nil {
|
||||
return x.TaskId
|
||||
}
|
||||
return ""
|
||||
return false
|
||||
}
|
||||
|
||||
func (x *RegisterPersistentCachePeerRequest) GetTag() string {
|
||||
|
@ -1686,8 +1679,8 @@ func (x *RegisterPersistentCachePeerRequest) GetPieceLength() uint64 {
|
|||
}
|
||||
|
||||
func (x *RegisterPersistentCachePeerRequest) GetOutputPath() string {
|
||||
if x != nil {
|
||||
return x.OutputPath
|
||||
if x != nil && x.OutputPath != nil {
|
||||
return *x.OutputPath
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
@ -2400,20 +2393,18 @@ type UploadPersistentCacheTaskStartedRequest struct {
|
|||
PeerId string `protobuf:"bytes,3,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"`
|
||||
// Replica count of the persistent cache task.
|
||||
PersistentReplicaCount uint64 `protobuf:"varint,4,opt,name=persistent_replica_count,json=persistentReplicaCount,proto3" json:"persistent_replica_count,omitempty"`
|
||||
// Digest of the task digest, for example blake3:xxx or sha256:yyy.
|
||||
Digest string `protobuf:"bytes,5,opt,name=digest,proto3" json:"digest,omitempty"`
|
||||
// Tag is used to distinguish different persistent cache tasks.
|
||||
Tag *string `protobuf:"bytes,6,opt,name=tag,proto3,oneof" json:"tag,omitempty"`
|
||||
Tag *string `protobuf:"bytes,5,opt,name=tag,proto3,oneof" json:"tag,omitempty"`
|
||||
// Application of task.
|
||||
Application *string `protobuf:"bytes,7,opt,name=application,proto3,oneof" json:"application,omitempty"`
|
||||
// Task piece length.
|
||||
PieceLength uint64 `protobuf:"varint,8,opt,name=piece_length,json=pieceLength,proto3" json:"piece_length,omitempty"`
|
||||
Application *string `protobuf:"bytes,6,opt,name=application,proto3,oneof" json:"application,omitempty"`
|
||||
// Task piece length, the value needs to be greater than or equal to 4194304(4MiB)
|
||||
PieceLength uint64 `protobuf:"varint,7,opt,name=piece_length,json=pieceLength,proto3" json:"piece_length,omitempty"`
|
||||
// Task content length.
|
||||
ContentLength uint64 `protobuf:"varint,9,opt,name=content_length,json=contentLength,proto3" json:"content_length,omitempty"`
|
||||
ContentLength uint64 `protobuf:"varint,8,opt,name=content_length,json=contentLength,proto3" json:"content_length,omitempty"`
|
||||
// Task piece count.
|
||||
PieceCount uint32 `protobuf:"varint,10,opt,name=piece_count,json=pieceCount,proto3" json:"piece_count,omitempty"`
|
||||
PieceCount uint32 `protobuf:"varint,9,opt,name=piece_count,json=pieceCount,proto3" json:"piece_count,omitempty"`
|
||||
// TTL of the persistent cache task.
|
||||
Ttl *durationpb.Duration `protobuf:"bytes,11,opt,name=ttl,proto3" json:"ttl,omitempty"`
|
||||
Ttl *durationpb.Duration `protobuf:"bytes,10,opt,name=ttl,proto3" json:"ttl,omitempty"`
|
||||
}
|
||||
|
||||
func (x *UploadPersistentCacheTaskStartedRequest) Reset() {
|
||||
|
@ -2476,13 +2467,6 @@ func (x *UploadPersistentCacheTaskStartedRequest) GetPersistentReplicaCount() ui
|
|||
return 0
|
||||
}
|
||||
|
||||
func (x *UploadPersistentCacheTaskStartedRequest) GetDigest() string {
|
||||
if x != nil {
|
||||
return x.Digest
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *UploadPersistentCacheTaskStartedRequest) GetTag() string {
|
||||
if x != nil && x.Tag != nil {
|
||||
return *x.Tag
|
||||
|
@ -3063,346 +3047,335 @@ var file_pkg_apis_scheduler_v2_scheduler_proto_rawDesc = []byte{
|
|||
0x73, 0x74, 0x73, 0x22, 0x35, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x73,
|
||||
0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74,
|
||||
0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02,
|
||||
0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x22, 0xda, 0x02, 0x0a, 0x22, 0x52,
|
||||
0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x22, 0xd1, 0x02, 0x0a, 0x22, 0x52,
|
||||
0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e,
|
||||
0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
|
||||
0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73,
|
||||
0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02,
|
||||
0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74,
|
||||
0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01,
|
||||
0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b,
|
||||
0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
|
||||
0x09, 0x48, 0x01, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e,
|
||||
0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02,
|
||||
0x28, 0x01, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12,
|
||||
0x28, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06,
|
||||
0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x6f,
|
||||
0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d,
|
||||
0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f,
|
||||
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
|
||||
0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f,
|
||||
0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f,
|
||||
0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x2b, 0x0a, 0x29, 0x44, 0x6f, 0x77, 0x6e, 0x6c,
|
||||
0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63,
|
||||
0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71,
|
||||
0x75, 0x65, 0x73, 0x74, 0x22, 0xb6, 0x01, 0x0a, 0x24, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64,
|
||||
0x75, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63,
|
||||
0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a,
|
||||
0x11, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e,
|
||||
0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
|
||||
0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43,
|
||||
0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x10, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64,
|
||||
0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x0b, 0x64, 0x65,
|
||||
0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
|
||||
0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64,
|
||||
0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a,
|
||||
0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4d, 0x0a,
|
||||
0x2a, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74,
|
||||
0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69,
|
||||
0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70,
|
||||
0x69, 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d,
|
||||
0x52, 0x0a, 0x70, 0x69, 0x65, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x6d, 0x0a, 0x28,
|
||||
0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x18,
|
||||
0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e,
|
||||
0x74, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
|
||||
0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c,
|
||||
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52,
|
||||
0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12,
|
||||
0x2d, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18,
|
||||
0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x32, 0x05, 0x28, 0x80, 0x80, 0x80,
|
||||
0x02, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x30,
|
||||
0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20,
|
||||
0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48,
|
||||
0x02, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01,
|
||||
0x12, 0x38, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28,
|
||||
0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x07,
|
||||
0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74,
|
||||
0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x61,
|
||||
0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x2b,
|
||||
0x0a, 0x29, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73,
|
||||
0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x61,
|
||||
0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb6, 0x01, 0x0a, 0x24,
|
||||
0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73,
|
||||
0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71,
|
||||
0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74,
|
||||
0x65, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
|
||||
0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73,
|
||||
0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52,
|
||||
0x10, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74,
|
||||
0x73, 0x12, 0x31, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0,
|
||||
0x01, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4d, 0x0a, 0x2a, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64,
|
||||
0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50,
|
||||
0x65, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||
0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
|
||||
0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x69, 0x65, 0x63, 0x65, 0x43, 0x6f,
|
||||
0x75, 0x6e, 0x74, 0x22, 0x6d, 0x0a, 0x28, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50,
|
||||
0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65,
|
||||
0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
|
||||
0x31, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01,
|
||||
0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88,
|
||||
0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x22, 0xf3, 0x08, 0x0a, 0x22, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50,
|
||||
0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65,
|
||||
0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73,
|
||||
0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72,
|
||||
0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74,
|
||||
0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42,
|
||||
0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a,
|
||||
0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07,
|
||||
0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12,
|
||||
0x86, 0x01, 0x0a, 0x26, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72,
|
||||
0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65,
|
||||
0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
|
||||
0x32, 0x30, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e,
|
||||
0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65,
|
||||
0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||
0x73, 0x74, 0x48, 0x00, 0x52, 0x22, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x65,
|
||||
0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65,
|
||||
0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x9c, 0x01, 0x0a, 0x2e, 0x64, 0x6f, 0x77,
|
||||
0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74,
|
||||
0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72,
|
||||
0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
|
||||
0x0b, 0x32, 0x37, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32,
|
||||
0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74,
|
||||
0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72,
|
||||
0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x29, 0x64, 0x6f,
|
||||
0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74,
|
||||
0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64,
|
||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x8c, 0x01, 0x0a, 0x28, 0x72, 0x65, 0x73, 0x63,
|
||||
0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e,
|
||||
0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71,
|
||||
0x75, 0x65, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x63, 0x68,
|
||||
0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65,
|
||||
0x64, 0x75, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61,
|
||||
0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00,
|
||||
0x52, 0x24, 0x72, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x73,
|
||||
0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52,
|
||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x9f, 0x01, 0x0a, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c,
|
||||
0x6f, 0x61, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63,
|
||||
0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68,
|
||||
0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
|
||||
0x32, 0x38, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e,
|
||||
0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65,
|
||||
0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73,
|
||||
0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x2a, 0x64, 0x6f,
|
||||
0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74,
|
||||
0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65,
|
||||
0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x99, 0x01, 0x0a, 0x2d, 0x64, 0x6f, 0x77,
|
||||
0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74,
|
||||
0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x66, 0x61, 0x69, 0x6c,
|
||||
0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
|
||||
0x32, 0x36, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e,
|
||||
0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65,
|
||||
0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x65,
|
||||
0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63,
|
||||
0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa,
|
||||
0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73,
|
||||
0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f,
|
||||
0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf3, 0x08, 0x0a, 0x22,
|
||||
0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65,
|
||||
0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||
0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
|
||||
0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f,
|
||||
0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18,
|
||||
0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06,
|
||||
0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69,
|
||||
0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01,
|
||||
0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x86, 0x01, 0x0a, 0x26, 0x72, 0x65, 0x67,
|
||||
0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74,
|
||||
0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x63, 0x68, 0x65,
|
||||
0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
|
||||
0x72, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65,
|
||||
0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x22, 0x72,
|
||||
0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e,
|
||||
0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x12, 0x9c, 0x01, 0x0a, 0x2e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70,
|
||||
0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f,
|
||||
0x70, 0x65, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71,
|
||||
0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x63, 0x68,
|
||||
0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f,
|
||||
0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68,
|
||||
0x65, 0x50, 0x65, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x29, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50,
|
||||
0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65,
|
||||
0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x12, 0x8c, 0x01, 0x0a, 0x28, 0x72, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f,
|
||||
0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65,
|
||||
0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x06, 0x20,
|
||||
0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e,
|
||||
0x76, 0x32, 0x2e, 0x52, 0x65, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x65, 0x72,
|
||||
0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72,
|
||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x24, 0x72, 0x65, 0x73, 0x63, 0x68,
|
||||
0x65, 0x64, 0x75, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43,
|
||||
0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
|
||||
0x9f, 0x01, 0x0a, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x65, 0x72,
|
||||
0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x70, 0x65,
|
||||
0x65, 0x72, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x73, 0x63, 0x68, 0x65,
|
||||
0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61,
|
||||
0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65,
|
||||
0x50, 0x65, 0x65, 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x2a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50,
|
||||
0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65,
|
||||
0x65, 0x72, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x12, 0x99, 0x01, 0x0a, 0x2d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70,
|
||||
0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f,
|
||||
0x70, 0x65, 0x65, 0x72, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x63, 0x68, 0x65,
|
||||
0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61,
|
||||
0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65,
|
||||
0x50, 0x65, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x48, 0x00, 0x52, 0x28, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72,
|
||||
0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72,
|
||||
0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x73, 0x0a,
|
||||
0x1f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f,
|
||||
0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
|
||||
0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69,
|
||||
0x65, 0x63, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||
0x73, 0x74, 0x48, 0x00, 0x52, 0x1c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69,
|
||||
0x65, 0x63, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||
0x73, 0x74, 0x12, 0x6d, 0x0a, 0x1d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70,
|
||||
0x69, 0x65, 0x63, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x63, 0x68, 0x65,
|
||||
0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61,
|
||||
0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50,
|
||||
0x69, 0x65, 0x63, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x42, 0x0e, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x03, 0xf8, 0x42,
|
||||
0x01, 0x22, 0x22, 0x0a, 0x20, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73,
|
||||
0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7a, 0x0a, 0x21, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x50,
|
||||
0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61,
|
||||
0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x11, 0x63, 0x61,
|
||||
0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x18,
|
||||
0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76,
|
||||
0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68,
|
||||
0x65, 0x50, 0x65, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52,
|
||||
0x10, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74,
|
||||
0x73, 0x22, 0xbf, 0x02, 0x0a, 0x23, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65,
|
||||
0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65,
|
||||
0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x24, 0x65, 0x6d,
|
||||
0x70, 0x74, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63,
|
||||
0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
||||
0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64,
|
||||
0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x50, 0x65, 0x72,
|
||||
0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b,
|
||||
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x20, 0x65, 0x6d, 0x70, 0x74,
|
||||
0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x28, 0x64, 0x6f, 0x77, 0x6e,
|
||||
0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61,
|
||||
0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71,
|
||||
0x75, 0x65, 0x73, 0x74, 0x12, 0x73, 0x0a, 0x1f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64,
|
||||
0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f,
|
||||
0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e,
|
||||
0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x6f, 0x77,
|
||||
0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68,
|
||||
0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x1c, 0x64, 0x6f, 0x77,
|
||||
0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68,
|
||||
0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6d, 0x0a, 0x1d, 0x64, 0x6f, 0x77,
|
||||
0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c,
|
||||
0x65, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
|
||||
0x32, 0x28, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e,
|
||||
0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x61, 0x69,
|
||||
0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x64, 0x6f,
|
||||
0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x69, 0x65, 0x63, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65,
|
||||
0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x22, 0x0a, 0x20, 0x45, 0x6d, 0x70, 0x74,
|
||||
0x79, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65,
|
||||
0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a,
|
||||
0x25, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65,
|
||||
0x6e, 0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x72, 0x65,
|
||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73,
|
||||
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x72, 0x6d,
|
||||
0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68,
|
||||
0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52,
|
||||
0x21, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e,
|
||||
0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
||||
0x73, 0x65, 0x42, 0x0f, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x03,
|
||||
0xf8, 0x42, 0x01, 0x22, 0x86, 0x01, 0x0a, 0x1e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73,
|
||||
0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52,
|
||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69,
|
||||
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01,
|
||||
0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b,
|
||||
0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02,
|
||||
0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65,
|
||||
0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04,
|
||||
0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0x88, 0x01, 0x0a,
|
||||
0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7a, 0x0a, 0x21,
|
||||
0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74,
|
||||
0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
||||
0x65, 0x12, 0x55, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70,
|
||||
0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63,
|
||||
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74,
|
||||
0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42,
|
||||
0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x10, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74,
|
||||
0x65, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xbf, 0x02, 0x0a, 0x23, 0x41, 0x6e, 0x6e,
|
||||
0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43,
|
||||
0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
|
||||
0x12, 0x80, 0x01, 0x0a, 0x24, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69,
|
||||
0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, 0x61, 0x73, 0x6b,
|
||||
0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
||||
0x2e, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x45,
|
||||
0x6d, 0x70, 0x74, 0x79, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61,
|
||||
0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48,
|
||||
0x00, 0x52, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65,
|
||||
0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
||||
0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x25, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x5f, 0x70,
|
||||
0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f,
|
||||
0x74, 0x61, 0x73, 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20,
|
||||
0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e,
|
||||
0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74,
|
||||
0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70,
|
||||
0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x21, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x50, 0x65,
|
||||
0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73,
|
||||
0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0f, 0x0a, 0x08, 0x72, 0x65, 0x73,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0x86, 0x01, 0x0a, 0x1e, 0x53,
|
||||
0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63,
|
||||
0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a,
|
||||
0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07,
|
||||
0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12,
|
||||
0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
|
||||
0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49,
|
||||
0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
|
||||
0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65,
|
||||
0x72, 0x49, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65,
|
||||
0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65,
|
||||
0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74,
|
||||
0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02,
|
||||
0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61,
|
||||
0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04,
|
||||
0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07,
|
||||
0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa,
|
||||
0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0xdf,
|
||||
0x03, 0x0a, 0x27, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74,
|
||||
0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72,
|
||||
0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f,
|
||||
0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04,
|
||||
0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07,
|
||||
0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa,
|
||||
0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20,
|
||||
0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42,
|
||||
0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64,
|
||||
0x12, 0x41, 0x0a, 0x18, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x72,
|
||||
0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01,
|
||||
0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x32, 0x02, 0x28, 0x01, 0x52, 0x16, 0x70, 0x65, 0x72,
|
||||
0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f,
|
||||
0x75, 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
|
||||
0x48, 0x00, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70,
|
||||
0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48,
|
||||
0x01, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01,
|
||||
0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74,
|
||||
0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x32, 0x05, 0x28, 0x80,
|
||||
0x80, 0x80, 0x02, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68,
|
||||
0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x6e, 0x67,
|
||||
0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
|
||||
0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65,
|
||||
0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x69,
|
||||
0x65, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18,
|
||||
0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x42, 0x11, 0xfa, 0x42, 0x0e, 0xaa, 0x01, 0x0b, 0x22, 0x04, 0x08, 0x80, 0xf5, 0x24, 0x32, 0x03,
|
||||
0x08, 0xac, 0x02, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x61, 0x67,
|
||||
0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x22, 0x90, 0x01, 0x0a, 0x28, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69,
|
||||
0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69,
|
||||
0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a,
|
||||
0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07,
|
||||
0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12,
|
||||
0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
|
||||
0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49,
|
||||
0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
|
||||
0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65, 0x65,
|
||||
0x72, 0x49, 0x64, 0x22, 0xd1, 0x01, 0x0a, 0x26, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65,
|
||||
0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73,
|
||||
0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20,
|
||||
0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
|
||||
0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64,
|
||||
0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
|
||||
0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b,
|
||||
0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
|
||||
0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70, 0x65,
|
||||
0x65, 0x72, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05,
|
||||
0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63,
|
||||
0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x1e, 0x53, 0x74, 0x61, 0x74, 0x50,
|
||||
0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61,
|
||||
0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73,
|
||||
0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72,
|
||||
0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74,
|
||||
0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42,
|
||||
0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x66, 0x0a,
|
||||
0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e,
|
||||
0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
|
||||
0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73,
|
||||
0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02,
|
||||
0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74,
|
||||
0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64,
|
||||
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52,
|
||||
0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0x88, 0x05, 0x0a, 0x27, 0x55, 0x70, 0x6c, 0x6f,
|
||||
0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68,
|
||||
0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68,
|
||||
0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52,
|
||||
0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f,
|
||||
0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10,
|
||||
0x01, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x18, 0x70, 0x65, 0x72,
|
||||
0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f,
|
||||
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa, 0x42, 0x04,
|
||||
0x32, 0x02, 0x28, 0x01, 0x52, 0x16, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74,
|
||||
0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xaa, 0x01, 0x0a,
|
||||
0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x91, 0x01,
|
||||
0xfa, 0x42, 0x8d, 0x01, 0x72, 0x8a, 0x01, 0x32, 0x87, 0x01, 0x5e, 0x28, 0x6d, 0x64, 0x35, 0x3a,
|
||||
0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x33, 0x32, 0x7d, 0x7c,
|
||||
0x73, 0x68, 0x61, 0x31, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d,
|
||||
0x7b, 0x34, 0x30, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x3a, 0x5b, 0x61, 0x2d, 0x66,
|
||||
0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x73, 0x68, 0x61, 0x35,
|
||||
0x31, 0x32, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31,
|
||||
0x32, 0x38, 0x7d, 0x7c, 0x62, 0x6c, 0x61, 0x6b, 0x65, 0x33, 0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41,
|
||||
0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x36, 0x34, 0x7d, 0x7c, 0x63, 0x72, 0x63, 0x33, 0x32,
|
||||
0x3a, 0x5b, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x38, 0x7d, 0x29,
|
||||
0x24, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x61, 0x67,
|
||||
0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x74, 0x61, 0x67, 0x88, 0x01, 0x01,
|
||||
0x12, 0x25, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
|
||||
0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0c, 0x70, 0x69, 0x65, 0x63, 0x65,
|
||||
0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xfa,
|
||||
0x42, 0x04, 0x32, 0x02, 0x28, 0x01, 0x52, 0x0b, 0x70, 0x69, 0x65, 0x63, 0x65, 0x4c, 0x65, 0x6e,
|
||||
0x67, 0x74, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6c,
|
||||
0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x6f, 0x6e,
|
||||
0x74, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x69,
|
||||
0x65, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52,
|
||||
0x0a, 0x70, 0x69, 0x65, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x03, 0x74,
|
||||
0x74, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x42, 0x10, 0xfa, 0x42, 0x0d, 0xaa, 0x01, 0x0a, 0x22, 0x04, 0x08, 0x80, 0xf5,
|
||||
0x24, 0x32, 0x02, 0x08, 0x3c, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74,
|
||||
0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
|
||||
0x6f, 0x6e, 0x22, 0x90, 0x01, 0x0a, 0x28, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72,
|
||||
0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b,
|
||||
0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
|
||||
0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
|
||||
0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49,
|
||||
0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
|
||||
0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73,
|
||||
0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03,
|
||||
0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x70,
|
||||
0x65, 0x65, 0x72, 0x49, 0x64, 0x22, 0xd1, 0x01, 0x0a, 0x26, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64,
|
||||
0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54,
|
||||
0x61, 0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||
0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74,
|
||||
0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
|
||||
0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61,
|
||||
0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
|
||||
0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06,
|
||||
0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
|
||||
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xfa, 0x42, 0x07,
|
||||
0x72, 0x05, 0x10, 0x01, 0xd0, 0x01, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
|
||||
0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65,
|
||||
0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x1e, 0x53, 0x74, 0x61,
|
||||
0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65,
|
||||
0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68,
|
||||
0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42,
|
||||
0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a,
|
||||
0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07,
|
||||
0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22,
|
||||
0x66, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74,
|
||||
0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x68,
|
||||
0x6f, 0x73, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52,
|
||||
0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x32, 0xca, 0x0b, 0x0a, 0x09, 0x53, 0x63, 0x68, 0x65,
|
||||
0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63,
|
||||
0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
|
||||
0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65,
|
||||
0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64,
|
||||
0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65,
|
||||
0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01,
|
||||
0x12, 0x3a, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x73,
|
||||
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74,
|
||||
0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x63, 0x6f,
|
||||
0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x0a,
|
||||
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68,
|
||||
0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
|
||||
0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
|
||||
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
|
||||
0x70, 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12,
|
||||
0x1d, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53,
|
||||
0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f,
|
||||
0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x12,
|
||||
0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1f, 0x2e,
|
||||
0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c,
|
||||
0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16,
|
||||
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
|
||||
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e,
|
||||
0x63, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
|
||||
0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x48, 0x6f,
|
||||
0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x61, 0x73, 0x6b, 0x49, 0x64, 0x32, 0xca, 0x0b, 0x0a, 0x09, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75,
|
||||
0x6c, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50,
|
||||
0x65, 0x65, 0x72, 0x12, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e,
|
||||
0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52,
|
||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
|
||||
0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65,
|
||||
0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x3a,
|
||||
0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x73, 0x63, 0x68,
|
||||
0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65,
|
||||
0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
|
||||
0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x0a, 0x44, 0x65,
|
||||
0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64,
|
||||
0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65,
|
||||
0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
|
||||
0x79, 0x12, 0x44, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x73, 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, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
|
||||
0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x52,
|
||||
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74,
|
||||
0x65, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
|
||||
0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x52,
|
||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
|
||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x86,
|
||||
0x01, 0x0a, 0x1b, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69,
|
||||
0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x30,
|
||||
0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e,
|
||||
0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74,
|
||||
0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x1a, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e,
|
||||
0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65,
|
||||
0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
|
||||
0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x74, 0x50,
|
||||
0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65,
|
||||
0x65, 0x72, 0x12, 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76,
|
||||
0x32, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74,
|
||||
0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72,
|
||||
0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72,
|
||||
0x12, 0x63, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73,
|
||||
0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x2e, 0x2e,
|
||||
0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c,
|
||||
0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63,
|
||||
0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
|
||||
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
||||
0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x71, 0x0a, 0x20, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50,
|
||||
0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61,
|
||||
0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x35, 0x2e, 0x73, 0x63, 0x68, 0x65,
|
||||
0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50,
|
||||
0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61,
|
||||
0x73, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
||||
0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x7b, 0x0a, 0x21, 0x55, 0x70, 0x6c, 0x6f,
|
||||
0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68,
|
||||
0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x36, 0x2e,
|
||||
0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c,
|
||||
0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63,
|
||||
0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65,
|
||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76,
|
||||
0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68,
|
||||
0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x6f, 0x0a, 0x1f, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50,
|
||||
0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61,
|
||||
0x73, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x34, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64,
|
||||
0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65,
|
||||
0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73,
|
||||
0x6b, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16,
|
||||
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
|
||||
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x67, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65,
|
||||
0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73,
|
||||
0x6b, 0x12, 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32,
|
||||
0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43,
|
||||
0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
||||
0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73,
|
||||
0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12,
|
||||
0x63, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74,
|
||||
0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2e, 0x2e, 0x73,
|
||||
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65,
|
||||
0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68,
|
||||
0x79, 0x12, 0x3a, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1d, 0x2e,
|
||||
0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61,
|
||||
0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x63,
|
||||
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x45, 0x0a,
|
||||
0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1f, 0x2e, 0x73, 0x63,
|
||||
0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
|
||||
0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67,
|
||||
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
|
||||
0x6d, 0x70, 0x74, 0x79, 0x42, 0x2f, 0x5a, 0x2d, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x61,
|
||||
0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x73,
|
||||
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x32, 0x3b, 0x73, 0x63, 0x68, 0x65,
|
||||
0x64, 0x75, 0x6c, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
0x6d, 0x70, 0x74, 0x79, 0x12, 0x49, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65,
|
||||
0x48, 0x6f, 0x73, 0x74, 0x12, 0x21, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
|
||||
0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x48, 0x6f, 0x73, 0x74,
|
||||
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
|
||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12,
|
||||
0x44, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x73, 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, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
|
||||
0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48,
|
||||
0x6f, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e,
|
||||
0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x71,
|
||||
0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x86, 0x01, 0x0a,
|
||||
0x1b, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74,
|
||||
0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x73,
|
||||
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e, 0x6e, 0x6f,
|
||||
0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61,
|
||||
0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31,
|
||||
0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x6e,
|
||||
0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74,
|
||||
0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
||||
0x65, 0x28, 0x01, 0x30, 0x01, 0x12, 0x67, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72,
|
||||
0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72,
|
||||
0x12, 0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e,
|
||||
0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61,
|
||||
0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e,
|
||||
0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69,
|
||||
0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x63,
|
||||
0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65,
|
||||
0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x65, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x73, 0x63,
|
||||
0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
|
||||
0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65,
|
||||
0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
|
||||
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
|
||||
0x70, 0x74, 0x79, 0x12, 0x71, 0x0a, 0x20, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72,
|
||||
0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b,
|
||||
0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x35, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
|
||||
0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72,
|
||||
0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b,
|
||||
0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16,
|
||||
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
|
||||
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x7b, 0x0a, 0x21, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64,
|
||||
0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54,
|
||||
0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x36, 0x2e, 0x73, 0x63,
|
||||
0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61,
|
||||
0x64, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65,
|
||||
0x54, 0x61, 0x73, 0x6b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e,
|
||||
0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54,
|
||||
0x61, 0x73, 0x6b, 0x12, 0x6f, 0x0a, 0x1f, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72,
|
||||
0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b,
|
||||
0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x34, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
|
||||
0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x65, 0x72, 0x73,
|
||||
0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x46,
|
||||
0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67,
|
||||
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
|
||||
0x6d, 0x70, 0x74, 0x79, 0x12, 0x67, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73,
|
||||
0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12,
|
||||
0x2c, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x53,
|
||||
0x74, 0x61, 0x74, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63,
|
||||
0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e,
|
||||
0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73,
|
||||
0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x63, 0x0a,
|
||||
0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e,
|
||||
0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2e, 0x2e, 0x73, 0x63, 0x68,
|
||||
0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
|
||||
0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54,
|
||||
0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f,
|
||||
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70,
|
||||
0x74, 0x79, 0x42, 0x2f, 0x5a, 0x2d, 0x64, 0x37, 0x79, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69,
|
||||
0x2f, 0x76, 0x32, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x73, 0x63, 0x68,
|
||||
0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x32, 0x3b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
|
||||
0x6c, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
|
@ -3869,43 +3869,12 @@ func (m *RegisterPersistentCachePeerRequest) validate(all bool) error {
|
|||
|
||||
var errors []error
|
||||
|
||||
if utf8.RuneCountInString(m.GetHostId()) < 1 {
|
||||
err := RegisterPersistentCachePeerRequestValidationError{
|
||||
field: "HostId",
|
||||
reason: "value length must be at least 1 runes",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
}
|
||||
errors = append(errors, err)
|
||||
}
|
||||
// no validation rules for Persistent
|
||||
|
||||
if utf8.RuneCountInString(m.GetTaskId()) < 1 {
|
||||
err := RegisterPersistentCachePeerRequestValidationError{
|
||||
field: "TaskId",
|
||||
reason: "value length must be at least 1 runes",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
}
|
||||
errors = append(errors, err)
|
||||
}
|
||||
|
||||
if m.GetPieceLength() < 1 {
|
||||
if m.GetPieceLength() < 4194304 {
|
||||
err := RegisterPersistentCachePeerRequestValidationError{
|
||||
field: "PieceLength",
|
||||
reason: "value must be greater than or equal to 1",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
}
|
||||
errors = append(errors, err)
|
||||
}
|
||||
|
||||
if utf8.RuneCountInString(m.GetOutputPath()) < 1 {
|
||||
err := RegisterPersistentCachePeerRequestValidationError{
|
||||
field: "OutputPath",
|
||||
reason: "value length must be at least 1 runes",
|
||||
reason: "value must be greater than or equal to 4194304",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
|
@ -3921,6 +3890,25 @@ func (m *RegisterPersistentCachePeerRequest) validate(all bool) error {
|
|||
// no validation rules for Application
|
||||
}
|
||||
|
||||
if m.OutputPath != nil {
|
||||
|
||||
if m.GetOutputPath() != "" {
|
||||
|
||||
if utf8.RuneCountInString(m.GetOutputPath()) < 1 {
|
||||
err := RegisterPersistentCachePeerRequestValidationError{
|
||||
field: "OutputPath",
|
||||
reason: "value length must be at least 1 runes",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
}
|
||||
errors = append(errors, err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if m.Timeout != nil {
|
||||
|
||||
if all {
|
||||
|
@ -5783,21 +5771,10 @@ func (m *UploadPersistentCacheTaskStartedRequest) validate(all bool) error {
|
|||
errors = append(errors, err)
|
||||
}
|
||||
|
||||
if !_UploadPersistentCacheTaskStartedRequest_Digest_Pattern.MatchString(m.GetDigest()) {
|
||||
err := UploadPersistentCacheTaskStartedRequestValidationError{
|
||||
field: "Digest",
|
||||
reason: "value does not match regex pattern \"^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$\"",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
}
|
||||
errors = append(errors, err)
|
||||
}
|
||||
|
||||
if m.GetPieceLength() < 1 {
|
||||
if m.GetPieceLength() < 4194304 {
|
||||
err := UploadPersistentCacheTaskStartedRequestValidationError{
|
||||
field: "PieceLength",
|
||||
reason: "value must be greater than or equal to 1",
|
||||
reason: "value must be greater than or equal to 4194304",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
|
@ -5824,12 +5801,12 @@ func (m *UploadPersistentCacheTaskStartedRequest) validate(all bool) error {
|
|||
} else {
|
||||
|
||||
lte := time.Duration(604800*time.Second + 0*time.Nanosecond)
|
||||
gte := time.Duration(60*time.Second + 0*time.Nanosecond)
|
||||
gte := time.Duration(300*time.Second + 0*time.Nanosecond)
|
||||
|
||||
if dur < gte || dur > lte {
|
||||
err := UploadPersistentCacheTaskStartedRequestValidationError{
|
||||
field: "Ttl",
|
||||
reason: "value must be inside range [1m0s, 168h0m0s]",
|
||||
reason: "value must be inside range [5m0s, 168h0m0s]",
|
||||
}
|
||||
if !all {
|
||||
return err
|
||||
|
@ -5930,8 +5907,6 @@ var _ interface {
|
|||
ErrorName() string
|
||||
} = UploadPersistentCacheTaskStartedRequestValidationError{}
|
||||
|
||||
var _UploadPersistentCacheTaskStartedRequest_Digest_Pattern = regexp.MustCompile("^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$")
|
||||
|
||||
// Validate checks the field values on UploadPersistentCacheTaskFinishedRequest
|
||||
// with the rules defined in the proto definition for this message. If any
|
||||
// rules are violated, the first error encountered is returned, or nil if
|
||||
|
|
|
@ -226,20 +226,20 @@ message DeleteHostRequest{
|
|||
|
||||
// RegisterPersistentCachePeerRequest represents persistent cache peer registered request of AnnouncePersistentCachePeerRequest.
|
||||
message RegisterPersistentCachePeerRequest {
|
||||
// Host id.
|
||||
string host_id = 1 [(validate.rules).string.min_len = 1];
|
||||
// Task id.
|
||||
string task_id = 2 [(validate.rules).string.min_len = 1];
|
||||
// Persistent represents whether the persistent cache task is persistent.
|
||||
// If the persistent cache task is persistent, the persistent cache peer will
|
||||
// not be deleted when dfdaemon runs garbage collection.
|
||||
bool persistent = 1;
|
||||
// Tag is used to distinguish different persistent cache tasks.
|
||||
optional string tag = 3;
|
||||
optional string tag = 2;
|
||||
// Application of task.
|
||||
optional string application = 4;
|
||||
// Task piece length.
|
||||
uint64 piece_length = 5 [(validate.rules).uint64.gte = 1];
|
||||
optional string application = 3;
|
||||
// Task piece length, the value needs to be greater than or equal to 4194304(4MiB)
|
||||
uint64 piece_length = 4 [(validate.rules).uint64.gte = 4194304];
|
||||
// File path to be exported.
|
||||
string output_path = 6 [(validate.rules).string.min_len = 1];
|
||||
optional string output_path = 5 [(validate.rules).string = {min_len: 1, ignore_empty: true}];
|
||||
// Download timeout.
|
||||
optional google.protobuf.Duration timeout = 7;
|
||||
optional google.protobuf.Duration timeout = 6;
|
||||
}
|
||||
|
||||
// DownloadPersistentCachePeerStartedRequest represents persistent cache peer download started request of AnnouncePersistentCachePeerRequest.
|
||||
|
@ -339,20 +339,18 @@ message UploadPersistentCacheTaskStartedRequest {
|
|||
string peer_id = 3 [(validate.rules).string.min_len = 1];
|
||||
// Replica count of the persistent cache task.
|
||||
uint64 persistent_replica_count = 4 [(validate.rules).uint64.gte = 1];
|
||||
// Digest of the task digest, for example blake3:xxx or sha256:yyy.
|
||||
string digest = 5 [(validate.rules).string = {pattern: "^(md5:[a-fA-F0-9]{32}|sha1:[a-fA-F0-9]{40}|sha256:[a-fA-F0-9]{64}|sha512:[a-fA-F0-9]{128}|blake3:[a-fA-F0-9]{64}|crc32:[a-fA-F0-9]{8})$"}];
|
||||
// Tag is used to distinguish different persistent cache tasks.
|
||||
optional string tag = 6;
|
||||
optional string tag = 5;
|
||||
// Application of task.
|
||||
optional string application = 7;
|
||||
// Task piece length.
|
||||
uint64 piece_length = 8 [(validate.rules).uint64.gte = 1];
|
||||
optional string application = 6;
|
||||
// Task piece length, the value needs to be greater than or equal to 4194304(4MiB)
|
||||
uint64 piece_length = 7 [(validate.rules).uint64.gte = 4194304];
|
||||
// Task content length.
|
||||
uint64 content_length = 9;
|
||||
uint64 content_length = 8;
|
||||
// Task piece count.
|
||||
uint32 piece_count = 10;
|
||||
uint32 piece_count = 9;
|
||||
// TTL of the persistent cache task.
|
||||
google.protobuf.Duration ttl = 11 [(validate.rules).duration = {gte:{seconds: 60}, lte:{seconds: 604800}}];
|
||||
google.protobuf.Duration ttl = 10 [(validate.rules).duration = {gte:{seconds: 300}, lte:{seconds: 604800}}];
|
||||
}
|
||||
|
||||
// UploadPersistentCacheTaskFinishedRequest represents upload persistent cache task finished request of UploadPersistentCacheTaskFinishedRequest.
|
||||
|
|
|
@ -177,26 +177,24 @@ message Task {
|
|||
repeated string filtered_query_params = 7;
|
||||
// Task request headers.
|
||||
map<string, string> request_header = 8;
|
||||
// Task piece length.
|
||||
uint64 piece_length = 9;
|
||||
// Task content length.
|
||||
uint64 content_length = 10;
|
||||
uint64 content_length = 9;
|
||||
// Task piece count.
|
||||
uint32 piece_count = 11;
|
||||
uint32 piece_count = 10;
|
||||
// Task size scope.
|
||||
SizeScope size_scope = 12;
|
||||
SizeScope size_scope = 11;
|
||||
// Pieces of task.
|
||||
repeated Piece pieces = 13;
|
||||
repeated Piece pieces = 12;
|
||||
// Task state.
|
||||
string state = 14;
|
||||
string state = 13;
|
||||
// Task peer count.
|
||||
uint32 peer_count = 15;
|
||||
uint32 peer_count = 14;
|
||||
// Task contains available peer.
|
||||
bool has_available_peer = 16;
|
||||
bool has_available_peer = 15;
|
||||
// Task create time.
|
||||
google.protobuf.Timestamp created_at = 17;
|
||||
google.protobuf.Timestamp created_at = 16;
|
||||
// Task update time.
|
||||
google.protobuf.Timestamp updated_at = 18;
|
||||
google.protobuf.Timestamp updated_at = 17;
|
||||
}
|
||||
|
||||
// PersistentCacheTask metadata.
|
||||
|
@ -214,26 +212,24 @@ message PersistentCacheTask {
|
|||
// Current replica count of the cache task. If cache task is not persistent,
|
||||
// the persistent cache task will be deleted when dfdaemon runs garbage collection.
|
||||
uint64 current_replica_count = 4;
|
||||
// Digest of the task digest, for example blake3:xxx or sha256:yyy.
|
||||
string digest = 5;
|
||||
// Tag is used to distinguish different persistent cache tasks.
|
||||
optional string tag = 6;
|
||||
optional string tag = 5;
|
||||
// Application of task.
|
||||
optional string application = 7;
|
||||
optional string application = 6;
|
||||
// Task piece length.
|
||||
uint64 piece_length = 8;
|
||||
uint64 piece_length = 7;
|
||||
// Task content length.
|
||||
uint64 content_length = 9;
|
||||
uint64 content_length = 8;
|
||||
// Task piece count.
|
||||
uint32 piece_count = 10;
|
||||
uint32 piece_count = 9;
|
||||
// Task state.
|
||||
string state = 11;
|
||||
string state = 10;
|
||||
// TTL of the persistent cache task.
|
||||
google.protobuf.Duration ttl = 12;
|
||||
google.protobuf.Duration ttl = 11;
|
||||
// Task create time.
|
||||
google.protobuf.Timestamp created_at = 13;
|
||||
google.protobuf.Timestamp created_at = 12;
|
||||
// Task update time.
|
||||
google.protobuf.Timestamp updated_at = 14;
|
||||
google.protobuf.Timestamp updated_at = 13;
|
||||
}
|
||||
|
||||
// Host metadata.
|
||||
|
@ -417,24 +413,40 @@ message Download {
|
|||
map<string, string> request_header = 9;
|
||||
// Task piece length.
|
||||
optional uint64 piece_length = 10;
|
||||
// File path to be exported.
|
||||
// File path to be downloaded. If output_path is set, the downloaded file will be saved to the specified path.
|
||||
// Dfdaemon will try to create hard link to the output path before starting the download. If hard link creation fails,
|
||||
// it will copy the file to the output path after the download is completed.
|
||||
// For more details refer to https://github.com/dragonflyoss/design/blob/main/systems-analysis/file-download-workflow-with-hard-link/README.md.
|
||||
optional string output_path = 11;
|
||||
// Download timeout.
|
||||
optional google.protobuf.Duration timeout = 12;
|
||||
// Dfdaemon will disable download back-to-source by itself, if disable_back_to_source is true.
|
||||
// Dfdaemon cannot download the task from the source if disable_back_to_source is true.
|
||||
bool disable_back_to_source = 13;
|
||||
// Scheduler will triggers peer to download back-to-source, if need_back_to_source is true.
|
||||
// Scheduler needs to schedule the task downloads from the source if need_back_to_source is true.
|
||||
bool need_back_to_source = 14;
|
||||
// certificate_chain is the client certs with DER format for the backend client to download back-to-source.
|
||||
repeated bytes certificate_chain = 15;
|
||||
// Prefetch pre-downloads all pieces of the task when download task with range request.
|
||||
// Prefetch pre-downloads all pieces of the task when the download task request is a range request.
|
||||
bool prefetch = 16;
|
||||
// Object Storage related information.
|
||||
// Object storage protocol information.
|
||||
optional ObjectStorage object_storage = 17;
|
||||
// HDFS related information.
|
||||
// HDFS protocol information.
|
||||
optional HDFS hdfs = 18;
|
||||
// is_prefetch is the flag to indicate whether the request is a prefetch request.
|
||||
bool is_prefetch = 19;
|
||||
// need_piece_content is the flag to indicate whether the response needs to return piece content.
|
||||
bool need_piece_content = 20;
|
||||
// load_to_cache indicates whether the content downloaded will be stored in the cache storage.
|
||||
// Cache storage is designed to store downloaded piece content from preheat tasks,
|
||||
// allowing other peers to access the content from memory instead of disk.
|
||||
bool load_to_cache = 21;
|
||||
// force_hard_link is the flag to indicate whether the download file must be hard linked to the output path.
|
||||
// For more details refer to https://github.com/dragonflyoss/design/blob/main/systems-analysis/file-download-workflow-with-hard-link/README.md.
|
||||
bool force_hard_link = 22;
|
||||
// content_for_calculating_task_id is the content used to calculate the task id.
|
||||
// If content_for_calculating_task_id is set, use its value to calculate the task ID.
|
||||
// Otherwise, calculate the task ID based on url, piece_length, tag, application, and filtered_query_params.
|
||||
optional string content_for_calculating_task_id = 23;
|
||||
}
|
||||
|
||||
// Object Storage related information.
|
||||
|
|
|
@ -100,6 +100,8 @@ message DownloadPieceRequest{
|
|||
message DownloadPieceResponse {
|
||||
// Piece information.
|
||||
common.v2.Piece piece = 1;
|
||||
// Piece metadata digest, it is used to verify the integrity of the piece metadata.
|
||||
optional string digest = 2;
|
||||
}
|
||||
|
||||
// StatTaskRequest represents request of StatTask.
|
||||
|
@ -126,10 +128,19 @@ message DownloadPersistentCacheTaskRequest {
|
|||
optional string tag = 3;
|
||||
// Application of task.
|
||||
optional string application = 4;
|
||||
// File path to be exported.
|
||||
string output_path = 5;
|
||||
// File path to be exported. If output_path is set, the exported file will be saved to the specified path.
|
||||
// Dfdaemon will try to create hard link to the output path before starting the export. If hard link creation fails,
|
||||
// it will copy the file to the output path after the export is completed.
|
||||
// For more details refer to https://github.com/dragonflyoss/design/blob/main/systems-analysis/file-download-workflow-with-hard-link/README.md.
|
||||
optional string output_path = 5;
|
||||
// Download timeout.
|
||||
optional google.protobuf.Duration timeout = 6;
|
||||
// need_piece_content is the flag to indicate whether the response needs to return piece content.
|
||||
bool need_piece_content = 7;
|
||||
// force_hard_link is the flag to indicate whether the exported file must be hard linked to the output path.
|
||||
// For more details refer to https://github.com/dragonflyoss/design/blob/main/systems-analysis/file-download-workflow-with-hard-link/README.md.
|
||||
bool force_hard_link = 8;
|
||||
|
||||
}
|
||||
|
||||
// DownloadPersistentCacheTaskStartedResponse represents task download started response of DownloadPersistentCacheTaskResponse.
|
||||
|
@ -155,18 +166,35 @@ message DownloadPersistentCacheTaskResponse {
|
|||
|
||||
// UploadPersistentCacheTaskRequest represents request of UploadPersistentCacheTask.
|
||||
message UploadPersistentCacheTaskRequest {
|
||||
// content_for_calculating_task_id is the content used to calculate the task id.
|
||||
// If content_for_calculating_task_id is set, use its value to calculate the task ID.
|
||||
// Otherwise, calculate the task ID based on the file content, tag and application by crc32 algorithm`.
|
||||
optional string content_for_calculating_task_id = 1;
|
||||
// Upload file path of persistent cache task.
|
||||
string path = 1;
|
||||
string path = 2;
|
||||
// Replica count of the persistent persistent cache task.
|
||||
uint64 persistent_replica_count = 2;
|
||||
uint64 persistent_replica_count = 3;
|
||||
// Tag is used to distinguish different persistent cache tasks.
|
||||
optional string tag = 3;
|
||||
// Application of task.
|
||||
optional string application = 4;
|
||||
optional string tag = 4;
|
||||
// Application of the persistent cache task.
|
||||
optional string application = 5;
|
||||
// Piece length of the persistent cache task, the value needs to be greater than or equal to 4194304(4MiB).
|
||||
optional uint64 piece_length = 6;
|
||||
// TTL of the persistent cache task.
|
||||
google.protobuf.Duration ttl = 5;
|
||||
// Upload timeout.
|
||||
optional google.protobuf.Duration timeout = 6;
|
||||
google.protobuf.Duration ttl = 7;
|
||||
// Download timeout.
|
||||
optional google.protobuf.Duration timeout = 8;
|
||||
}
|
||||
|
||||
// UpdatePersistentCacheTaskRequest represents request of UpdatePersistentCacheTask.
|
||||
message UpdatePersistentCacheTaskRequest {
|
||||
// Task id.
|
||||
string task_id = 1;
|
||||
// Persistent represents whether the persistent cache peer is persistent.
|
||||
// If the persistent cache peer is persistent, the persistent cache peer will
|
||||
// not be deleted when dfdaemon runs garbage collection. It only be deleted
|
||||
// when the task is deleted by the user.
|
||||
bool persistent = 2;
|
||||
}
|
||||
|
||||
// StatPersistentCacheTaskRequest represents request of StatPersistentCacheTask.
|
||||
|
@ -181,8 +209,76 @@ message DeletePersistentCacheTaskRequest {
|
|||
string task_id = 1;
|
||||
}
|
||||
|
||||
// SyncPersistentCachePiecesRequest represents request of SyncPersistentCachePieces.
|
||||
message SyncPersistentCachePiecesRequest {
|
||||
// Host id.
|
||||
string host_id = 1;
|
||||
// Task id.
|
||||
string task_id = 2;
|
||||
// Interested piece numbers.
|
||||
repeated uint32 interested_piece_numbers = 3;
|
||||
}
|
||||
|
||||
// SyncPersistentCachePiecesResponse represents response of SyncPersistentCachePieces.
|
||||
message SyncPersistentCachePiecesResponse {
|
||||
// Exist piece number.
|
||||
uint32 number = 1;
|
||||
// Piece offset.
|
||||
uint64 offset = 2;
|
||||
// Piece length.
|
||||
uint64 length = 3;
|
||||
}
|
||||
|
||||
// DownloadPersistentCachePieceRequest represents request of DownloadPersistentCachePiece.
|
||||
message DownloadPersistentCachePieceRequest{
|
||||
// Host id.
|
||||
string host_id = 1;
|
||||
// Task id.
|
||||
string task_id = 2;
|
||||
// Piece number.
|
||||
uint32 piece_number = 3;
|
||||
}
|
||||
|
||||
// DownloadPersistentCachePieceResponse represents response of DownloadPersistentCachePieces.
|
||||
message DownloadPersistentCachePieceResponse {
|
||||
// Piece information.
|
||||
common.v2.Piece piece = 1;
|
||||
// Piece metadata digest, it is used to verify the integrity of the piece metadata.
|
||||
optional string digest = 2;
|
||||
}
|
||||
|
||||
// SyncHostRequest represents request of SyncHost.
|
||||
message SyncHostRequest {
|
||||
// Host id.
|
||||
string host_id = 1;
|
||||
// Peer id.
|
||||
string peer_id = 2;
|
||||
}
|
||||
|
||||
// IBVerbsQueuePairEndpoint represents queue pair endpoint of IBVerbs.
|
||||
message IBVerbsQueuePairEndpoint {
|
||||
// Number of the queue pair.
|
||||
uint32 num = 1;
|
||||
// Local identifier of the context.
|
||||
uint32 lid = 2;
|
||||
// Global identifier of the context.
|
||||
bytes gid = 3;
|
||||
}
|
||||
|
||||
// ExchangeIBVerbsQueuePairEndpointRequest represents request of ExchangeIBVerbsQueuePairEndpoint.
|
||||
message ExchangeIBVerbsQueuePairEndpointRequest {
|
||||
// Information of the source's queue pair endpoint of IBVerbs.
|
||||
IBVerbsQueuePairEndpoint endpoint = 1;
|
||||
}
|
||||
|
||||
// ExchangeIBVerbsQueuePairEndpointResponse represents response of ExchangeIBVerbsQueuePairEndpoint.
|
||||
message ExchangeIBVerbsQueuePairEndpointResponse {
|
||||
// Information of the destination's queue pair endpoint of IBVerbs.
|
||||
IBVerbsQueuePairEndpoint endpoint = 1;
|
||||
}
|
||||
|
||||
// DfdaemonUpload represents upload service of dfdaemon.
|
||||
service DfdaemonUpload{
|
||||
service DfdaemonUpload {
|
||||
// DownloadTask downloads task from p2p network.
|
||||
rpc DownloadTask(DownloadTaskRequest) returns(stream DownloadTaskResponse);
|
||||
|
||||
|
@ -201,15 +297,30 @@ service DfdaemonUpload{
|
|||
// DownloadPersistentCacheTask downloads persistent cache task from p2p network.
|
||||
rpc DownloadPersistentCacheTask(DownloadPersistentCacheTaskRequest) returns(stream DownloadPersistentCacheTaskResponse);
|
||||
|
||||
// UpdatePersistentCacheTask updates metadate of thr persistent cache task in p2p network.
|
||||
rpc UpdatePersistentCacheTask(UpdatePersistentCacheTaskRequest) returns(google.protobuf.Empty);
|
||||
|
||||
// StatPersistentCacheTask stats persistent cache task information.
|
||||
rpc StatPersistentCacheTask(StatPersistentCacheTaskRequest) returns(common.v2.PersistentCacheTask);
|
||||
|
||||
// DeletePersistentCacheTask deletes persistent cache task from p2p network.
|
||||
rpc DeletePersistentCacheTask(DeletePersistentCacheTaskRequest) returns(google.protobuf.Empty);
|
||||
|
||||
// SyncPersistentCachePieces syncs persistent cache pieces from remote peer.
|
||||
rpc SyncPersistentCachePieces(SyncPersistentCachePiecesRequest) returns(stream SyncPersistentCachePiecesResponse);
|
||||
|
||||
// DownloadPersistentCachePiece downloads persistent cache piece from p2p network.
|
||||
rpc DownloadPersistentCachePiece(DownloadPersistentCachePieceRequest)returns(DownloadPersistentCachePieceResponse);
|
||||
|
||||
// SyncHost sync host info from parents.
|
||||
rpc SyncHost(SyncHostRequest) returns (stream common.v2.Host);
|
||||
|
||||
// ExchangeIBVerbsQueuePairEndpoint exchanges queue pair endpoint of IBVerbs with remote peer.
|
||||
rpc ExchangeIBVerbsQueuePairEndpoint(ExchangeIBVerbsQueuePairEndpointRequest) returns(ExchangeIBVerbsQueuePairEndpointResponse);
|
||||
}
|
||||
|
||||
// DfdaemonDownload represents download service of dfdaemon.
|
||||
service DfdaemonDownload{
|
||||
service DfdaemonDownload {
|
||||
// DownloadTask downloads task from p2p network.
|
||||
rpc DownloadTask(DownloadTaskRequest) returns(stream DownloadTaskResponse);
|
||||
|
||||
|
@ -230,7 +341,4 @@ service DfdaemonDownload{
|
|||
|
||||
// StatPersistentCacheTask stats persistent cache task information.
|
||||
rpc StatPersistentCacheTask(StatPersistentCacheTaskRequest) returns(common.v2.PersistentCacheTask);
|
||||
|
||||
// DeletePersistentCacheTask deletes persistent cache task from p2p network.
|
||||
rpc DeletePersistentCacheTask(DeletePersistentCacheTaskRequest) returns(google.protobuf.Empty);
|
||||
}
|
||||
|
|
|
@ -217,20 +217,20 @@ message DeleteHostRequest{
|
|||
|
||||
// RegisterPersistentCachePeerRequest represents persistent cache peer registered request of AnnouncePersistentCachePeerRequest.
|
||||
message RegisterPersistentCachePeerRequest {
|
||||
// Host id.
|
||||
string host_id = 1;
|
||||
// Task id.
|
||||
string task_id = 2;
|
||||
// Persistent represents whether the persistent cache task is persistent.
|
||||
// If the persistent cache task is persistent, the persistent cache peer will
|
||||
// not be deleted when dfdaemon runs garbage collection.
|
||||
bool persistent = 1;
|
||||
// Tag is used to distinguish different persistent cache tasks.
|
||||
optional string tag = 3;
|
||||
optional string tag = 2;
|
||||
// Application of task.
|
||||
optional string application = 4;
|
||||
// Task piece length.
|
||||
uint64 piece_length = 5;
|
||||
optional string application = 3;
|
||||
// Task piece length, the value needs to be greater than or equal to 4194304(4MiB).
|
||||
uint64 piece_length = 4;
|
||||
// File path to be exported.
|
||||
string output_path = 6;
|
||||
optional string output_path = 5;
|
||||
// Download timeout.
|
||||
optional google.protobuf.Duration timeout = 7;
|
||||
optional google.protobuf.Duration timeout = 6;
|
||||
}
|
||||
|
||||
// DownloadPersistentCachePeerStartedRequest represents persistent cache peer download started request of AnnouncePersistentCachePeerRequest.
|
||||
|
@ -326,20 +326,18 @@ message UploadPersistentCacheTaskStartedRequest {
|
|||
string peer_id = 3;
|
||||
// Replica count of the persistent cache task.
|
||||
uint64 persistent_replica_count = 4;
|
||||
// Digest of the task digest, for example blake3:xxx or sha256:yyy.
|
||||
string digest = 5;
|
||||
// Tag is used to distinguish different persistent cache tasks.
|
||||
optional string tag = 6;
|
||||
optional string tag = 5;
|
||||
// Application of task.
|
||||
optional string application = 7;
|
||||
// Task piece length.
|
||||
uint64 piece_length = 8;
|
||||
optional string application = 6;
|
||||
// Task piece length, the value needs to be greater than or equal to 4194304(4MiB).
|
||||
uint64 piece_length = 7;
|
||||
// Task content length.
|
||||
uint64 content_length = 9;
|
||||
uint64 content_length = 8;
|
||||
// Task piece count.
|
||||
uint32 piece_count = 10;
|
||||
uint32 piece_count = 9;
|
||||
// TTL of the persistent cache task.
|
||||
google.protobuf.Duration ttl = 11;
|
||||
google.protobuf.Duration ttl = 10;
|
||||
}
|
||||
|
||||
// UploadPersistentCacheTaskFinishedRequest represents upload persistent cache task finished request of UploadPersistentCacheTaskFinished.
|
||||
|
@ -381,7 +379,7 @@ message DeletePersistentCacheTaskRequest {
|
|||
}
|
||||
|
||||
// Scheduler RPC Service.
|
||||
service Scheduler{
|
||||
service Scheduler {
|
||||
// AnnouncePeer announces peer to scheduler.
|
||||
rpc AnnouncePeer(stream AnnouncePeerRequest) returns(stream AnnouncePeerResponse);
|
||||
|
||||
|
|
|
@ -107,35 +107,32 @@ pub struct Task {
|
|||
::prost::alloc::string::String,
|
||||
::prost::alloc::string::String,
|
||||
>,
|
||||
/// Task piece length.
|
||||
#[prost(uint64, tag = "9")]
|
||||
pub piece_length: u64,
|
||||
/// Task content length.
|
||||
#[prost(uint64, tag = "10")]
|
||||
#[prost(uint64, tag = "9")]
|
||||
pub content_length: u64,
|
||||
/// Task piece count.
|
||||
#[prost(uint32, tag = "11")]
|
||||
#[prost(uint32, tag = "10")]
|
||||
pub piece_count: u32,
|
||||
/// Task size scope.
|
||||
#[prost(enumeration = "SizeScope", tag = "12")]
|
||||
#[prost(enumeration = "SizeScope", tag = "11")]
|
||||
pub size_scope: i32,
|
||||
/// Pieces of task.
|
||||
#[prost(message, repeated, tag = "13")]
|
||||
#[prost(message, repeated, tag = "12")]
|
||||
pub pieces: ::prost::alloc::vec::Vec<Piece>,
|
||||
/// Task state.
|
||||
#[prost(string, tag = "14")]
|
||||
#[prost(string, tag = "13")]
|
||||
pub state: ::prost::alloc::string::String,
|
||||
/// Task peer count.
|
||||
#[prost(uint32, tag = "15")]
|
||||
#[prost(uint32, tag = "14")]
|
||||
pub peer_count: u32,
|
||||
/// Task contains available peer.
|
||||
#[prost(bool, tag = "16")]
|
||||
#[prost(bool, tag = "15")]
|
||||
pub has_available_peer: bool,
|
||||
/// Task create time.
|
||||
#[prost(message, optional, tag = "17")]
|
||||
#[prost(message, optional, tag = "16")]
|
||||
pub created_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
|
||||
/// Task update time.
|
||||
#[prost(message, optional, tag = "18")]
|
||||
#[prost(message, optional, tag = "17")]
|
||||
pub updated_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
|
||||
}
|
||||
/// PersistentCacheTask metadata.
|
||||
|
@ -160,35 +157,32 @@ pub struct PersistentCacheTask {
|
|||
/// the persistent cache task will be deleted when dfdaemon runs garbage collection.
|
||||
#[prost(uint64, tag = "4")]
|
||||
pub current_replica_count: u64,
|
||||
/// Digest of the task digest, for example blake3:xxx or sha256:yyy.
|
||||
#[prost(string, tag = "5")]
|
||||
pub digest: ::prost::alloc::string::String,
|
||||
/// Tag is used to distinguish different persistent cache tasks.
|
||||
#[prost(string, optional, tag = "6")]
|
||||
#[prost(string, optional, tag = "5")]
|
||||
pub tag: ::core::option::Option<::prost::alloc::string::String>,
|
||||
/// Application of task.
|
||||
#[prost(string, optional, tag = "7")]
|
||||
#[prost(string, optional, tag = "6")]
|
||||
pub application: ::core::option::Option<::prost::alloc::string::String>,
|
||||
/// Task piece length.
|
||||
#[prost(uint64, tag = "8")]
|
||||
#[prost(uint64, tag = "7")]
|
||||
pub piece_length: u64,
|
||||
/// Task content length.
|
||||
#[prost(uint64, tag = "9")]
|
||||
#[prost(uint64, tag = "8")]
|
||||
pub content_length: u64,
|
||||
/// Task piece count.
|
||||
#[prost(uint32, tag = "10")]
|
||||
#[prost(uint32, tag = "9")]
|
||||
pub piece_count: u32,
|
||||
/// Task state.
|
||||
#[prost(string, tag = "11")]
|
||||
#[prost(string, tag = "10")]
|
||||
pub state: ::prost::alloc::string::String,
|
||||
/// TTL of the persistent cache task.
|
||||
#[prost(message, optional, tag = "12")]
|
||||
#[prost(message, optional, tag = "11")]
|
||||
pub ttl: ::core::option::Option<::prost_wkt_types::Duration>,
|
||||
/// Task create time.
|
||||
#[prost(message, optional, tag = "13")]
|
||||
#[prost(message, optional, tag = "12")]
|
||||
pub created_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
|
||||
/// Task update time.
|
||||
#[prost(message, optional, tag = "14")]
|
||||
#[prost(message, optional, tag = "13")]
|
||||
pub updated_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
|
||||
}
|
||||
/// Host metadata.
|
||||
|
@ -464,33 +458,55 @@ pub struct Download {
|
|||
/// Task piece length.
|
||||
#[prost(uint64, optional, tag = "10")]
|
||||
pub piece_length: ::core::option::Option<u64>,
|
||||
/// File path to be exported.
|
||||
/// File path to be downloaded. If output_path is set, the downloaded file will be saved to the specified path.
|
||||
/// Dfdaemon will try to create hard link to the output path before starting the download. If hard link creation fails,
|
||||
/// it will copy the file to the output path after the download is completed.
|
||||
/// For more details refer to <https://github.com/dragonflyoss/design/blob/main/systems-analysis/file-download-workflow-with-hard-link/README.md.>
|
||||
#[prost(string, optional, tag = "11")]
|
||||
pub output_path: ::core::option::Option<::prost::alloc::string::String>,
|
||||
/// Download timeout.
|
||||
#[prost(message, optional, tag = "12")]
|
||||
pub timeout: ::core::option::Option<::prost_wkt_types::Duration>,
|
||||
/// Dfdaemon will disable download back-to-source by itself, if disable_back_to_source is true.
|
||||
/// Dfdaemon cannot download the task from the source if disable_back_to_source is true.
|
||||
#[prost(bool, tag = "13")]
|
||||
pub disable_back_to_source: bool,
|
||||
/// Scheduler will triggers peer to download back-to-source, if need_back_to_source is true.
|
||||
/// Scheduler needs to schedule the task downloads from the source if need_back_to_source is true.
|
||||
#[prost(bool, tag = "14")]
|
||||
pub need_back_to_source: bool,
|
||||
/// certificate_chain is the client certs with DER format for the backend client to download back-to-source.
|
||||
#[prost(bytes = "vec", repeated, tag = "15")]
|
||||
pub certificate_chain: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
|
||||
/// Prefetch pre-downloads all pieces of the task when download task with range request.
|
||||
/// Prefetch pre-downloads all pieces of the task when the download task request is a range request.
|
||||
#[prost(bool, tag = "16")]
|
||||
pub prefetch: bool,
|
||||
/// Object Storage related information.
|
||||
/// Object storage protocol information.
|
||||
#[prost(message, optional, tag = "17")]
|
||||
pub object_storage: ::core::option::Option<ObjectStorage>,
|
||||
/// HDFS related information.
|
||||
/// HDFS protocol information.
|
||||
#[prost(message, optional, tag = "18")]
|
||||
pub hdfs: ::core::option::Option<Hdfs>,
|
||||
/// is_prefetch is the flag to indicate whether the request is a prefetch request.
|
||||
#[prost(bool, tag = "19")]
|
||||
pub is_prefetch: bool,
|
||||
/// need_piece_content is the flag to indicate whether the response needs to return piece content.
|
||||
#[prost(bool, tag = "20")]
|
||||
pub need_piece_content: bool,
|
||||
/// load_to_cache indicates whether the content downloaded will be stored in the cache storage.
|
||||
/// Cache storage is designed to store downloaded piece content from preheat tasks,
|
||||
/// allowing other peers to access the content from memory instead of disk.
|
||||
#[prost(bool, tag = "21")]
|
||||
pub load_to_cache: bool,
|
||||
/// force_hard_link is the flag to indicate whether the download file must be hard linked to the output path.
|
||||
/// For more details refer to <https://github.com/dragonflyoss/design/blob/main/systems-analysis/file-download-workflow-with-hard-link/README.md.>
|
||||
#[prost(bool, tag = "22")]
|
||||
pub force_hard_link: bool,
|
||||
/// content_for_calculating_task_id is the content used to calculate the task id.
|
||||
/// If content_for_calculating_task_id is set, use its value to calculate the task ID.
|
||||
/// Otherwise, calculate the task ID based on url, piece_length, tag, application, and filtered_query_params.
|
||||
#[prost(string, optional, tag = "23")]
|
||||
pub content_for_calculating_task_id: ::core::option::Option<
|
||||
::prost::alloc::string::String,
|
||||
>,
|
||||
}
|
||||
/// Object Storage related information.
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
|
|
Binary file not shown.
|
@ -122,6 +122,9 @@ pub struct DownloadPieceResponse {
|
|||
/// Piece information.
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub piece: ::core::option::Option<super::super::common::v2::Piece>,
|
||||
/// Piece metadata digest, it is used to verify the integrity of the piece metadata.
|
||||
#[prost(string, optional, tag = "2")]
|
||||
pub digest: ::core::option::Option<::prost::alloc::string::String>,
|
||||
}
|
||||
/// StatTaskRequest represents request of StatTask.
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
|
@ -160,12 +163,22 @@ pub struct DownloadPersistentCacheTaskRequest {
|
|||
/// Application of task.
|
||||
#[prost(string, optional, tag = "4")]
|
||||
pub application: ::core::option::Option<::prost::alloc::string::String>,
|
||||
/// File path to be exported.
|
||||
#[prost(string, tag = "5")]
|
||||
pub output_path: ::prost::alloc::string::String,
|
||||
/// File path to be exported. If output_path is set, the exported file will be saved to the specified path.
|
||||
/// Dfdaemon will try to create hard link to the output path before starting the export. If hard link creation fails,
|
||||
/// it will copy the file to the output path after the export is completed.
|
||||
/// For more details refer to <https://github.com/dragonflyoss/design/blob/main/systems-analysis/file-download-workflow-with-hard-link/README.md.>
|
||||
#[prost(string, optional, tag = "5")]
|
||||
pub output_path: ::core::option::Option<::prost::alloc::string::String>,
|
||||
/// Download timeout.
|
||||
#[prost(message, optional, tag = "6")]
|
||||
pub timeout: ::core::option::Option<::prost_wkt_types::Duration>,
|
||||
/// need_piece_content is the flag to indicate whether the response needs to return piece content.
|
||||
#[prost(bool, tag = "7")]
|
||||
pub need_piece_content: bool,
|
||||
/// force_hard_link is the flag to indicate whether the exported file must be hard linked to the output path.
|
||||
/// For more details refer to <https://github.com/dragonflyoss/design/blob/main/systems-analysis/file-download-workflow-with-hard-link/README.md.>
|
||||
#[prost(bool, tag = "8")]
|
||||
pub force_hard_link: bool,
|
||||
}
|
||||
/// DownloadPersistentCacheTaskStartedResponse represents task download started response of DownloadPersistentCacheTaskResponse.
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
|
@ -214,25 +227,50 @@ pub mod download_persistent_cache_task_response {
|
|||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct UploadPersistentCacheTaskRequest {
|
||||
/// content_for_calculating_task_id is the content used to calculate the task id.
|
||||
/// If content_for_calculating_task_id is set, use its value to calculate the task ID.
|
||||
/// Otherwise, calculate the task ID based on the file content, tag and application by crc32 algorithm`.
|
||||
#[prost(string, optional, tag = "1")]
|
||||
pub content_for_calculating_task_id: ::core::option::Option<
|
||||
::prost::alloc::string::String,
|
||||
>,
|
||||
/// Upload file path of persistent cache task.
|
||||
#[prost(string, tag = "1")]
|
||||
#[prost(string, tag = "2")]
|
||||
pub path: ::prost::alloc::string::String,
|
||||
/// Replica count of the persistent persistent cache task.
|
||||
#[prost(uint64, tag = "2")]
|
||||
#[prost(uint64, tag = "3")]
|
||||
pub persistent_replica_count: u64,
|
||||
/// Tag is used to distinguish different persistent cache tasks.
|
||||
#[prost(string, optional, tag = "3")]
|
||||
pub tag: ::core::option::Option<::prost::alloc::string::String>,
|
||||
/// Application of task.
|
||||
#[prost(string, optional, tag = "4")]
|
||||
pub tag: ::core::option::Option<::prost::alloc::string::String>,
|
||||
/// Application of the persistent cache task.
|
||||
#[prost(string, optional, tag = "5")]
|
||||
pub application: ::core::option::Option<::prost::alloc::string::String>,
|
||||
/// Piece length of the persistent cache task, the value needs to be greater than or equal to 4194304(4MiB).
|
||||
#[prost(uint64, optional, tag = "6")]
|
||||
pub piece_length: ::core::option::Option<u64>,
|
||||
/// TTL of the persistent cache task.
|
||||
#[prost(message, optional, tag = "5")]
|
||||
#[prost(message, optional, tag = "7")]
|
||||
pub ttl: ::core::option::Option<::prost_wkt_types::Duration>,
|
||||
/// Upload timeout.
|
||||
#[prost(message, optional, tag = "6")]
|
||||
/// Download timeout.
|
||||
#[prost(message, optional, tag = "8")]
|
||||
pub timeout: ::core::option::Option<::prost_wkt_types::Duration>,
|
||||
}
|
||||
/// UpdatePersistentCacheTaskRequest represents request of UpdatePersistentCacheTask.
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct UpdatePersistentCacheTaskRequest {
|
||||
/// Task id.
|
||||
#[prost(string, tag = "1")]
|
||||
pub task_id: ::prost::alloc::string::String,
|
||||
/// Persistent represents whether the persistent cache peer is persistent.
|
||||
/// If the persistent cache peer is persistent, the persistent cache peer will
|
||||
/// not be deleted when dfdaemon runs garbage collection. It only be deleted
|
||||
/// when the task is deleted by the user.
|
||||
#[prost(bool, tag = "2")]
|
||||
pub persistent: bool,
|
||||
}
|
||||
/// StatPersistentCacheTaskRequest represents request of StatPersistentCacheTask.
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
|
@ -251,6 +289,108 @@ pub struct DeletePersistentCacheTaskRequest {
|
|||
#[prost(string, tag = "1")]
|
||||
pub task_id: ::prost::alloc::string::String,
|
||||
}
|
||||
/// SyncPersistentCachePiecesRequest represents request of SyncPersistentCachePieces.
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct SyncPersistentCachePiecesRequest {
|
||||
/// Host id.
|
||||
#[prost(string, tag = "1")]
|
||||
pub host_id: ::prost::alloc::string::String,
|
||||
/// Task id.
|
||||
#[prost(string, tag = "2")]
|
||||
pub task_id: ::prost::alloc::string::String,
|
||||
/// Interested piece numbers.
|
||||
#[prost(uint32, repeated, tag = "3")]
|
||||
pub interested_piece_numbers: ::prost::alloc::vec::Vec<u32>,
|
||||
}
|
||||
/// SyncPersistentCachePiecesResponse represents response of SyncPersistentCachePieces.
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
|
||||
pub struct SyncPersistentCachePiecesResponse {
|
||||
/// Exist piece number.
|
||||
#[prost(uint32, tag = "1")]
|
||||
pub number: u32,
|
||||
/// Piece offset.
|
||||
#[prost(uint64, tag = "2")]
|
||||
pub offset: u64,
|
||||
/// Piece length.
|
||||
#[prost(uint64, tag = "3")]
|
||||
pub length: u64,
|
||||
}
|
||||
/// DownloadPersistentCachePieceRequest represents request of DownloadPersistentCachePiece.
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct DownloadPersistentCachePieceRequest {
|
||||
/// Host id.
|
||||
#[prost(string, tag = "1")]
|
||||
pub host_id: ::prost::alloc::string::String,
|
||||
/// Task id.
|
||||
#[prost(string, tag = "2")]
|
||||
pub task_id: ::prost::alloc::string::String,
|
||||
/// Piece number.
|
||||
#[prost(uint32, tag = "3")]
|
||||
pub piece_number: u32,
|
||||
}
|
||||
/// DownloadPersistentCachePieceResponse represents response of DownloadPersistentCachePieces.
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct DownloadPersistentCachePieceResponse {
|
||||
/// Piece information.
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub piece: ::core::option::Option<super::super::common::v2::Piece>,
|
||||
/// Piece metadata digest, it is used to verify the integrity of the piece metadata.
|
||||
#[prost(string, optional, tag = "2")]
|
||||
pub digest: ::core::option::Option<::prost::alloc::string::String>,
|
||||
}
|
||||
/// SyncHostRequest represents request of SyncHost.
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct SyncHostRequest {
|
||||
/// Host id.
|
||||
#[prost(string, tag = "1")]
|
||||
pub host_id: ::prost::alloc::string::String,
|
||||
/// Peer id.
|
||||
#[prost(string, tag = "2")]
|
||||
pub peer_id: ::prost::alloc::string::String,
|
||||
}
|
||||
/// IBVerbsQueuePairEndpoint represents queue pair endpoint of IBVerbs.
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct IbVerbsQueuePairEndpoint {
|
||||
/// Number of the queue pair.
|
||||
#[prost(uint32, tag = "1")]
|
||||
pub num: u32,
|
||||
/// Local identifier of the context.
|
||||
#[prost(uint32, tag = "2")]
|
||||
pub lid: u32,
|
||||
/// Global identifier of the context.
|
||||
#[prost(bytes = "vec", tag = "3")]
|
||||
pub gid: ::prost::alloc::vec::Vec<u8>,
|
||||
}
|
||||
/// ExchangeIBVerbsQueuePairEndpointRequest represents request of ExchangeIBVerbsQueuePairEndpoint.
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct ExchangeIbVerbsQueuePairEndpointRequest {
|
||||
/// Information of the source's queue pair endpoint of IBVerbs.
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub endpoint: ::core::option::Option<IbVerbsQueuePairEndpoint>,
|
||||
}
|
||||
/// ExchangeIBVerbsQueuePairEndpointResponse represents response of ExchangeIBVerbsQueuePairEndpoint.
|
||||
#[derive(serde::Serialize, serde::Deserialize)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct ExchangeIbVerbsQueuePairEndpointResponse {
|
||||
/// Information of the destination's queue pair endpoint of IBVerbs.
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub endpoint: ::core::option::Option<IbVerbsQueuePairEndpoint>,
|
||||
}
|
||||
/// Generated client implementations.
|
||||
pub mod dfdaemon_upload_client {
|
||||
#![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)]
|
||||
|
@ -497,6 +637,34 @@ pub mod dfdaemon_upload_client {
|
|||
);
|
||||
self.inner.server_streaming(req, path, codec).await
|
||||
}
|
||||
/// UpdatePersistentCacheTask updates metadate of thr persistent cache task in p2p network.
|
||||
pub async fn update_persistent_cache_task(
|
||||
&mut self,
|
||||
request: impl tonic::IntoRequest<super::UpdatePersistentCacheTaskRequest>,
|
||||
) -> std::result::Result<tonic::Response<()>, tonic::Status> {
|
||||
self.inner
|
||||
.ready()
|
||||
.await
|
||||
.map_err(|e| {
|
||||
tonic::Status::new(
|
||||
tonic::Code::Unknown,
|
||||
format!("Service was not ready: {}", e.into()),
|
||||
)
|
||||
})?;
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let path = http::uri::PathAndQuery::from_static(
|
||||
"/dfdaemon.v2.DfdaemonUpload/UpdatePersistentCacheTask",
|
||||
);
|
||||
let mut req = request.into_request();
|
||||
req.extensions_mut()
|
||||
.insert(
|
||||
GrpcMethod::new(
|
||||
"dfdaemon.v2.DfdaemonUpload",
|
||||
"UpdatePersistentCacheTask",
|
||||
),
|
||||
);
|
||||
self.inner.unary(req, path, codec).await
|
||||
}
|
||||
/// StatPersistentCacheTask stats persistent cache task information.
|
||||
pub async fn stat_persistent_cache_task(
|
||||
&mut self,
|
||||
|
@ -556,6 +724,131 @@ pub mod dfdaemon_upload_client {
|
|||
);
|
||||
self.inner.unary(req, path, codec).await
|
||||
}
|
||||
/// SyncPersistentCachePieces syncs persistent cache pieces from remote peer.
|
||||
pub async fn sync_persistent_cache_pieces(
|
||||
&mut self,
|
||||
request: impl tonic::IntoRequest<super::SyncPersistentCachePiecesRequest>,
|
||||
) -> std::result::Result<
|
||||
tonic::Response<
|
||||
tonic::codec::Streaming<super::SyncPersistentCachePiecesResponse>,
|
||||
>,
|
||||
tonic::Status,
|
||||
> {
|
||||
self.inner
|
||||
.ready()
|
||||
.await
|
||||
.map_err(|e| {
|
||||
tonic::Status::new(
|
||||
tonic::Code::Unknown,
|
||||
format!("Service was not ready: {}", e.into()),
|
||||
)
|
||||
})?;
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let path = http::uri::PathAndQuery::from_static(
|
||||
"/dfdaemon.v2.DfdaemonUpload/SyncPersistentCachePieces",
|
||||
);
|
||||
let mut req = request.into_request();
|
||||
req.extensions_mut()
|
||||
.insert(
|
||||
GrpcMethod::new(
|
||||
"dfdaemon.v2.DfdaemonUpload",
|
||||
"SyncPersistentCachePieces",
|
||||
),
|
||||
);
|
||||
self.inner.server_streaming(req, path, codec).await
|
||||
}
|
||||
/// DownloadPersistentCachePiece downloads persistent cache piece from p2p network.
|
||||
pub async fn download_persistent_cache_piece(
|
||||
&mut self,
|
||||
request: impl tonic::IntoRequest<super::DownloadPersistentCachePieceRequest>,
|
||||
) -> std::result::Result<
|
||||
tonic::Response<super::DownloadPersistentCachePieceResponse>,
|
||||
tonic::Status,
|
||||
> {
|
||||
self.inner
|
||||
.ready()
|
||||
.await
|
||||
.map_err(|e| {
|
||||
tonic::Status::new(
|
||||
tonic::Code::Unknown,
|
||||
format!("Service was not ready: {}", e.into()),
|
||||
)
|
||||
})?;
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let path = http::uri::PathAndQuery::from_static(
|
||||
"/dfdaemon.v2.DfdaemonUpload/DownloadPersistentCachePiece",
|
||||
);
|
||||
let mut req = request.into_request();
|
||||
req.extensions_mut()
|
||||
.insert(
|
||||
GrpcMethod::new(
|
||||
"dfdaemon.v2.DfdaemonUpload",
|
||||
"DownloadPersistentCachePiece",
|
||||
),
|
||||
);
|
||||
self.inner.unary(req, path, codec).await
|
||||
}
|
||||
/// SyncHost sync host info from parents.
|
||||
pub async fn sync_host(
|
||||
&mut self,
|
||||
request: impl tonic::IntoRequest<super::SyncHostRequest>,
|
||||
) -> std::result::Result<
|
||||
tonic::Response<
|
||||
tonic::codec::Streaming<super::super::super::common::v2::Host>,
|
||||
>,
|
||||
tonic::Status,
|
||||
> {
|
||||
self.inner
|
||||
.ready()
|
||||
.await
|
||||
.map_err(|e| {
|
||||
tonic::Status::new(
|
||||
tonic::Code::Unknown,
|
||||
format!("Service was not ready: {}", e.into()),
|
||||
)
|
||||
})?;
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let path = http::uri::PathAndQuery::from_static(
|
||||
"/dfdaemon.v2.DfdaemonUpload/SyncHost",
|
||||
);
|
||||
let mut req = request.into_request();
|
||||
req.extensions_mut()
|
||||
.insert(GrpcMethod::new("dfdaemon.v2.DfdaemonUpload", "SyncHost"));
|
||||
self.inner.server_streaming(req, path, codec).await
|
||||
}
|
||||
/// ExchangeIBVerbsQueuePairEndpoint exchanges queue pair endpoint of IBVerbs with remote peer.
|
||||
pub async fn exchange_ib_verbs_queue_pair_endpoint(
|
||||
&mut self,
|
||||
request: impl tonic::IntoRequest<
|
||||
super::ExchangeIbVerbsQueuePairEndpointRequest,
|
||||
>,
|
||||
) -> std::result::Result<
|
||||
tonic::Response<super::ExchangeIbVerbsQueuePairEndpointResponse>,
|
||||
tonic::Status,
|
||||
> {
|
||||
self.inner
|
||||
.ready()
|
||||
.await
|
||||
.map_err(|e| {
|
||||
tonic::Status::new(
|
||||
tonic::Code::Unknown,
|
||||
format!("Service was not ready: {}", e.into()),
|
||||
)
|
||||
})?;
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let path = http::uri::PathAndQuery::from_static(
|
||||
"/dfdaemon.v2.DfdaemonUpload/ExchangeIBVerbsQueuePairEndpoint",
|
||||
);
|
||||
let mut req = request.into_request();
|
||||
req.extensions_mut()
|
||||
.insert(
|
||||
GrpcMethod::new(
|
||||
"dfdaemon.v2.DfdaemonUpload",
|
||||
"ExchangeIBVerbsQueuePairEndpoint",
|
||||
),
|
||||
);
|
||||
self.inner.unary(req, path, codec).await
|
||||
}
|
||||
}
|
||||
}
|
||||
/// Generated client implementations.
|
||||
|
@ -837,34 +1130,6 @@ pub mod dfdaemon_download_client {
|
|||
);
|
||||
self.inner.unary(req, path, codec).await
|
||||
}
|
||||
/// DeletePersistentCacheTask deletes persistent cache task from p2p network.
|
||||
pub async fn delete_persistent_cache_task(
|
||||
&mut self,
|
||||
request: impl tonic::IntoRequest<super::DeletePersistentCacheTaskRequest>,
|
||||
) -> std::result::Result<tonic::Response<()>, tonic::Status> {
|
||||
self.inner
|
||||
.ready()
|
||||
.await
|
||||
.map_err(|e| {
|
||||
tonic::Status::new(
|
||||
tonic::Code::Unknown,
|
||||
format!("Service was not ready: {}", e.into()),
|
||||
)
|
||||
})?;
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let path = http::uri::PathAndQuery::from_static(
|
||||
"/dfdaemon.v2.DfdaemonDownload/DeletePersistentCacheTask",
|
||||
);
|
||||
let mut req = request.into_request();
|
||||
req.extensions_mut()
|
||||
.insert(
|
||||
GrpcMethod::new(
|
||||
"dfdaemon.v2.DfdaemonDownload",
|
||||
"DeletePersistentCacheTask",
|
||||
),
|
||||
);
|
||||
self.inner.unary(req, path, codec).await
|
||||
}
|
||||
}
|
||||
}
|
||||
/// Generated server implementations.
|
||||
|
@ -937,6 +1202,11 @@ pub mod dfdaemon_upload_server {
|
|||
tonic::Response<Self::DownloadPersistentCacheTaskStream>,
|
||||
tonic::Status,
|
||||
>;
|
||||
/// UpdatePersistentCacheTask updates metadate of thr persistent cache task in p2p network.
|
||||
async fn update_persistent_cache_task(
|
||||
&self,
|
||||
request: tonic::Request<super::UpdatePersistentCacheTaskRequest>,
|
||||
) -> std::result::Result<tonic::Response<()>, tonic::Status>;
|
||||
/// StatPersistentCacheTask stats persistent cache task information.
|
||||
async fn stat_persistent_cache_task(
|
||||
&self,
|
||||
|
@ -950,6 +1220,53 @@ pub mod dfdaemon_upload_server {
|
|||
&self,
|
||||
request: tonic::Request<super::DeletePersistentCacheTaskRequest>,
|
||||
) -> std::result::Result<tonic::Response<()>, tonic::Status>;
|
||||
/// Server streaming response type for the SyncPersistentCachePieces method.
|
||||
type SyncPersistentCachePiecesStream: tonic::codegen::tokio_stream::Stream<
|
||||
Item = std::result::Result<
|
||||
super::SyncPersistentCachePiecesResponse,
|
||||
tonic::Status,
|
||||
>,
|
||||
>
|
||||
+ std::marker::Send
|
||||
+ 'static;
|
||||
/// SyncPersistentCachePieces syncs persistent cache pieces from remote peer.
|
||||
async fn sync_persistent_cache_pieces(
|
||||
&self,
|
||||
request: tonic::Request<super::SyncPersistentCachePiecesRequest>,
|
||||
) -> std::result::Result<
|
||||
tonic::Response<Self::SyncPersistentCachePiecesStream>,
|
||||
tonic::Status,
|
||||
>;
|
||||
/// DownloadPersistentCachePiece downloads persistent cache piece from p2p network.
|
||||
async fn download_persistent_cache_piece(
|
||||
&self,
|
||||
request: tonic::Request<super::DownloadPersistentCachePieceRequest>,
|
||||
) -> std::result::Result<
|
||||
tonic::Response<super::DownloadPersistentCachePieceResponse>,
|
||||
tonic::Status,
|
||||
>;
|
||||
/// Server streaming response type for the SyncHost method.
|
||||
type SyncHostStream: tonic::codegen::tokio_stream::Stream<
|
||||
Item = std::result::Result<
|
||||
super::super::super::common::v2::Host,
|
||||
tonic::Status,
|
||||
>,
|
||||
>
|
||||
+ std::marker::Send
|
||||
+ 'static;
|
||||
/// SyncHost sync host info from parents.
|
||||
async fn sync_host(
|
||||
&self,
|
||||
request: tonic::Request<super::SyncHostRequest>,
|
||||
) -> std::result::Result<tonic::Response<Self::SyncHostStream>, tonic::Status>;
|
||||
/// ExchangeIBVerbsQueuePairEndpoint exchanges queue pair endpoint of IBVerbs with remote peer.
|
||||
async fn exchange_ib_verbs_queue_pair_endpoint(
|
||||
&self,
|
||||
request: tonic::Request<super::ExchangeIbVerbsQueuePairEndpointRequest>,
|
||||
) -> std::result::Result<
|
||||
tonic::Response<super::ExchangeIbVerbsQueuePairEndpointResponse>,
|
||||
tonic::Status,
|
||||
>;
|
||||
}
|
||||
/// DfdaemonUpload represents upload service of dfdaemon.
|
||||
#[derive(Debug)]
|
||||
|
@ -1308,6 +1625,58 @@ pub mod dfdaemon_upload_server {
|
|||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
"/dfdaemon.v2.DfdaemonUpload/UpdatePersistentCacheTask" => {
|
||||
#[allow(non_camel_case_types)]
|
||||
struct UpdatePersistentCacheTaskSvc<T: DfdaemonUpload>(pub Arc<T>);
|
||||
impl<
|
||||
T: DfdaemonUpload,
|
||||
> tonic::server::UnaryService<
|
||||
super::UpdatePersistentCacheTaskRequest,
|
||||
> for UpdatePersistentCacheTaskSvc<T> {
|
||||
type Response = ();
|
||||
type Future = BoxFuture<
|
||||
tonic::Response<Self::Response>,
|
||||
tonic::Status,
|
||||
>;
|
||||
fn call(
|
||||
&mut self,
|
||||
request: tonic::Request<
|
||||
super::UpdatePersistentCacheTaskRequest,
|
||||
>,
|
||||
) -> Self::Future {
|
||||
let inner = Arc::clone(&self.0);
|
||||
let fut = async move {
|
||||
<T as DfdaemonUpload>::update_persistent_cache_task(
|
||||
&inner,
|
||||
request,
|
||||
)
|
||||
.await
|
||||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
}
|
||||
let accept_compression_encodings = self.accept_compression_encodings;
|
||||
let send_compression_encodings = self.send_compression_encodings;
|
||||
let max_decoding_message_size = self.max_decoding_message_size;
|
||||
let max_encoding_message_size = self.max_encoding_message_size;
|
||||
let inner = self.inner.clone();
|
||||
let fut = async move {
|
||||
let method = UpdatePersistentCacheTaskSvc(inner);
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let mut grpc = tonic::server::Grpc::new(codec)
|
||||
.apply_compression_config(
|
||||
accept_compression_encodings,
|
||||
send_compression_encodings,
|
||||
)
|
||||
.apply_max_message_size_config(
|
||||
max_decoding_message_size,
|
||||
max_encoding_message_size,
|
||||
);
|
||||
let res = grpc.unary(method, req).await;
|
||||
Ok(res)
|
||||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
"/dfdaemon.v2.DfdaemonUpload/StatPersistentCacheTask" => {
|
||||
#[allow(non_camel_case_types)]
|
||||
struct StatPersistentCacheTaskSvc<T: DfdaemonUpload>(pub Arc<T>);
|
||||
|
@ -1411,6 +1780,213 @@ pub mod dfdaemon_upload_server {
|
|||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
"/dfdaemon.v2.DfdaemonUpload/SyncPersistentCachePieces" => {
|
||||
#[allow(non_camel_case_types)]
|
||||
struct SyncPersistentCachePiecesSvc<T: DfdaemonUpload>(pub Arc<T>);
|
||||
impl<
|
||||
T: DfdaemonUpload,
|
||||
> tonic::server::ServerStreamingService<
|
||||
super::SyncPersistentCachePiecesRequest,
|
||||
> for SyncPersistentCachePiecesSvc<T> {
|
||||
type Response = super::SyncPersistentCachePiecesResponse;
|
||||
type ResponseStream = T::SyncPersistentCachePiecesStream;
|
||||
type Future = BoxFuture<
|
||||
tonic::Response<Self::ResponseStream>,
|
||||
tonic::Status,
|
||||
>;
|
||||
fn call(
|
||||
&mut self,
|
||||
request: tonic::Request<
|
||||
super::SyncPersistentCachePiecesRequest,
|
||||
>,
|
||||
) -> Self::Future {
|
||||
let inner = Arc::clone(&self.0);
|
||||
let fut = async move {
|
||||
<T as DfdaemonUpload>::sync_persistent_cache_pieces(
|
||||
&inner,
|
||||
request,
|
||||
)
|
||||
.await
|
||||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
}
|
||||
let accept_compression_encodings = self.accept_compression_encodings;
|
||||
let send_compression_encodings = self.send_compression_encodings;
|
||||
let max_decoding_message_size = self.max_decoding_message_size;
|
||||
let max_encoding_message_size = self.max_encoding_message_size;
|
||||
let inner = self.inner.clone();
|
||||
let fut = async move {
|
||||
let method = SyncPersistentCachePiecesSvc(inner);
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let mut grpc = tonic::server::Grpc::new(codec)
|
||||
.apply_compression_config(
|
||||
accept_compression_encodings,
|
||||
send_compression_encodings,
|
||||
)
|
||||
.apply_max_message_size_config(
|
||||
max_decoding_message_size,
|
||||
max_encoding_message_size,
|
||||
);
|
||||
let res = grpc.server_streaming(method, req).await;
|
||||
Ok(res)
|
||||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
"/dfdaemon.v2.DfdaemonUpload/DownloadPersistentCachePiece" => {
|
||||
#[allow(non_camel_case_types)]
|
||||
struct DownloadPersistentCachePieceSvc<T: DfdaemonUpload>(
|
||||
pub Arc<T>,
|
||||
);
|
||||
impl<
|
||||
T: DfdaemonUpload,
|
||||
> tonic::server::UnaryService<
|
||||
super::DownloadPersistentCachePieceRequest,
|
||||
> for DownloadPersistentCachePieceSvc<T> {
|
||||
type Response = super::DownloadPersistentCachePieceResponse;
|
||||
type Future = BoxFuture<
|
||||
tonic::Response<Self::Response>,
|
||||
tonic::Status,
|
||||
>;
|
||||
fn call(
|
||||
&mut self,
|
||||
request: tonic::Request<
|
||||
super::DownloadPersistentCachePieceRequest,
|
||||
>,
|
||||
) -> Self::Future {
|
||||
let inner = Arc::clone(&self.0);
|
||||
let fut = async move {
|
||||
<T as DfdaemonUpload>::download_persistent_cache_piece(
|
||||
&inner,
|
||||
request,
|
||||
)
|
||||
.await
|
||||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
}
|
||||
let accept_compression_encodings = self.accept_compression_encodings;
|
||||
let send_compression_encodings = self.send_compression_encodings;
|
||||
let max_decoding_message_size = self.max_decoding_message_size;
|
||||
let max_encoding_message_size = self.max_encoding_message_size;
|
||||
let inner = self.inner.clone();
|
||||
let fut = async move {
|
||||
let method = DownloadPersistentCachePieceSvc(inner);
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let mut grpc = tonic::server::Grpc::new(codec)
|
||||
.apply_compression_config(
|
||||
accept_compression_encodings,
|
||||
send_compression_encodings,
|
||||
)
|
||||
.apply_max_message_size_config(
|
||||
max_decoding_message_size,
|
||||
max_encoding_message_size,
|
||||
);
|
||||
let res = grpc.unary(method, req).await;
|
||||
Ok(res)
|
||||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
"/dfdaemon.v2.DfdaemonUpload/SyncHost" => {
|
||||
#[allow(non_camel_case_types)]
|
||||
struct SyncHostSvc<T: DfdaemonUpload>(pub Arc<T>);
|
||||
impl<
|
||||
T: DfdaemonUpload,
|
||||
> tonic::server::ServerStreamingService<super::SyncHostRequest>
|
||||
for SyncHostSvc<T> {
|
||||
type Response = super::super::super::common::v2::Host;
|
||||
type ResponseStream = T::SyncHostStream;
|
||||
type Future = BoxFuture<
|
||||
tonic::Response<Self::ResponseStream>,
|
||||
tonic::Status,
|
||||
>;
|
||||
fn call(
|
||||
&mut self,
|
||||
request: tonic::Request<super::SyncHostRequest>,
|
||||
) -> Self::Future {
|
||||
let inner = Arc::clone(&self.0);
|
||||
let fut = async move {
|
||||
<T as DfdaemonUpload>::sync_host(&inner, request).await
|
||||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
}
|
||||
let accept_compression_encodings = self.accept_compression_encodings;
|
||||
let send_compression_encodings = self.send_compression_encodings;
|
||||
let max_decoding_message_size = self.max_decoding_message_size;
|
||||
let max_encoding_message_size = self.max_encoding_message_size;
|
||||
let inner = self.inner.clone();
|
||||
let fut = async move {
|
||||
let method = SyncHostSvc(inner);
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let mut grpc = tonic::server::Grpc::new(codec)
|
||||
.apply_compression_config(
|
||||
accept_compression_encodings,
|
||||
send_compression_encodings,
|
||||
)
|
||||
.apply_max_message_size_config(
|
||||
max_decoding_message_size,
|
||||
max_encoding_message_size,
|
||||
);
|
||||
let res = grpc.server_streaming(method, req).await;
|
||||
Ok(res)
|
||||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
"/dfdaemon.v2.DfdaemonUpload/ExchangeIBVerbsQueuePairEndpoint" => {
|
||||
#[allow(non_camel_case_types)]
|
||||
struct ExchangeIBVerbsQueuePairEndpointSvc<T: DfdaemonUpload>(
|
||||
pub Arc<T>,
|
||||
);
|
||||
impl<
|
||||
T: DfdaemonUpload,
|
||||
> tonic::server::UnaryService<
|
||||
super::ExchangeIbVerbsQueuePairEndpointRequest,
|
||||
> for ExchangeIBVerbsQueuePairEndpointSvc<T> {
|
||||
type Response = super::ExchangeIbVerbsQueuePairEndpointResponse;
|
||||
type Future = BoxFuture<
|
||||
tonic::Response<Self::Response>,
|
||||
tonic::Status,
|
||||
>;
|
||||
fn call(
|
||||
&mut self,
|
||||
request: tonic::Request<
|
||||
super::ExchangeIbVerbsQueuePairEndpointRequest,
|
||||
>,
|
||||
) -> Self::Future {
|
||||
let inner = Arc::clone(&self.0);
|
||||
let fut = async move {
|
||||
<T as DfdaemonUpload>::exchange_ib_verbs_queue_pair_endpoint(
|
||||
&inner,
|
||||
request,
|
||||
)
|
||||
.await
|
||||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
}
|
||||
let accept_compression_encodings = self.accept_compression_encodings;
|
||||
let send_compression_encodings = self.send_compression_encodings;
|
||||
let max_decoding_message_size = self.max_decoding_message_size;
|
||||
let max_encoding_message_size = self.max_encoding_message_size;
|
||||
let inner = self.inner.clone();
|
||||
let fut = async move {
|
||||
let method = ExchangeIBVerbsQueuePairEndpointSvc(inner);
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let mut grpc = tonic::server::Grpc::new(codec)
|
||||
.apply_compression_config(
|
||||
accept_compression_encodings,
|
||||
send_compression_encodings,
|
||||
)
|
||||
.apply_max_message_size_config(
|
||||
max_decoding_message_size,
|
||||
max_encoding_message_size,
|
||||
);
|
||||
let res = grpc.unary(method, req).await;
|
||||
Ok(res)
|
||||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
_ => {
|
||||
Box::pin(async move {
|
||||
Ok(
|
||||
|
@ -1519,11 +2095,6 @@ pub mod dfdaemon_download_server {
|
|||
tonic::Response<super::super::super::common::v2::PersistentCacheTask>,
|
||||
tonic::Status,
|
||||
>;
|
||||
/// DeletePersistentCacheTask deletes persistent cache task from p2p network.
|
||||
async fn delete_persistent_cache_task(
|
||||
&self,
|
||||
request: tonic::Request<super::DeletePersistentCacheTaskRequest>,
|
||||
) -> std::result::Result<tonic::Response<()>, tonic::Status>;
|
||||
}
|
||||
/// DfdaemonDownload represents download service of dfdaemon.
|
||||
#[derive(Debug)]
|
||||
|
@ -1937,58 +2508,6 @@ pub mod dfdaemon_download_server {
|
|||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
"/dfdaemon.v2.DfdaemonDownload/DeletePersistentCacheTask" => {
|
||||
#[allow(non_camel_case_types)]
|
||||
struct DeletePersistentCacheTaskSvc<T: DfdaemonDownload>(pub Arc<T>);
|
||||
impl<
|
||||
T: DfdaemonDownload,
|
||||
> tonic::server::UnaryService<
|
||||
super::DeletePersistentCacheTaskRequest,
|
||||
> for DeletePersistentCacheTaskSvc<T> {
|
||||
type Response = ();
|
||||
type Future = BoxFuture<
|
||||
tonic::Response<Self::Response>,
|
||||
tonic::Status,
|
||||
>;
|
||||
fn call(
|
||||
&mut self,
|
||||
request: tonic::Request<
|
||||
super::DeletePersistentCacheTaskRequest,
|
||||
>,
|
||||
) -> Self::Future {
|
||||
let inner = Arc::clone(&self.0);
|
||||
let fut = async move {
|
||||
<T as DfdaemonDownload>::delete_persistent_cache_task(
|
||||
&inner,
|
||||
request,
|
||||
)
|
||||
.await
|
||||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
}
|
||||
let accept_compression_encodings = self.accept_compression_encodings;
|
||||
let send_compression_encodings = self.send_compression_encodings;
|
||||
let max_decoding_message_size = self.max_decoding_message_size;
|
||||
let max_encoding_message_size = self.max_encoding_message_size;
|
||||
let inner = self.inner.clone();
|
||||
let fut = async move {
|
||||
let method = DeletePersistentCacheTaskSvc(inner);
|
||||
let codec = tonic::codec::ProstCodec::default();
|
||||
let mut grpc = tonic::server::Grpc::new(codec)
|
||||
.apply_compression_config(
|
||||
accept_compression_encodings,
|
||||
send_compression_encodings,
|
||||
)
|
||||
.apply_max_message_size_config(
|
||||
max_decoding_message_size,
|
||||
max_encoding_message_size,
|
||||
);
|
||||
let res = grpc.unary(method, req).await;
|
||||
Ok(res)
|
||||
};
|
||||
Box::pin(fut)
|
||||
}
|
||||
_ => {
|
||||
Box::pin(async move {
|
||||
Ok(
|
||||
|
|
|
@ -334,26 +334,25 @@ pub struct DeleteHostRequest {
|
|||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct RegisterPersistentCachePeerRequest {
|
||||
/// Host id.
|
||||
#[prost(string, tag = "1")]
|
||||
pub host_id: ::prost::alloc::string::String,
|
||||
/// Task id.
|
||||
#[prost(string, tag = "2")]
|
||||
pub task_id: ::prost::alloc::string::String,
|
||||
/// Persistent represents whether the persistent cache task is persistent.
|
||||
/// If the persistent cache task is persistent, the persistent cache peer will
|
||||
/// not be deleted when dfdaemon runs garbage collection.
|
||||
#[prost(bool, tag = "1")]
|
||||
pub persistent: bool,
|
||||
/// Tag is used to distinguish different persistent cache tasks.
|
||||
#[prost(string, optional, tag = "3")]
|
||||
#[prost(string, optional, tag = "2")]
|
||||
pub tag: ::core::option::Option<::prost::alloc::string::String>,
|
||||
/// Application of task.
|
||||
#[prost(string, optional, tag = "4")]
|
||||
#[prost(string, optional, tag = "3")]
|
||||
pub application: ::core::option::Option<::prost::alloc::string::String>,
|
||||
/// Task piece length.
|
||||
#[prost(uint64, tag = "5")]
|
||||
/// Task piece length, the value needs to be greater than or equal to 4194304(4MiB).
|
||||
#[prost(uint64, tag = "4")]
|
||||
pub piece_length: u64,
|
||||
/// File path to be exported.
|
||||
#[prost(string, tag = "6")]
|
||||
pub output_path: ::prost::alloc::string::String,
|
||||
#[prost(string, optional, tag = "5")]
|
||||
pub output_path: ::core::option::Option<::prost::alloc::string::String>,
|
||||
/// Download timeout.
|
||||
#[prost(message, optional, tag = "7")]
|
||||
#[prost(message, optional, tag = "6")]
|
||||
pub timeout: ::core::option::Option<::prost_wkt_types::Duration>,
|
||||
}
|
||||
/// DownloadPersistentCachePeerStartedRequest represents persistent cache peer download started request of AnnouncePersistentCachePeerRequest.
|
||||
|
@ -528,26 +527,23 @@ pub struct UploadPersistentCacheTaskStartedRequest {
|
|||
/// Replica count of the persistent cache task.
|
||||
#[prost(uint64, tag = "4")]
|
||||
pub persistent_replica_count: u64,
|
||||
/// Digest of the task digest, for example blake3:xxx or sha256:yyy.
|
||||
#[prost(string, tag = "5")]
|
||||
pub digest: ::prost::alloc::string::String,
|
||||
/// Tag is used to distinguish different persistent cache tasks.
|
||||
#[prost(string, optional, tag = "6")]
|
||||
#[prost(string, optional, tag = "5")]
|
||||
pub tag: ::core::option::Option<::prost::alloc::string::String>,
|
||||
/// Application of task.
|
||||
#[prost(string, optional, tag = "7")]
|
||||
#[prost(string, optional, tag = "6")]
|
||||
pub application: ::core::option::Option<::prost::alloc::string::String>,
|
||||
/// Task piece length.
|
||||
#[prost(uint64, tag = "8")]
|
||||
/// Task piece length, the value needs to be greater than or equal to 4194304(4MiB).
|
||||
#[prost(uint64, tag = "7")]
|
||||
pub piece_length: u64,
|
||||
/// Task content length.
|
||||
#[prost(uint64, tag = "9")]
|
||||
#[prost(uint64, tag = "8")]
|
||||
pub content_length: u64,
|
||||
/// Task piece count.
|
||||
#[prost(uint32, tag = "10")]
|
||||
#[prost(uint32, tag = "9")]
|
||||
pub piece_count: u32,
|
||||
/// TTL of the persistent cache task.
|
||||
#[prost(message, optional, tag = "11")]
|
||||
#[prost(message, optional, tag = "10")]
|
||||
pub ttl: ::core::option::Option<::prost_wkt_types::Duration>,
|
||||
}
|
||||
/// UploadPersistentCacheTaskFinishedRequest represents upload persistent cache task finished request of UploadPersistentCacheTaskFinished.
|
||||
|
|
Loading…
Reference in New Issue