diff --git a/.gitignore b/.gitignore index 85185b5b6..d7a6cf967 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ target # vscode .vscode +out # IntelliJ / CLion .idea diff --git a/Cargo.lock b/Cargo.lock index 14f458af2..593220380 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -30,13 +30,14 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" dependencies = [ "cfg-if", "once_cell", "version_check", + "zerocopy", ] [[package]] @@ -2971,7 +2972,7 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "zenoh" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "async-global-executor", "async-std", @@ -3020,7 +3021,7 @@ dependencies = [ [[package]] name = "zenoh-buffers" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "zenoh-collections", ] @@ -3050,7 +3051,7 @@ dependencies = [ [[package]] name = "zenoh-codec" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "log", "serde", @@ -3063,12 +3064,12 @@ dependencies = [ [[package]] name = "zenoh-collections" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" [[package]] name = "zenoh-config" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "flume", "json5", @@ -3087,7 +3088,7 @@ dependencies = [ [[package]] name = "zenoh-core" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "async-std", "lazy_static", @@ -3097,7 +3098,7 @@ dependencies = [ [[package]] name = "zenoh-crypto" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "aes", "hmac", @@ -3110,7 +3111,7 @@ dependencies = [ [[package]] name = "zenoh-ext" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "async-std", "bincode", @@ -3130,7 +3131,7 @@ dependencies = [ [[package]] name = "zenoh-keyexpr" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "hashbrown 0.14.0", "keyed-set", @@ -3144,7 +3145,7 @@ dependencies = [ [[package]] name = "zenoh-link" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "async-std", "async-trait", @@ -3163,7 +3164,7 @@ dependencies = [ [[package]] name = "zenoh-link-commons" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "async-std", "async-trait", @@ -3180,7 +3181,7 @@ dependencies = [ [[package]] name = "zenoh-link-quic" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "async-rustls", "async-std", @@ -3206,7 +3207,7 @@ dependencies = [ [[package]] name = "zenoh-link-tcp" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "async-std", "async-trait", @@ -3222,7 +3223,7 @@ dependencies = [ [[package]] name = "zenoh-link-tls" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "async-rustls", "async-std", @@ -3247,7 +3248,7 @@ dependencies = [ [[package]] name = "zenoh-link-udp" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "async-std", "async-trait", @@ -3266,7 +3267,7 @@ dependencies = [ [[package]] name = "zenoh-link-unixsock_stream" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "async-std", "async-trait", @@ -3284,7 +3285,7 @@ dependencies = [ [[package]] name = "zenoh-link-ws" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "async-std", "async-trait", @@ -3304,7 +3305,7 @@ dependencies = [ [[package]] name = "zenoh-macros" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "proc-macro2", "quote", @@ -3317,11 +3318,14 @@ dependencies = [ [[package]] name = "zenoh-plugin-trait" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ + "const_format", "libloading", "log", + "serde", "serde_json", + "zenoh-keyexpr", "zenoh-macros", "zenoh-result", "zenoh-util", @@ -3330,7 +3334,7 @@ dependencies = [ [[package]] name = "zenoh-protocol" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "const_format", "hex", @@ -3346,7 +3350,7 @@ dependencies = [ [[package]] name = "zenoh-result" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "anyhow", ] @@ -3354,7 +3358,7 @@ dependencies = [ [[package]] name = "zenoh-shm" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "bincode", "log", @@ -3367,7 +3371,7 @@ dependencies = [ [[package]] name = "zenoh-sync" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "async-std", "event-listener 4.0.0", @@ -3382,7 +3386,7 @@ dependencies = [ [[package]] name = "zenoh-transport" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "async-executor", "async-global-executor", @@ -3414,7 +3418,7 @@ dependencies = [ [[package]] name = "zenoh-util" version = "0.11.0-dev" -source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#b669489bc814a758741f09c671ecc3a0683697a0" +source = "git+https://github.com/eclipse-zenoh/zenoh.git?branch=main#2bd4518334d0a9e7e2703c7fd57dfa4547a96819" dependencies = [ "async-std", "async-trait", @@ -3438,6 +3442,26 @@ dependencies = [ "zenoh-result", ] +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.33", +] + [[package]] name = "zeroize" version = "1.6.0" diff --git a/Cargo.toml.in b/Cargo.toml.in index 86bb48865..d1eec11bd 100644 --- a/Cargo.toml.in +++ b/Cargo.toml.in @@ -49,10 +49,10 @@ log = "0.4.17" rand = "0.8.5" spin = "0.9.5" # shared-memory enabled for zenoh even if zenoh-c "shared-memory" feature is disabled. This is to make "std::mem::transmute" work for `ZSLice` -zenoh = { version = "0.11.0-dev", git = "https://github.com/eclipse-zenoh/zenoh.git", branch = "main", features = [ "shared-memory", "unstable" ], default-features = false } -zenoh-protocol = { version = "0.11.0-dev", git = "https://github.com/eclipse-zenoh/zenoh.git", branch = "main", features = [ "shared-memory" ] } +zenoh = { version = "0.11.0-dev", git = "https://github.com/eclipse-zenoh/zenoh.git", branch = "main", features = ["shared-memory", "unstable"], default-features = false } +zenoh-protocol = { version = "0.11.0-dev", git = "https://github.com/eclipse-zenoh/zenoh.git", branch = "main", features = ["shared-memory"] } zenoh-util = { version = "0.11.0-dev", git = "https://github.com/eclipse-zenoh/zenoh.git", branch = "main" } -zenoh-ext = { version = "0.11.0-dev", git = "https://github.com/eclipse-zenoh/zenoh.git", branch = "main", features = [ "unstable" ]} +zenoh-ext = { version = "0.11.0-dev", git = "https://github.com/eclipse-zenoh/zenoh.git", branch = "main", features = ["unstable"] } [build-dependencies] cbindgen = "0.24.3" diff --git a/examples/z_pub_cache.c b/examples/z_pub_cache.c index b293197a7..8c1d36221 100644 --- a/examples/z_pub_cache.c +++ b/examples/z_pub_cache.c @@ -54,6 +54,7 @@ int main(int argc, char **argv) { ze_publication_cache_options_t pub_cache_opts = ze_publication_cache_options_default(); pub_cache_opts.history = 42; + pub_cache_opts.queryable_complete = false; printf("Declaring publication cache on '%s'...\n", keyexpr); ze_owned_publication_cache_t pub_cache = diff --git a/include/zenoh_commons.h b/include/zenoh_commons.h index 63df84a33..58e7a2856 100644 --- a/include/zenoh_commons.h +++ b/include/zenoh_commons.h @@ -905,12 +905,14 @@ typedef struct ze_owned_publication_cache_t { * z_keyexpr_t queryable_prefix: The prefix used for queryable * zcu_locality_t queryable_origin: The restriction for the matching queries that will be receive by this * publication cache + * bool queryable_complete: the `complete` option for the queryable * size_t history: The the history size * size_t resources_limit: The limit number of cached resources */ typedef struct ze_publication_cache_options_t { struct z_keyexpr_t queryable_prefix; enum zcu_locality_t queryable_origin; + bool queryable_complete; size_t history; size_t resources_limit; } ze_publication_cache_options_t; diff --git a/src/info.rs b/src/info.rs index 237a62dbb..326b468bb 100644 --- a/src/info.rs +++ b/src/info.rs @@ -13,6 +13,7 @@ // use crate::{session::*, z_closure_zid_call, z_owned_closure_zid_t}; use zenoh::prelude::sync::SyncResolve; +use zenoh::SessionDeclarations; use zenoh_protocol::core::ZenohId; /// Represents a Zenoh ID. diff --git a/src/publication_cache.rs b/src/publication_cache.rs index 701dff31a..5b96a904c 100644 --- a/src/publication_cache.rs +++ b/src/publication_cache.rs @@ -29,12 +29,14 @@ use crate::{ /// z_keyexpr_t queryable_prefix: The prefix used for queryable /// zcu_locality_t queryable_origin: The restriction for the matching queries that will be receive by this /// publication cache +/// bool queryable_complete: the `complete` option for the queryable /// size_t history: The the history size /// size_t resources_limit: The limit number of cached resources #[repr(C)] pub struct ze_publication_cache_options_t { pub queryable_prefix: z_keyexpr_t, pub queryable_origin: zcu_locality_t, + pub queryable_complete: bool, pub history: usize, pub resources_limit: usize, } @@ -45,6 +47,7 @@ pub extern "C" fn ze_publication_cache_options_default() -> ze_publication_cache ze_publication_cache_options_t { queryable_prefix: z_keyexpr_t::null(), queryable_origin: zcu_locality_default(), + queryable_complete: false, history: 1, resources_limit: 0, } @@ -133,6 +136,7 @@ pub extern "C" fn ze_declare_publication_cache( if let Some(options) = options { p = p.history(options.history); p = p.queryable_allowed_origin(options.queryable_origin.into()); + p = p.queryable_complete(options.queryable_complete); if options.resources_limit != 0 { p = p.resources_limit(options.resources_limit) }