Compare commits

...

No commits in common. "87772ea0a5daede1b0e1af7bd84ba29f9ebab43a" and "b4d1bf38dda5526b340925434edb941ce384f56d" have entirely different histories.

9 changed files with 12 additions and 24183 deletions

368
Cargo.lock generated
View file

@ -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"

View file

@ -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"]

View file

@ -1,2 +0,0 @@
codegen:
cargo build --features codegen

View file

@ -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

View file

@ -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();
}
}

File diff suppressed because it is too large Load diff

View file

@ -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)
})
}

View file

@ -1,4 +0,0 @@
// @generated
pub mod api;
pub mod api_options;

View file

@ -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);
}
}