diff --git a/Cargo.lock b/Cargo.lock index 544e428e2..918eb85d9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -371,7 +371,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -487,9 +487,9 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jiff" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c607c728e28764fecde611a2764a3a5db19ae21dcec46f292244f5cc5c085a81" +checksum = "c04ef77ae73f3cf50510712722f0c4e8b46f5aaa1bf5ffad2ae213e6495e78e5" dependencies = [ "jiff-tzdb-platform", "log", @@ -898,14 +898,14 @@ checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] name = "serde_json" -version = "1.0.137" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ "itoa", "memchr", @@ -961,7 +961,7 @@ name = "struct_iterable_derive" version = "0.1.0" dependencies = [ "quote", - "syn 2.0.96", + "syn 2.0.98", ] [[package]] @@ -981,9 +981,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.96" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -1196,5 +1196,5 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.96", + "syn 2.0.98", ] diff --git a/Cargo.toml b/Cargo.toml index 947468aa0..d8e9bfe38 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ color-eyre = "0.6.3" derive_deref = "1.1.1" exit = { path = "exit" } fjall = "2.5.0" -jiff = "0.1.28" +jiff = "0.1.29" rayon = "1.10.0" storable_vec = { path = "storable_vec" } struct_iterable = { path = "struct_iterable" } diff --git a/iterator/Cargo.toml b/iterator/Cargo.toml index 853d673db..15a8700c5 100644 --- a/iterator/Cargo.toml +++ b/iterator/Cargo.toml @@ -13,7 +13,7 @@ bitcoin = { workspace = true } rayon = { workspace = true } crossbeam = { version = "0.8.4", features = ["crossbeam-channel"] } serde = { version = "1.0.217", features = ["derive"] } -serde_json = "1.0.137" +serde_json = "1.0.138" derive_deref = { workspace = true } bitcoincore-rpc = "0.19.0" # tokio = { version = "1.39.2", features = ["rt-multi-thread"] } diff --git a/storable_vec/src/error.rs b/storable_vec/src/enums/error.rs similarity index 100% rename from storable_vec/src/error.rs rename to storable_vec/src/enums/error.rs diff --git a/storable_vec/src/enums/mod.rs b/storable_vec/src/enums/mod.rs new file mode 100644 index 000000000..9198ca8e0 --- /dev/null +++ b/storable_vec/src/enums/mod.rs @@ -0,0 +1,5 @@ +mod error; +mod value; + +pub use error::*; +pub use value::*; diff --git a/storable_vec/src/value.rs b/storable_vec/src/enums/value.rs similarity index 100% rename from storable_vec/src/value.rs rename to storable_vec/src/enums/value.rs diff --git a/storable_vec/src/lib.rs b/storable_vec/src/lib.rs index 905c2d952..5613cb6a8 100644 --- a/storable_vec/src/lib.rs +++ b/storable_vec/src/lib.rs @@ -13,21 +13,28 @@ use std::{ use memmap2::{Mmap, MmapOptions}; use unsafe_slice_serde::UnsafeSliceSerde; -mod any; -// mod bytes; -mod error; -mod index; -mod type_; -mod value; -mod version; +mod enums; +mod structs; +mod traits; -pub use any::*; -// pub use bytes::*; -pub use error::*; -pub use index::*; -pub use type_::*; -pub use value::*; -pub use version::*; +pub use enums::*; +pub use structs::*; +pub use traits::*; + +/// Uses `Mmap` instead of `File` +/// +/// Used in `/indexer` +const CACHED: u8 = 0; + +/// Will use the same `File` for every read, so not thread safe +/// +/// Used in `/computer` +const RAW_SYNC: u8 = 1; + +/// Will spin up a new `File` for every read +/// +/// Used in `/server` +const RAW_ASYNC: u8 = 2; /// /// A very small, fast, efficient and simple storable Vec @@ -45,6 +52,7 @@ pub struct StorableVec { pathbuf: PathBuf, unsafe_file: File, cache: Vec>>, // Boxed Mmap to reduce the size of the Lock (from 24 to 16) + buf: Vec, disk_len: usize, pushed: Vec, // updated: BTreeMap, @@ -89,6 +97,7 @@ where pathbuf: path.to_owned(), disk_len: Self::disk_len(&unsafe_file)?, unsafe_file, + buf: vec![0; Self::SIZE_OF_T], cache: vec![], pushed: vec![], // updated: BTreeMap::new(), diff --git a/storable_vec/src/structs/mod.rs b/storable_vec/src/structs/mod.rs new file mode 100644 index 000000000..7a60bc383 --- /dev/null +++ b/storable_vec/src/structs/mod.rs @@ -0,0 +1,3 @@ +mod version; + +pub use version::*; diff --git a/storable_vec/src/version.rs b/storable_vec/src/structs/version.rs similarity index 100% rename from storable_vec/src/version.rs rename to storable_vec/src/structs/version.rs diff --git a/storable_vec/src/any.rs b/storable_vec/src/traits/any.rs similarity index 86% rename from storable_vec/src/any.rs rename to storable_vec/src/traits/any.rs index ec13a397a..22ff38e9c 100644 --- a/storable_vec/src/any.rs +++ b/storable_vec/src/traits/any.rs @@ -1,6 +1,8 @@ use std::io; -use crate::{StorableVec, StorableVecIndex, StorableVecType}; +use crate::StorableVec; + +use super::{StorableVecIndex, StorableVecType}; pub trait AnyStorableVec { fn len(&self) -> usize; diff --git a/storable_vec/src/bytes.rs b/storable_vec/src/traits/bytes.rs similarity index 100% rename from storable_vec/src/bytes.rs rename to storable_vec/src/traits/bytes.rs diff --git a/storable_vec/src/index.rs b/storable_vec/src/traits/index.rs similarity index 100% rename from storable_vec/src/index.rs rename to storable_vec/src/traits/index.rs diff --git a/storable_vec/src/traits/mod.rs b/storable_vec/src/traits/mod.rs new file mode 100644 index 000000000..2a8c9e8ae --- /dev/null +++ b/storable_vec/src/traits/mod.rs @@ -0,0 +1,8 @@ +mod any; +// mod bytes; +mod index; +mod type_; + +pub use any::*; +pub use index::*; +pub use type_::*; diff --git a/storable_vec/src/type_.rs b/storable_vec/src/traits/type_.rs similarity index 100% rename from storable_vec/src/type_.rs rename to storable_vec/src/traits/type_.rs diff --git a/struct_iterable/struct_iterable_derive/Cargo.toml b/struct_iterable/struct_iterable_derive/Cargo.toml index 3f591a895..a48babad4 100644 --- a/struct_iterable/struct_iterable_derive/Cargo.toml +++ b/struct_iterable/struct_iterable_derive/Cargo.toml @@ -11,5 +11,5 @@ proc-macro = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -syn = "2.0.96" +syn = "2.0.98" quote = "1.0.38"