1#![doc = include_str!("../README.md")]
5pub mod circular_buffer;
6mod config;
7mod error;
8mod fs;
9mod nodes;
10mod wal;
11
12#[cfg(any(
13 feature = "metrics",
14 feature = "metrics-rt",
15 feature = "metrics-rt-debug-all",
16 feature = "metrics-rt-debug-timer"
17))]
18pub mod metric;
19
20mod mini_page_op;
21mod range_scan;
22mod storage;
23pub(crate) mod sync;
24#[cfg(test)]
25mod tests;
26
27mod snapshot;
28mod tree;
29mod utils;
30
31pub use config::{Config, StorageBackend, WalConfig};
32pub use nodes::leaf_node::LeafReadResult;
33pub use range_scan::ScanIter;
34pub use tree::{BfTree, LeafInsertResult};
35pub use wal::WalReader;
36
37#[macro_export]
38macro_rules! info {
39 ($($arg:tt)*) => {
40 #[cfg(all(feature = "tracing", debug_assertions))]
41 {
42 tracing::info!($($arg)*);
43 }
44
45 #[cfg(not(all(feature = "tracing", debug_assertions)))]
46 {
47 }
48 };
49}
50
51#[macro_export]
52macro_rules! counter {
53 ($event:ident) => {
54 #[cfg(feature = "metrics-rt")]
55 {
56 $crate::metric::get_tls_recorder()
57 .increment_counter($crate::metric::Counter::$event, 1);
58 }
59 };
60 ($event:ident, $value:literal) => {
61 #[cfg(feature = "metrics-rt")]
62 {
63 $crate::metric::get_tls_recorder()
64 .increment_counter($crate::metric::Counter::$event, $value);
65 }
66 };
67}
68
69#[macro_export]
70macro_rules! histogram {
71 ($event:ident, $value:expr) => {
72 #[cfg(feature = "metrics-rt")]
73 {
74 $crate::metric::get_tls_recorder()
75 .hit_histogram($crate::metric::Histogram::$event, $value);
76 }
77 };
78}
79
80#[macro_export]
81macro_rules! timer {
82 ($event:expr) => {
83 let _timer_guard = if cfg!(feature = "metrics-rt") {
84 Some($crate::metric::get_tls_recorder().timer_guard($event))
85 } else {
86 None
87 };
88 };
89}
90
91#[macro_export]
92macro_rules! check_parent {
93 ($self:ident, $node:expr, $parent:expr) => {
94 if let Some(ref p) = $parent {
95 p.check_version()?;
96 } else if $node != $self.get_root_page().0 {
97 return Err(TreeError::Locked);
98 }
99 };
100}