Skip to content
Snippets Groups Projects
Commit 2f91f472 authored by Éloïs's avatar Éloïs
Browse files

[ref] kv_typed: use flume channels for subscription

parent ecc1a7c9
No related branches found
No related tags found
No related merge requests found
...@@ -903,6 +903,18 @@ dependencies = [ ...@@ -903,6 +903,18 @@ dependencies = [
"num-traits", "num-traits",
] ]
[[package]]
name = "flume"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9e818efa7776f4dd7df0e542f877f7a5a87bddd6a1a10f59a7732b71ffb9d55"
dependencies = [
"futures-core",
"futures-sink",
"rand 0.7.3",
"spinning_top",
]
[[package]] [[package]]
name = "fragile" name = "fragile"
version = "1.0.0" version = "1.0.0"
...@@ -967,6 +979,12 @@ dependencies = [ ...@@ -967,6 +979,12 @@ dependencies = [
"waker-fn", "waker-fn",
] ]
[[package]]
name = "futures-sink"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d8764258ed64ebc5d9ed185cf86a95db5cac810269c5d20ececb32e0088abbd"
[[package]] [[package]]
name = "fxhash" name = "fxhash"
version = "0.2.1" version = "0.2.1"
...@@ -1129,10 +1147,9 @@ dependencies = [ ...@@ -1129,10 +1147,9 @@ dependencies = [
name = "kv_typed" name = "kv_typed"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"async-channel",
"async-std", "async-std",
"criterion", "criterion",
"crossbeam-channel", "flume",
"kv_typed_code_gen", "kv_typed_code_gen",
"leveldb_minimal", "leveldb_minimal",
"maybe-async", "maybe-async",
...@@ -1655,6 +1672,12 @@ dependencies = [ ...@@ -1655,6 +1672,12 @@ dependencies = [
"winapi", "winapi",
] ]
[[package]]
name = "ppv-lite86"
version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20"
[[package]] [[package]]
name = "predicates" name = "predicates"
version = "1.0.5" version = "1.0.5"
...@@ -1739,6 +1762,29 @@ dependencies = [ ...@@ -1739,6 +1762,29 @@ dependencies = [
"winapi", "winapi",
] ]
[[package]]
name = "rand"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
dependencies = [
"getrandom",
"libc",
"rand_chacha",
"rand_core 0.5.1",
"rand_hc",
]
[[package]]
name = "rand_chacha"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
dependencies = [
"ppv-lite86",
"rand_core 0.5.1",
]
[[package]] [[package]]
name = "rand_core" name = "rand_core"
version = "0.3.1" version = "0.3.1"
...@@ -1754,6 +1800,24 @@ version = "0.4.2" ...@@ -1754,6 +1800,24 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
[[package]]
name = "rand_core"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
dependencies = [
"getrandom",
]
[[package]]
name = "rand_hc"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
dependencies = [
"rand_core 0.5.1",
]
[[package]] [[package]]
name = "rayon" name = "rayon"
version = "1.4.1" version = "1.4.1"
...@@ -2075,6 +2139,15 @@ version = "0.5.2" ...@@ -2075,6 +2139,15 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
[[package]]
name = "spinning_top"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e529d73e80d64b5f2631f9035113347c578a1c9c7774b83a2b880788459ab36"
dependencies = [
"lock_api 0.4.1",
]
[[package]] [[package]]
name = "strsim" name = "strsim"
version = "0.8.0" version = "0.8.0"
...@@ -2152,7 +2225,7 @@ version = "0.3.7" ...@@ -2152,7 +2225,7 @@ version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"
dependencies = [ dependencies = [
"rand", "rand 0.4.6",
"remove_dir_all", "remove_dir_all",
] ]
......
...@@ -12,8 +12,7 @@ edition = "2018" ...@@ -12,8 +12,7 @@ edition = "2018"
path = "src/lib.rs" path = "src/lib.rs"
[dependencies] [dependencies]
async-channel = { version = "1.4.2", optional = true } flume = "0.9.1"
crossbeam-channel = { version = "0.4.4", optional = true }
kv_typed_code_gen = { path = "../kv_typed_code_gen" } kv_typed_code_gen = { path = "../kv_typed_code_gen" }
leveldb_minimal = { version = "0.1.0", optional = true } leveldb_minimal = { version = "0.1.0", optional = true }
mockall = { version = "0.8.0", optional = true } mockall = { version = "0.8.0", optional = true }
...@@ -43,13 +42,13 @@ criterion = { version = "0.3.1" } ...@@ -43,13 +42,13 @@ criterion = { version = "0.3.1" }
[features] [features]
default = ["memory_backend"] default = ["memory_backend"]
async = ["async-channel"] async = []
explorer = ["rayon", "regex", "serde_json"] explorer = ["rayon", "regex", "serde_json"]
leveldb_backend = ["leveldb_minimal"] leveldb_backend = ["leveldb_minimal"]
memory_backend = ["parking_lot"] memory_backend = ["parking_lot"]
sled_backend = ["sled"] sled_backend = ["sled"]
subscription = ["parking_lot"] subscription = ["parking_lot"]
sync = ["crossbeam-channel"] sync = []
mock = ["mockall"] mock = ["mockall"]
......
...@@ -44,10 +44,7 @@ mod utils; ...@@ -44,10 +44,7 @@ mod utils;
mod value; mod value;
// Re-export dependencies // Re-export dependencies
#[cfg(feature = "async")] pub use flume as channel;
pub use async_channel as channel;
#[cfg(all(not(feature = "async"), feature = "sync"))]
pub use crossbeam_channel as channel;
#[cfg(feature = "explorer")] #[cfg(feature = "explorer")]
pub use regex; pub use regex;
pub use zerocopy; pub use zerocopy;
...@@ -98,11 +95,7 @@ pub(crate) use crate::prelude::*; ...@@ -98,11 +95,7 @@ pub(crate) use crate::prelude::*;
pub(crate) use crate::subscription::ColSubscribers; pub(crate) use crate::subscription::ColSubscribers;
pub(crate) use crate::utils::arc::Arc; pub(crate) use crate::utils::arc::Arc;
pub(crate) use crate::utils::ivec::IVec; pub(crate) use crate::utils::ivec::IVec;
#[cfg(feature = "async")] use flume::{unbounded, Receiver, Sender, TrySendError};
use async_channel::{unbounded, Receiver, Sender, TrySendError};
#[cfg(all(not(feature = "async"), feature = "sync"))]
#[allow(unused_imports)]
use crossbeam_channel::{unbounded, Receiver, Sender, TrySendError};
pub(crate) use smallvec::SmallVec; pub(crate) use smallvec::SmallVec;
pub(crate) use std::{ pub(crate) use std::{
collections::{BTreeSet, HashSet}, collections::{BTreeSet, HashSet},
......
...@@ -32,8 +32,9 @@ mod tests { ...@@ -32,8 +32,9 @@ mod tests {
] ]
); );
#[maybe_async::test(not(feature = "async"), async(feature = "async", async_std::test))] //#[maybe_async::test(not(feature = "async"), async(feature = "async", async_std::test))]
async fn test_db_schema() -> KvResult<()> { #[test]
fn test_db_schema() -> KvResult<()> {
let db = TestV1Db::<Mem>::open(MemConf::default())?; let db = TestV1Db::<Mem>::open(MemConf::default())?;
#[cfg(feature = "subscription")] #[cfg(feature = "subscription")]
...@@ -53,7 +54,7 @@ mod tests { ...@@ -53,7 +54,7 @@ mod tests {
value: "toto".to_owned(), value: "toto".to_owned(),
}]; }];
#[allow(unused_parens)] #[allow(unused_parens)]
if let Ok(msg) = recv.recv().await { if let Ok(msg) = recv.recv() {
assert_eq!(msg.as_ref(), &expected_events,) assert_eq!(msg.as_ref(), &expected_events,)
} else { } else {
panic!("must be receive event") panic!("must be receive event")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment