mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-02-01 18:44:58 -05:00
32 lines
929 B
Rust
32 lines
929 B
Rust
//! Utils crate for `db`.
|
|
|
|
use std::path::Path;
|
|
|
|
/// Returns the default page size that can be used in this OS.
|
|
pub(crate) fn default_page_size() -> usize {
|
|
let os_page_size = page_size::get();
|
|
|
|
// source: https://gitflic.ru/project/erthink/libmdbx/blob?file=mdbx.h#line-num-821
|
|
let libmdbx_max_page_size = 0x10000;
|
|
|
|
// May lead to errors if it's reduced further because of the potential size of the
|
|
// data.
|
|
let min_page_size = 4096;
|
|
|
|
os_page_size.clamp(min_page_size, libmdbx_max_page_size)
|
|
}
|
|
|
|
/// Check if a db is empty. It does not provide any information on the
|
|
/// validity of the data in it. We consider a database as non empty when it's a non empty directory.
|
|
pub fn is_database_empty<P: AsRef<Path>>(path: P) -> bool {
|
|
let path = path.as_ref();
|
|
|
|
if !path.exists() {
|
|
true
|
|
} else if let Ok(dir) = path.read_dir() {
|
|
dir.count() == 0
|
|
} else {
|
|
true
|
|
}
|
|
}
|