Compare commits
No commits in common. "87772ea0a5daede1b0e1af7bd84ba29f9ebab43a" and "b4d1bf38dda5526b340925434edb941ce384f56d" have entirely different histories.
87772ea0a5
...
b4d1bf38dd
9 changed files with 12 additions and 24183 deletions
368
Cargo.lock
generated
368
Cargo.lock
generated
|
@ -2,374 +2,6 @@
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 3
|
version = 3
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "aho-corasick"
|
|
||||||
version = "1.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
|
|
||||||
dependencies = [
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "anyhow"
|
|
||||||
version = "1.0.79"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "autocfg"
|
|
||||||
version = "1.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "bitflags"
|
|
||||||
version = "1.3.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "bitflags"
|
|
||||||
version = "2.4.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cfg-if"
|
|
||||||
version = "1.0.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "either"
|
|
||||||
version = "1.9.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "errno"
|
|
||||||
version = "0.3.8"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
"windows-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "esphome-proto"
|
name = "esphome-proto"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
|
||||||
"protobuf",
|
|
||||||
"protobuf-codegen",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "fastrand"
|
|
||||||
version = "2.0.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "hashbrown"
|
|
||||||
version = "0.12.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "home"
|
|
||||||
version = "0.5.9"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
|
|
||||||
dependencies = [
|
|
||||||
"windows-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "indexmap"
|
|
||||||
version = "1.9.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
"hashbrown",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "libc"
|
|
||||||
version = "0.2.152"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "linux-raw-sys"
|
|
||||||
version = "0.4.13"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "log"
|
|
||||||
version = "0.4.20"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "memchr"
|
|
||||||
version = "2.7.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "once_cell"
|
|
||||||
version = "1.19.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "proc-macro2"
|
|
||||||
version = "1.0.76"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c"
|
|
||||||
dependencies = [
|
|
||||||
"unicode-ident",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "protobuf"
|
|
||||||
version = "3.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b65f4a8ec18723a734e5dc09c173e0abf9690432da5340285d536edcb4dac190"
|
|
||||||
dependencies = [
|
|
||||||
"once_cell",
|
|
||||||
"protobuf-support",
|
|
||||||
"thiserror",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "protobuf-codegen"
|
|
||||||
version = "3.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "6e85514a216b1c73111d9032e26cc7a5ecb1bb3d4d9539e91fb72a4395060f78"
|
|
||||||
dependencies = [
|
|
||||||
"anyhow",
|
|
||||||
"once_cell",
|
|
||||||
"protobuf",
|
|
||||||
"protobuf-parse",
|
|
||||||
"regex",
|
|
||||||
"tempfile",
|
|
||||||
"thiserror",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "protobuf-parse"
|
|
||||||
version = "3.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "77d6fbd6697c9e531873e81cec565a85e226b99a0f10e1acc079be057fe2fcba"
|
|
||||||
dependencies = [
|
|
||||||
"anyhow",
|
|
||||||
"indexmap",
|
|
||||||
"log",
|
|
||||||
"protobuf",
|
|
||||||
"protobuf-support",
|
|
||||||
"tempfile",
|
|
||||||
"thiserror",
|
|
||||||
"which",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "protobuf-support"
|
|
||||||
version = "3.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "6872f4d4f4b98303239a2b5838f5bbbb77b01ffc892d627957f37a22d7cfe69c"
|
|
||||||
dependencies = [
|
|
||||||
"thiserror",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "quote"
|
|
||||||
version = "1.0.35"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "redox_syscall"
|
|
||||||
version = "0.4.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 1.3.2",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "regex"
|
|
||||||
version = "1.10.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
|
|
||||||
dependencies = [
|
|
||||||
"aho-corasick",
|
|
||||||
"memchr",
|
|
||||||
"regex-automata",
|
|
||||||
"regex-syntax",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "regex-automata"
|
|
||||||
version = "0.4.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
|
|
||||||
dependencies = [
|
|
||||||
"aho-corasick",
|
|
||||||
"memchr",
|
|
||||||
"regex-syntax",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "regex-syntax"
|
|
||||||
version = "0.8.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rustix"
|
|
||||||
version = "0.38.30"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags 2.4.2",
|
|
||||||
"errno",
|
|
||||||
"libc",
|
|
||||||
"linux-raw-sys",
|
|
||||||
"windows-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "syn"
|
|
||||||
version = "2.0.48"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"unicode-ident",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "tempfile"
|
|
||||||
version = "3.9.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"fastrand",
|
|
||||||
"redox_syscall",
|
|
||||||
"rustix",
|
|
||||||
"windows-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "thiserror"
|
|
||||||
version = "1.0.56"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad"
|
|
||||||
dependencies = [
|
|
||||||
"thiserror-impl",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "thiserror-impl"
|
|
||||||
version = "1.0.56"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "unicode-ident"
|
|
||||||
version = "1.0.12"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "which"
|
|
||||||
version = "4.4.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
|
|
||||||
dependencies = [
|
|
||||||
"either",
|
|
||||||
"home",
|
|
||||||
"once_cell",
|
|
||||||
"rustix",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows-sys"
|
|
||||||
version = "0.52.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
|
|
||||||
dependencies = [
|
|
||||||
"windows-targets",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows-targets"
|
|
||||||
version = "0.52.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
|
|
||||||
dependencies = [
|
|
||||||
"windows_aarch64_gnullvm",
|
|
||||||
"windows_aarch64_msvc",
|
|
||||||
"windows_i686_gnu",
|
|
||||||
"windows_i686_msvc",
|
|
||||||
"windows_x86_64_gnu",
|
|
||||||
"windows_x86_64_gnullvm",
|
|
||||||
"windows_x86_64_msvc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_aarch64_gnullvm"
|
|
||||||
version = "0.52.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_aarch64_msvc"
|
|
||||||
version = "0.52.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_i686_gnu"
|
|
||||||
version = "0.52.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_i686_msvc"
|
|
||||||
version = "0.52.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_x86_64_gnu"
|
|
||||||
version = "0.52.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_x86_64_gnullvm"
|
|
||||||
version = "0.52.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "windows_x86_64_msvc"
|
|
||||||
version = "0.52.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
|
|
||||||
|
|
|
@ -6,10 +6,3 @@ edition = "2021"
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
protobuf = "3.3.0"
|
|
||||||
|
|
||||||
[build-dependencies]
|
|
||||||
protobuf-codegen = { version = "3.3.0", optional = true }
|
|
||||||
|
|
||||||
[features]
|
|
||||||
codegen = ["protobuf-codegen"]
|
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -1,2 +0,0 @@
|
||||||
codegen:
|
|
||||||
cargo build --features codegen
|
|
17
README.md
17
README.md
|
@ -1,17 +0,0 @@
|
||||||
esphome-proto
|
|
||||||
=============
|
|
||||||
|
|
||||||
[ESPHome native API][native-api] protocol data structures generated from
|
|
||||||
[protobuf files] in [the Python client][aioesphomeapi].
|
|
||||||
|
|
||||||
## Regenerating
|
|
||||||
|
|
||||||
In order to avoid each consumer of this crate having to regenerate the Rust
|
|
||||||
source and pull in build-time dependencies on the protobuf code generator the
|
|
||||||
generated files are committed into this repository.
|
|
||||||
|
|
||||||
To regenerate the files run `make codegen`.
|
|
||||||
|
|
||||||
[native-api]: https://esphome.io/components/api.html
|
|
||||||
[protobuf files]: https://github.com/esphome/esphome/blob/dev/esphome/components/api/api.proto
|
|
||||||
[aioesphomeapi]: https://github.com/esphome/aioesphomeapi
|
|
12
build.rs
12
build.rs
|
@ -1,12 +0,0 @@
|
||||||
fn main() {
|
|
||||||
#[cfg(feature = "codegen")]
|
|
||||||
{
|
|
||||||
protobuf_codegen::Codegen::new()
|
|
||||||
.pure()
|
|
||||||
.includes(&["src"])
|
|
||||||
.input("src/api.proto")
|
|
||||||
.input("src/api_options.proto")
|
|
||||||
.out_dir("src/generated")
|
|
||||||
.run_from_script();
|
|
||||||
}
|
|
||||||
}
|
|
23486
src/generated/api.rs
23486
src/generated/api.rs
File diff suppressed because it is too large
Load diff
|
@ -1,262 +0,0 @@
|
||||||
// This file is generated by rust-protobuf 3.3.0. Do not edit
|
|
||||||
// .proto file is parsed by pure
|
|
||||||
// @generated
|
|
||||||
|
|
||||||
// https://github.com/rust-lang/rust-clippy/issues/702
|
|
||||||
#![allow(unknown_lints)]
|
|
||||||
#![allow(clippy::all)]
|
|
||||||
|
|
||||||
#![allow(unused_attributes)]
|
|
||||||
#![cfg_attr(rustfmt, rustfmt::skip)]
|
|
||||||
|
|
||||||
#![allow(box_pointers)]
|
|
||||||
#![allow(dead_code)]
|
|
||||||
#![allow(missing_docs)]
|
|
||||||
#![allow(non_camel_case_types)]
|
|
||||||
#![allow(non_snake_case)]
|
|
||||||
#![allow(non_upper_case_globals)]
|
|
||||||
#![allow(trivial_casts)]
|
|
||||||
#![allow(unused_results)]
|
|
||||||
#![allow(unused_mut)]
|
|
||||||
|
|
||||||
//! Generated file from `api_options.proto`
|
|
||||||
|
|
||||||
/// Generated files are compatible only with the same version
|
|
||||||
/// of protobuf runtime.
|
|
||||||
const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_3_3_0;
|
|
||||||
|
|
||||||
// @@protoc_insertion_point(message:void)
|
|
||||||
#[derive(PartialEq,Clone,Default,Debug)]
|
|
||||||
pub struct Void {
|
|
||||||
// special fields
|
|
||||||
// @@protoc_insertion_point(special_field:void.special_fields)
|
|
||||||
pub special_fields: ::protobuf::SpecialFields,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> ::std::default::Default for &'a Void {
|
|
||||||
fn default() -> &'a Void {
|
|
||||||
<Void as ::protobuf::Message>::default_instance()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Void {
|
|
||||||
pub fn new() -> Void {
|
|
||||||
::std::default::Default::default()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData {
|
|
||||||
let mut fields = ::std::vec::Vec::with_capacity(0);
|
|
||||||
let mut oneofs = ::std::vec::Vec::with_capacity(0);
|
|
||||||
::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Void>(
|
|
||||||
"void",
|
|
||||||
fields,
|
|
||||||
oneofs,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ::protobuf::Message for Void {
|
|
||||||
const NAME: &'static str = "void";
|
|
||||||
|
|
||||||
fn is_initialized(&self) -> bool {
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> {
|
|
||||||
while let Some(tag) = is.read_raw_tag_or_eof()? {
|
|
||||||
match tag {
|
|
||||||
tag => {
|
|
||||||
::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
::std::result::Result::Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
// Compute sizes of nested messages
|
|
||||||
#[allow(unused_variables)]
|
|
||||||
fn compute_size(&self) -> u64 {
|
|
||||||
let mut my_size = 0;
|
|
||||||
my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields());
|
|
||||||
self.special_fields.cached_size().set(my_size as u32);
|
|
||||||
my_size
|
|
||||||
}
|
|
||||||
|
|
||||||
fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> {
|
|
||||||
os.write_unknown_fields(self.special_fields.unknown_fields())?;
|
|
||||||
::std::result::Result::Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn special_fields(&self) -> &::protobuf::SpecialFields {
|
|
||||||
&self.special_fields
|
|
||||||
}
|
|
||||||
|
|
||||||
fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields {
|
|
||||||
&mut self.special_fields
|
|
||||||
}
|
|
||||||
|
|
||||||
fn new() -> Void {
|
|
||||||
Void::new()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn clear(&mut self) {
|
|
||||||
self.special_fields.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
fn default_instance() -> &'static Void {
|
|
||||||
static instance: Void = Void {
|
|
||||||
special_fields: ::protobuf::SpecialFields::new(),
|
|
||||||
};
|
|
||||||
&instance
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ::protobuf::MessageFull for Void {
|
|
||||||
fn descriptor() -> ::protobuf::reflect::MessageDescriptor {
|
|
||||||
static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new();
|
|
||||||
descriptor.get(|| file_descriptor().message_by_package_relative_name("void").unwrap()).clone()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ::std::fmt::Display for Void {
|
|
||||||
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
|
|
||||||
::protobuf::text_format::fmt(self, f)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ::protobuf::reflect::ProtobufValue for Void {
|
|
||||||
type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)]
|
|
||||||
// @@protoc_insertion_point(enum:APISourceType)
|
|
||||||
pub enum APISourceType {
|
|
||||||
// @@protoc_insertion_point(enum_value:APISourceType.SOURCE_BOTH)
|
|
||||||
SOURCE_BOTH = 0,
|
|
||||||
// @@protoc_insertion_point(enum_value:APISourceType.SOURCE_SERVER)
|
|
||||||
SOURCE_SERVER = 1,
|
|
||||||
// @@protoc_insertion_point(enum_value:APISourceType.SOURCE_CLIENT)
|
|
||||||
SOURCE_CLIENT = 2,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ::protobuf::Enum for APISourceType {
|
|
||||||
const NAME: &'static str = "APISourceType";
|
|
||||||
|
|
||||||
fn value(&self) -> i32 {
|
|
||||||
*self as i32
|
|
||||||
}
|
|
||||||
|
|
||||||
fn from_i32(value: i32) -> ::std::option::Option<APISourceType> {
|
|
||||||
match value {
|
|
||||||
0 => ::std::option::Option::Some(APISourceType::SOURCE_BOTH),
|
|
||||||
1 => ::std::option::Option::Some(APISourceType::SOURCE_SERVER),
|
|
||||||
2 => ::std::option::Option::Some(APISourceType::SOURCE_CLIENT),
|
|
||||||
_ => ::std::option::Option::None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn from_str(str: &str) -> ::std::option::Option<APISourceType> {
|
|
||||||
match str {
|
|
||||||
"SOURCE_BOTH" => ::std::option::Option::Some(APISourceType::SOURCE_BOTH),
|
|
||||||
"SOURCE_SERVER" => ::std::option::Option::Some(APISourceType::SOURCE_SERVER),
|
|
||||||
"SOURCE_CLIENT" => ::std::option::Option::Some(APISourceType::SOURCE_CLIENT),
|
|
||||||
_ => ::std::option::Option::None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const VALUES: &'static [APISourceType] = &[
|
|
||||||
APISourceType::SOURCE_BOTH,
|
|
||||||
APISourceType::SOURCE_SERVER,
|
|
||||||
APISourceType::SOURCE_CLIENT,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ::protobuf::EnumFull for APISourceType {
|
|
||||||
fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor {
|
|
||||||
static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new();
|
|
||||||
descriptor.get(|| file_descriptor().enum_by_package_relative_name("APISourceType").unwrap()).clone()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor {
|
|
||||||
let index = *self as usize;
|
|
||||||
Self::enum_descriptor().value_by_index(index)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl ::std::default::Default for APISourceType {
|
|
||||||
fn default() -> Self {
|
|
||||||
APISourceType::SOURCE_BOTH
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl APISourceType {
|
|
||||||
fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData {
|
|
||||||
::protobuf::reflect::GeneratedEnumDescriptorData::new::<APISourceType>("APISourceType")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Extension fields
|
|
||||||
pub mod exts {
|
|
||||||
|
|
||||||
pub const needs_setup_connection: ::protobuf::ext::ExtFieldOptional<::protobuf::descriptor::MethodOptions, bool> = ::protobuf::ext::ExtFieldOptional::new(1038, ::protobuf::descriptor::field_descriptor_proto::Type::TYPE_BOOL);
|
|
||||||
|
|
||||||
pub const needs_authentication: ::protobuf::ext::ExtFieldOptional<::protobuf::descriptor::MethodOptions, bool> = ::protobuf::ext::ExtFieldOptional::new(1039, ::protobuf::descriptor::field_descriptor_proto::Type::TYPE_BOOL);
|
|
||||||
|
|
||||||
pub const id: ::protobuf::ext::ExtFieldOptional<::protobuf::descriptor::MessageOptions, u32> = ::protobuf::ext::ExtFieldOptional::new(1036, ::protobuf::descriptor::field_descriptor_proto::Type::TYPE_UINT32);
|
|
||||||
|
|
||||||
pub const source: ::protobuf::ext::ExtFieldOptional<::protobuf::descriptor::MessageOptions, ::protobuf::EnumOrUnknown<super::APISourceType>> = ::protobuf::ext::ExtFieldOptional::new(1037, ::protobuf::descriptor::field_descriptor_proto::Type::TYPE_ENUM);
|
|
||||||
|
|
||||||
pub const ifdef: ::protobuf::ext::ExtFieldOptional<::protobuf::descriptor::MessageOptions, ::std::string::String> = ::protobuf::ext::ExtFieldOptional::new(1038, ::protobuf::descriptor::field_descriptor_proto::Type::TYPE_STRING);
|
|
||||||
|
|
||||||
pub const log: ::protobuf::ext::ExtFieldOptional<::protobuf::descriptor::MessageOptions, bool> = ::protobuf::ext::ExtFieldOptional::new(1039, ::protobuf::descriptor::field_descriptor_proto::Type::TYPE_BOOL);
|
|
||||||
|
|
||||||
pub const no_delay: ::protobuf::ext::ExtFieldOptional<::protobuf::descriptor::MessageOptions, bool> = ::protobuf::ext::ExtFieldOptional::new(1040, ::protobuf::descriptor::field_descriptor_proto::Type::TYPE_BOOL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static file_descriptor_proto_data: &'static [u8] = b"\
|
|
||||||
\n\x11api_options.proto\x1a\x20google/protobuf/descriptor.proto\"\x06\n\
|
|
||||||
\x04void*F\n\rAPISourceType\x12\x0f\n\x0bSOURCE_BOTH\x10\0\x12\x11\n\rSO\
|
|
||||||
URCE_SERVER\x10\x01\x12\x11\n\rSOURCE_CLIENT\x10\x02:]\n\x16needs_setup_\
|
|
||||||
connection\x18\x8e\x08\x20\x01(\x08\x12\x1e.google.protobuf.MethodOption\
|
|
||||||
s:\x04trueR\x14needsSetupConnectionB\0:Z\n\x14needs_authentication\x18\
|
|
||||||
\x8f\x08\x20\x01(\x08\x12\x1e.google.protobuf.MethodOptions:\x04trueR\
|
|
||||||
\x13needsAuthenticationB\0:5\n\x02id\x18\x8c\x08\x20\x01(\r\x12\x1f.goog\
|
|
||||||
le.protobuf.MessageOptions:\x010R\x02idB\0:W\n\x06source\x18\x8d\x08\x20\
|
|
||||||
\x01(\x0e2\x0e.APISourceType\x12\x1f.google.protobuf.MessageOptions:\x0b\
|
|
||||||
SOURCE_BOTHR\x06sourceB\0:6\n\x05ifdef\x18\x8e\x08\x20\x01(\t\x12\x1f.go\
|
|
||||||
ogle.protobuf.MessageOptionsR\x05ifdef::\n\x03log\x18\x8f\x08\x20\x01(\
|
|
||||||
\x08\x12\x1f.google.protobuf.MessageOptions:\x04trueR\x03logB\0:D\n\x08n\
|
|
||||||
o_delay\x18\x90\x08\x20\x01(\x08\x12\x1f.google.protobuf.MessageOptions:\
|
|
||||||
\x05falseR\x07noDelayB\0b\x06proto2\
|
|
||||||
";
|
|
||||||
|
|
||||||
/// `FileDescriptorProto` object which was a source for this generated file
|
|
||||||
fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
|
|
||||||
static file_descriptor_proto_lazy: ::protobuf::rt::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::Lazy::new();
|
|
||||||
file_descriptor_proto_lazy.get(|| {
|
|
||||||
::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/// `FileDescriptor` object which allows dynamic access to files
|
|
||||||
pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor {
|
|
||||||
static generated_file_descriptor_lazy: ::protobuf::rt::Lazy<::protobuf::reflect::GeneratedFileDescriptor> = ::protobuf::rt::Lazy::new();
|
|
||||||
static file_descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::FileDescriptor> = ::protobuf::rt::Lazy::new();
|
|
||||||
file_descriptor.get(|| {
|
|
||||||
let generated_file_descriptor = generated_file_descriptor_lazy.get(|| {
|
|
||||||
let mut deps = ::std::vec::Vec::with_capacity(1);
|
|
||||||
deps.push(::protobuf::descriptor::file_descriptor().clone());
|
|
||||||
let mut messages = ::std::vec::Vec::with_capacity(1);
|
|
||||||
messages.push(Void::generated_message_descriptor_data());
|
|
||||||
let mut enums = ::std::vec::Vec::with_capacity(1);
|
|
||||||
enums.push(APISourceType::generated_enum_descriptor_data());
|
|
||||||
::protobuf::reflect::GeneratedFileDescriptor::new_generated(
|
|
||||||
file_descriptor_proto(),
|
|
||||||
deps,
|
|
||||||
messages,
|
|
||||||
enums,
|
|
||||||
)
|
|
||||||
});
|
|
||||||
::protobuf::reflect::FileDescriptor::new_generated_2(generated_file_descriptor)
|
|
||||||
})
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
// @generated
|
|
||||||
|
|
||||||
pub mod api;
|
|
||||||
pub mod api_options;
|
|
37
src/lib.rs
37
src/lib.rs
|
@ -1,27 +1,14 @@
|
||||||
//! The Home Assistant protocol is structured as a simple
|
pub fn add(left: usize, right: usize) -> usize {
|
||||||
//! TCP socket with short binary messages encoded in the protocol buffers format.
|
left + right
|
||||||
//! First, a message in this protocol has a specific format:
|
}
|
||||||
//!
|
|
||||||
//! * A zero byte.
|
|
||||||
//! * VarInt denoting the size of the message object. (type is not part of this)
|
|
||||||
//! * VarInt denoting the type of message.
|
|
||||||
//! * The message object encoded as a ProtoBuf message
|
|
||||||
//!
|
|
||||||
//! The connection is established in 4 steps:
|
|
||||||
//!
|
|
||||||
//! * First, the client connects to the server and sends a [Hello Request](api::HelloRequest)
|
|
||||||
//! identifying itself
|
|
||||||
//! * The server responds with a [Hello Response](api::HelloResponse) and selects the
|
|
||||||
//! protocol version
|
|
||||||
//! * After receiving this message, the client attempts to authenticate itself using
|
|
||||||
//! the password and a [Connect Request](api::ConnectRequest)
|
|
||||||
//! * The server responds with a [Connect Response](api::ConnectResponse) and notifies
|
|
||||||
//! of invalid password if necessary.
|
|
||||||
//!
|
|
||||||
//! If anything in this initial process fails, the connection must immediately closed
|
|
||||||
//! by both sides and _no_ disconnection message is to be sent.
|
|
||||||
|
|
||||||
mod generated;
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
pub use generated::api;
|
#[test]
|
||||||
pub use generated::api_options;
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue