libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
raw.hpp
1#pragma once
2
3#include <cstdint>
4#include <cstring>
5
6#include "flash.hpp"
7#include "interface.hpp"
8
9namespace LibXR
10{
35template <size_t MinWriteSize>
36class DatabaseRaw : public Database
37{
47 static constexpr uint32_t FLASH_HEADER = 0x12345678 + LIBXR_DATABASE_VERSION;
48
57 static constexpr uint32_t CHECKSUM_BYTE = 0x9abcedf0;
59 // 存储布局定义:块角色、位图编码、键头与块头。
60 // Storage layout definitions: block roles, bitmap encodings, key headers,
61 // and block headers.
62#include "layout.hpp"
63
69
75
80 uint32_t block_size_;
81
90 uint8_t write_buffer_[MinWriteSize];
92 // 底层 Flash 读写辅助:按最小写入单元对齐、补齐、复制。
93 // Low-level Flash I/O helpers: minimum-write-unit alignment, tail padding,
94 // and raw copying.
95#include "flash_io.hpp"
96
97 // 块级语义:初始化、校验、失效、已用空间计算和块间复制。
98 // Block-level semantics: initialization, validation, invalidation,
99 // used-space accounting, and block-to-block copying.
100#include "block_ops.hpp"
101
102 // 键级语义:查找、追加、逻辑更新、条目地址计算。
103 // Key-level semantics: lookup, append, logical replacement, and entry
104 // address calculations.
105#include "key_ops.hpp"
111 public:
112 // 对外生命周期与主流程:构造、初始化、读写、恢复、回收。
113 // Public lifecycle and main flow: construction, initialization, read/write,
114 // restore, and recycle.
115#include "lifecycle.hpp"
116};
117
118} // namespace LibXR
数据库接口,提供键值存储和管理功能 (Database interface providing key-value storage and management).
Definition interface.hpp:24
适用于最小写入单元受限的 Flash 存储的数据库实现 (Database implementation for Flash storage with minimum write unit restri...
Definition raw.hpp:37
static constexpr uint32_t FLASH_HEADER
当前 raw 后端使用的块头签名 / Block-header signature used by the current raw backend
Definition raw.hpp:47
uint32_t block_size_
当前主块和备份块各自占用的物理块大小 / Physical block size occupied by each of the main and backup blocks
Definition raw.hpp:80
static constexpr uint32_t CHECKSUM_BYTE
当前 raw 后端使用的块尾校验常量 / Trailing checksum constant used by the current raw backend
Definition raw.hpp:57
LIBXR_PACKED_END size_t recycle_threshold_
查找时触发回收的失效键阈值 / Tombstone threshold that triggers recycle during lookup
Definition raw.hpp:68
Flash & flash_
当前后端绑定的 Flash 设备引用 / Reference to the Flash device bound to this backend
Definition raw.hpp:74
uint8_t write_buffer_[MinWriteSize]
复用的最小写入单元临时缓冲区 / Reused scratch buffer sized to one minimum write unit
Definition raw.hpp:90
Abstract base class representing a flash memory interface. 抽象基类,表示闪存接口。
Definition flash.hpp:19
LibXR 命名空间
Definition ch32_can.hpp:14
static constexpr uint16_t LIBXR_DATABASE_VERSION
数据库存储格式版本号 (Database storage-format version).
Definition interface.hpp:17