summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Müller <m.mueller@ifm.com>2022-06-23 16:43:13 +0200
committerMarcel Müller <m.mueller@ifm.com>2022-06-23 16:43:13 +0200
commited1808a9be40210b4d4d3e304f2582a7883b3211 (patch)
treece23d7f8b8a64aa1be8f42219892d5adafbb71b6
parent3dc51be974294fafa60c9b73280b9be241277765 (diff)
parent10ef8e00bd7c78ed709c933edd92a59cc885e341 (diff)
Merge remote-tracking branch 'matze/feature/add_tedge_api/bevy-reflect-typeuuid' into feature/add_tedge_api_only
-rw-r--r--Cargo.lock132
-rw-r--r--crates/core/tedge_api/Cargo.toml2
-rw-r--r--crates/core/tedge_api/README.md4
-rw-r--r--crates/core/tedge_api/examples/heartbeat.rs2
-rw-r--r--crates/core/tedge_api/examples/universal_log.rs6
-rw-r--r--crates/core/tedge_api/src/address.rs4
-rw-r--r--crates/core/tedge_api/src/lib.rs3
-rw-r--r--crates/core/tedge_api/src/message.rs16
-rw-r--r--crates/core/tedge_api/src/plugin.rs10
9 files changed, 133 insertions, 46 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 36dac215..23730bb5 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -31,6 +31,17 @@ dependencies = [
]
[[package]]
+name = "ahash"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
+dependencies = [
+ "getrandom",
+ "once_cell",
+ "version_check",
+]
+
+[[package]]
name = "aho-corasick"
version = "0.7.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -245,6 +256,71 @@ dependencies = [
]
[[package]]
+name = "bevy_derive"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6abddf2ed415f31d28a9bf9ab3c0bc857e98a722858d38dba65bdda481f8d714"
+dependencies = [
+ "bevy_macro_utils",
+ "quote 1.0.18",
+ "syn 1.0.93",
+]
+
+[[package]]
+name = "bevy_macro_utils"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7ddfc33a99547e36718e56e414541e461c74ec318ff987a1e9f4ff46d0dacbb"
+dependencies = [
+ "cargo-manifest",
+ "quote 1.0.18",
+ "syn 1.0.93",
+]
+
+[[package]]
+name = "bevy_reflect"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d0793107bc4b7c6bd04232d739fc8d70aa5fb313bfad6e850f91f79b2557eed"
+dependencies = [
+ "bevy_reflect_derive",
+ "bevy_utils",
+ "downcast-rs",
+ "erased-serde",
+ "parking_lot 0.11.2",
+ "serde",
+ "thiserror",
+]
+
+[[package]]
+name = "bevy_reflect_derive"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81c88de8067d19dfde31662ee78e3ee6971e2df27715799f91b515b37a636677"
+dependencies = [
+ "bevy_macro_utils",
+ "proc-macro2 1.0.38",
+ "quote 1.0.18",
+ "syn 1.0.93",
+ "uuid",
+]
+
+[[package]]
+name = "bevy_utils"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f354c584812996febd48cc885f36b23004b49d6680e73fc95a69a2bb17a48e5"
+dependencies = [
+ "ahash",
+ "bevy_derive",
+ "getrandom",
+ "hashbrown",
+ "instant",
+ "tracing",
+ "uuid",
+]
+
+[[package]]
name = "bit-set"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -379,6 +455,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba"
[[package]]
+name = "cargo-manifest"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af6d65c7592744998c67947ec771c62687c76f00179a83ffd563c0482046bb98"
+dependencies = [
+ "serde",
+ "serde_derive",
+ "toml",
+]
+
+[[package]]
name = "cast"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -839,6 +926,15 @@ dependencies = [
]
[[package]]
+name = "erased-serde"
+version = "0.3.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81d013529d5574a60caeda29e179e695125448e5de52e3874f7b4c1d7360e18e"
+dependencies = [
+ "serde",
+]
+
+[[package]]
name = "event-listener"
version = "2.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1034,8 +1130,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
dependencies = [
"cfg-if 1.0.0",
+ "js-sys",
"libc",
"wasi 0.10.2+wasi-snapshot-preview1",
+ "wasm-bindgen",
]
[[package]]
@@ -1084,6 +1182,10 @@ name = "hashbrown"
version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
+dependencies = [
+ "ahash",
+ "serde",
+]
[[package]]
name = "headers"
@@ -1242,6 +1344,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
dependencies = [
"cfg-if 1.0.0",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
]
[[package]]
@@ -2856,6 +2961,7 @@ name = "tedge_api"
version = "0.1.0"
dependencies = [
"async-trait",
+ "bevy_reflect",
"downcast-rs",
"futures",
"miette",
@@ -2872,7 +2978,6 @@ dependencies = [
"tokio-util 0.7.0",
"toml",
"tracing",
- "type-uuid",
]
[[package]]
@@ -3277,6 +3382,7 @@ version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"
dependencies = [
+ "indexmap",
"serde",
]
@@ -3397,26 +3503,6 @@ dependencies = [
]
[[package]]
-name = "type-uuid"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15043bca41f43205c9b0055d365a405d81b8e4a8ff99c36b263cf79ad1f4c051"
-dependencies = [
- "type-uuid-derive",
-]
-
-[[package]]
-name = "type-uuid-derive"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e090ee857961c746ecf7fb596022493ffaad54d189061df49f7a0cf17796dc1"
-dependencies = [
- "quote 1.0.18",
- "syn 1.0.93",
- "uuid",
-]
-
-[[package]]
name = "typed-arena"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3515,6 +3601,10 @@ name = "uuid"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
+dependencies = [
+ "getrandom",
+ "serde",
+]
[[package]]
name = "value-bag"
diff --git a/crates/core/tedge_api/Cargo.toml b/crates/core/tedge_api/Cargo.toml
index a4ff92ab..06184c32 100644
--- a/crates/core/tedge_api/Cargo.toml
+++ b/crates/core/tedge_api/Cargo.toml
@@ -21,7 +21,7 @@ termimad = "0.20.1"
nu-ansi-term = "0.45.1"
tedge_config_derive = { version = "0.1.0", path = "tedge_config_derive" }
tracing = "0.1"
-type-uuid = "0.1.2"
+bevy_reflect = "0.7.0"
[dev-dependencies]
pretty_assertions = "1.2.1"
diff --git a/crates/core/tedge_api/README.md b/crates/core/tedge_api/README.md
index 8c59231a..07a4a5bc 100644
--- a/crates/core/tedge_api/README.md
+++ b/crates/core/tedge_api/README.md
@@ -85,9 +85,9 @@ others.
For example:
```rust
-use tedge_api::{Message, TypeUuid};
+use tedge_api::Message;
-#[derive(Debug, TypeUuid)]
+#[derive(Debug, bevy_reflect::TypeUuid)]
#[uuid = "b60dd50c-ccef-4204-b370-18bbbb68d6e2"]
struct Value(f64);
diff --git a/crates/core/tedge_api/examples/heartbeat.rs b/crates/core/tedge_api/examples/heartbeat.rs
index 8d64232a..41dc7e74 100644
--- a/crates/core/tedge_api/examples/heartbeat.rs
+++ b/crates/core/tedge_api/examples/heartbeat.rs
@@ -1,6 +1,7 @@
use std::{collections::HashMap, sync::Arc, time::Duration};
use async_trait::async_trait;
+use bevy_reflect::TypeUuid;
use futures::FutureExt;
use tedge_api::{
address::ReplySenderFor,
@@ -10,7 +11,6 @@ use tedge_api::{
PluginError,
};
use tokio::sync::RwLock;
-use type_uuid::TypeUuid;
#[derive(Debug, TypeUuid)]
#[uuid = "94916be9-17ba-4bca-a3a0-408d33136fed"]
diff --git a/crates/core/tedge_api/examples/universal_log.rs b/crates/core/tedge_api/examples/universal_log.rs
index 064ffa22..0a1c6793 100644
--- a/crates/core/tedge_api/examples/universal_log.rs
+++ b/crates/core/tedge_api/examples/universal_log.rs
@@ -1,6 +1,7 @@
use std::{collections::HashMap, sync::Arc, time::Duration};
use async_trait::async_trait;
+use bevy_reflect::TypeUuid;
use futures::FutureExt;
use tedge_api::{
address::ReplySenderFor,
@@ -10,16 +11,15 @@ use tedge_api::{
PluginError,
};
use tokio::sync::RwLock;
-use type_uuid::TypeUuid;
/// A message that represents a heartbeat that gets sent to plugins
#[derive(Debug, TypeUuid)]
-#[uuid = "1f807f7b-888f-4881-a1b5-16380e32f8c2"]
+#[uuid = "1f807f7b-888f-4881-a1b5-16380e32f8c2"]
struct Heartbeat;
impl Message for Heartbeat {}
#[derive(Debug, TypeUuid)]
-#[uuid = "346e233f-c24a-47e0-a15b-3ec0d1e19019"]
+#[uuid = "346e233f-c24a-47e0-a15b-3ec0d1e19019"]
struct RandomData;
impl Message for RandomData {}
diff --git a/crates/core/tedge_api/src/address.rs b/crates/core/tedge_api/src/address.rs
index 4249ecfc..a183b11c 100644
--- a/crates/core/tedge_api/src/address.rs
+++ b/crates/core/tedge_api/src/address.rs
@@ -359,8 +359,8 @@ pub trait Contains<M: Message> {}
/// ## Example
///
/// ```rust
+/// # use bevy_reflect::TypeUuid;
/// # use tedge_api::{Message, make_receiver_bundle};
-/// # use type_uuid::TypeUuid;
///
/// #[derive(Debug, TypeUuid)]
/// #[uuid = "b4e62630-0404-4d39-b435-95d777029887"]
@@ -404,9 +404,9 @@ macro_rules! make_receiver_bundle {
mod tests {
use std::sync::Arc;
+ use bevy_reflect::TypeUuid;
use static_assertions::{assert_impl_all, assert_not_impl_any};
use tokio::sync::RwLock;
- use type_uuid::TypeUuid;
use crate::{
address::{InnerMessageSender, ReplyReceiverFor, ReplySenderFor},
diff --git a/crates/core/tedge_api/src/lib.rs b/crates/core/tedge_api/src/lib.rs
index f9716981..758c33aa 100644
--- a/crates/core/tedge_api/src/lib.rs
+++ b/crates/core/tedge_api/src/lib.rs
@@ -33,9 +33,6 @@ pub use tokio_util::sync::CancellationToken;
/// Derive macro for self-describing configurations
pub use tedge_config_derive::Config;
-/// Derive macro for type uuids
-pub use type_uuid::TypeUuid;
-
#[doc(hidden)]
pub mod _internal {
pub use futures::future::BoxFuture;
diff --git a/crates/core/tedge_api/src/message.rs b/crates/core/tedge_api/src/message.rs
index 1e63a368..dbde7feb 100644
--- a/crates/core/tedge_api/src/message.rs
+++ b/crates/core/tedge_api/src/message.rs
@@ -1,6 +1,6 @@
use downcast_rs::{impl_downcast, DowncastSync};
+use bevy_reflect::{TypeUuid, TypeUuidDynamic};
use serde::Serialize;
-use type_uuid::{TypeUuid, TypeUuidDynamic};
use crate::address::AnyMessageBox;
@@ -81,7 +81,7 @@ pub struct MessageType {
}
#[derive(Clone, PartialEq, Debug)]
-struct Uuid([u8; 16]);
+struct Uuid(bevy_reflect::Uuid);
#[derive(Debug, Clone, Serialize)]
enum MessageKind {
@@ -113,10 +113,10 @@ impl MessageType {
/// Get the [`MessageType`] for a `M`:[`Message`]
#[must_use]
pub fn for_message<M: Message + TypeUuid>() -> Self {
- let id = M::UUID;
+ let id = M::TYPE_UUID;
MessageType {
name: std::any::type_name::<M>(),
- kind: if id == AnyMessage::UUID {
+ kind: if id == AnyMessage::TYPE_UUID {
MessageKind::Wildcard
} else {
MessageKind::Typed(Uuid(id))
@@ -125,10 +125,10 @@ impl MessageType {
}
pub(crate) fn from_message(msg: &dyn Message) -> Self {
- let id = msg.uuid();
+ let id = msg.type_uuid();
MessageType {
- name: msg.type_name(),
- kind: if id == AnyMessage::UUID {
+ name: TypeUuidDynamic::type_name(msg),
+ kind: if id == AnyMessage::TYPE_UUID {
MessageKind::Wildcard
} else {
MessageKind::Typed(Uuid(id))
@@ -154,7 +154,7 @@ crate::make_receiver_bundle!(pub struct CoreMessages(StopCore));
#[cfg(test)]
mod tests {
- use type_uuid::TypeUuid;
+ use bevy_reflect::TypeUuid;
use crate::Message;
diff --git a/crates/core/tedge_api/src/plugin.rs b/crates/core/tedge_api/src/plugin.rs
index 718dbf67..2129d4bf 100644
--- a/crates/core/tedge_api/src/plugin.rs
+++ b/crates/core/tedge_api/src/plugin.rs
@@ -4,9 +4,9 @@
//! - Its purpose is to simply instantiate your plugins as needed with custom logic if required
//! 2. Create your plugin struct that implements `Plugin`
+use bevy_reflect::TypeUuid;
use futures::future::BoxFuture;
use std::any::Any;
-use type_uuid::TypeUuid;
use downcast_rs::{impl_downcast, DowncastSync};
@@ -96,8 +96,8 @@ pub trait PluginBuilder<PD: PluginDirectory>: Sync + Send + 'static {
/// # Example
///
/// ```no_run
+ /// # use bevy_reflect::TypeUuid;
/// # use tedge_api::{Plugin, plugin::BuiltPlugin, PluginError, PluginExt, PluginDirectory, PluginBuilder, PluginConfiguration};
- /// # use type_uuid::TypeUuid;
///
/// #[derive(Debug, TypeUuid)]
/// #[uuid = "46f5d318-4158-4726-83dd-9b310cae3328"]
@@ -214,13 +214,13 @@ pub trait PluginBuilder<PD: PluginDirectory>: Sync + Send + 'static {
/// # Example
///
/// ```no_run
+ /// # use bevy_reflect::TypeUuid;
/// # use tedge_api::plugin::BuiltPlugin;
/// # use tedge_api::PluginConfiguration;
/// # use tedge_api::Plugin;
/// # use tedge_api::PluginBuilder;
/// # use tedge_api::PluginDirectory;
/// # use tedge_api::PluginExt;
- /// # use type_uuid::TypeUuid;
///
/// #[derive(Debug, TypeUuid)]
/// #[uuid = "39046e3e-05ad-4b16-bbf1-8c2d2da5b668"]
@@ -384,11 +384,11 @@ impl HandleTypes {
///
/// ```rust
/// # use async_trait::async_trait;
+ /// # use bevy_reflect::TypeUuid;
/// # use tedge_api::plugin::{Handle, HandleTypes};
/// # use tedge_api::address::ReplySenderFor;
/// # use tedge_api::PluginError;
/// # use tedge_api::PluginExt;
- /// # use type_uuid::TypeUuid;
///
/// #[derive(Debug, TypeUuid)]
/// #[uuid = "1276aa9c-5e04-4ab3-a987-61d89765ab33"]
@@ -677,9 +677,9 @@ impl_msg_bundle_tuple!(M10 M9 M8 M7 M6 M5 M4 M3 M2 M1);
mod tests {
use crate::{message::DynMessage, Message};
+ use bevy_reflect::TypeUuid;
use super::{Plugin, PluginBuilder};
use static_assertions::assert_obj_safe;
- use type_uuid::TypeUuid;
// Object Safety
assert_obj_safe!(PluginBuilder<()>);