//! 块存储设备层:段文件设备 ([`SegmentedDevice`])、Direct I/O 与设备抽象 ([`Device`])。
//!
//! ## 持久化契约(wedb_wal / wedb_hlog 等调用方依赖)
//!
//! - [`Device::sync`] / [`Device::sync_data`]:对调用线程已缓存的段句柄执行
//!   fsync/fdatasync(thread-per-core 亲和,仅覆盖本线程 I/O)。
//! - 目录项持久化:段文件由设备层创建时会同步 fsync 其父目录(Unix 平台
//!   open(dir) + fsync 一次性成本;Windows 平台不支持,见 segmented_device
//!   模块内说明),因此 sync 返回后"新段写入 + sync 即持久"的承诺同时覆盖
//!   段数据与新建段的目录项,调用方无需自行刷盘目录。
//! - 新建段后的父目录 fsync 执行次数可通过 `SegmentedDevice::dir_syncs` 计数器观测。

#![cfg_attr(docsrs, feature(doc_cfg))]

mod chunk;
mod device;
mod error;
mod null;
mod segmented_device;
mod sys;

pub use chunk::{SegmentChunk, SegmentChunks};
pub use device::{Device, StorageDevice};
pub use error::{Error, Result};
pub use null::NullDevice;
pub use segmented_device::{FileMap, SegmentedDevice};
pub use sys::{
  FALLBACK_CPU_CORES, FALLBACK_SYSTEM_MEMORY_BYTES, MAX_SEGMENT_SIZE, detect_cpu_cores,
  detect_system_memory,
};
pub use wram::BufferPool;