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 = [
"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]]
name = "fragile"
version = "1.0.0"
......@@ -967,6 +979,12 @@ dependencies = [
"waker-fn",
]
[[package]]
name = "futures-sink"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d8764258ed64ebc5d9ed185cf86a95db5cac810269c5d20ececb32e0088abbd"
[[package]]
name = "fxhash"
version = "0.2.1"
......@@ -1129,10 +1147,9 @@ dependencies = [
name = "kv_typed"
version = "0.1.0"
dependencies = [
"async-channel",
"async-std",
"criterion",
"crossbeam-channel",
"flume",
"kv_typed_code_gen",
"leveldb_minimal",
"maybe-async",
......@@ -1655,6 +1672,12 @@ dependencies = [
"winapi",
]
[[package]]
name = "ppv-lite86"
version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20"
[[package]]
name = "predicates"
version = "1.0.5"
......@@ -1739,6 +1762,29 @@ dependencies = [
"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]]
name = "rand_core"
version = "0.3.1"
......@@ -1754,6 +1800,24 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
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]]
name = "rayon"
version = "1.4.1"
......@@ -2075,6 +2139,15 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
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]]
name = "strsim"
version = "0.8.0"
......@@ -2152,7 +2225,7 @@ version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"
dependencies = [
"rand",
"rand 0.4.6",
"remove_dir_all",
]
......
......@@ -12,8 +12,7 @@ edition = "2018"
path = "src/lib.rs"
[dependencies]
async-channel = { version = "1.4.2", optional = true }
crossbeam-channel = { version = "0.4.4", optional = true }
flume = "0.9.1"
kv_typed_code_gen = { path = "../kv_typed_code_gen" }
leveldb_minimal = { version = "0.1.0", optional = true }
mockall = { version = "0.8.0", optional = true }
......@@ -43,13 +42,13 @@ criterion = { version = "0.3.1" }
[features]
default = ["memory_backend"]
async = ["async-channel"]
async = []
explorer = ["rayon", "regex", "serde_json"]
leveldb_backend = ["leveldb_minimal"]
memory_backend = ["parking_lot"]
sled_backend = ["sled"]
subscription = ["parking_lot"]
sync = ["crossbeam-channel"]
sync = []
mock = ["mockall"]
......
......@@ -44,10 +44,7 @@ mod utils;
mod value;
// Re-export dependencies
#[cfg(feature = "async")]
pub use async_channel as channel;
#[cfg(all(not(feature = "async"), feature = "sync"))]
pub use crossbeam_channel as channel;
pub use flume as channel;
#[cfg(feature = "explorer")]
pub use regex;
pub use zerocopy;
......@@ -98,11 +95,7 @@ pub(crate) use crate::prelude::*;
pub(crate) use crate::subscription::ColSubscribers;
pub(crate) use crate::utils::arc::Arc;
pub(crate) use crate::utils::ivec::IVec;
#[cfg(feature = "async")]
use async_channel::{unbounded, Receiver, Sender, TrySendError};
#[cfg(all(not(feature = "async"), feature = "sync"))]
#[allow(unused_imports)]
use crossbeam_channel::{unbounded, Receiver, Sender, TrySendError};
use flume::{unbounded, Receiver, Sender, TrySendError};
pub(crate) use smallvec::SmallVec;
pub(crate) use std::{
collections::{BTreeSet, HashSet},
......
......@@ -32,8 +32,9 @@ mod tests {
]
);
#[maybe_async::test(not(feature = "async"), async(feature = "async", async_std::test))]
async fn test_db_schema() -> KvResult<()> {
//#[maybe_async::test(not(feature = "async"), async(feature = "async", async_std::test))]
#[test]
fn test_db_schema() -> KvResult<()> {
let db = TestV1Db::<Mem>::open(MemConf::default())?;
#[cfg(feature = "subscription")]
......@@ -53,7 +54,7 @@ mod tests {
value: "toto".to_owned(),
}];
#[allow(unused_parens)]
if let Ok(msg) = recv.recv().await {
if let Ok(msg) = recv.recv() {
assert_eq!(msg.as_ref(), &expected_events,)
} else {
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