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 error::ConfigError;
33pub use nodes::leaf_node::LeafReadResult;
34pub use range_scan::{ScanIter, ScanReturnField};
35pub use tree::{BfTree, LeafInsertResult, ScanIterError};
36pub use wal::WalReader;
37
38#[macro_export]
39macro_rules! info {
40 ($($arg:tt)*) => {
41 #[cfg(all(feature = "tracing", debug_assertions))]
42 {
43 tracing::info!($($arg)*);
44 }
45
46 #[cfg(not(all(feature = "tracing", debug_assertions)))]
47 {
48 }
49 };
50}
51
52#[macro_export]
53macro_rules! counter {
54 ($event:ident) => {
55 #[cfg(feature = "metrics-rt")]
56 {
57 $crate::metric::get_tls_recorder()
58 .increment_counter($crate::metric::Counter::$event, 1);
59 }
60 };
61 ($event:ident, $value:literal) => {
62 #[cfg(feature = "metrics-rt")]
63 {
64 $crate::metric::get_tls_recorder()
65 .increment_counter($crate::metric::Counter::$event, $value);
66 }
67 };
68}
69
70#[macro_export]
71macro_rules! histogram {
72 ($event:ident, $value:expr) => {
73 #[cfg(feature = "metrics-rt")]
74 {
75 $crate::metric::get_tls_recorder()
76 .hit_histogram($crate::metric::Histogram::$event, $value);
77 }
78 };
79}
80
81#[macro_export]
82macro_rules! timer {
83 ($event:expr) => {
84 let _timer_guard = if cfg!(feature = "metrics-rt") {
85 Some($crate::metric::get_tls_recorder().timer_guard($event))
86 } else {
87 None
88 };
89 };
90}
91
92#[macro_export]
93macro_rules! check_parent {
94 ($self:ident, $node:expr, $parent:expr) => {
95 if let Some(ref p) = $parent {
96 p.check_version()?;
97 } else if $node != $self.get_root_page().0 {
98 return Err(TreeError::Locked);
99 }
100 };
101}