libxr
Embedded C++ framework for bare-metal, RTOS and Linux
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{
11
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;
58
59 // 存储布局定义:块角色、位图编码、键头与块头。
60 // Storage layout definitions: block roles, bitmap encodings, key headers,
61 // and block headers.
62#include "layout.hpp"
63
68 size_t recycle_threshold_ = 0;
69
74 Flash& flash_;
75
80 uint32_t block_size_;
81
90 uint8_t write_buffer_[MinWriteSize];
91
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"
106
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 restric...
Definition raw.hpp:37
抽象基类,表示闪存接口。 Abstract base class representing a flash memory interface.
Definition flash.hpp:32
LibXR 命名空间 / LibXR namespace.
Definition ch32_can.hpp:14
static constexpr uint16_t LIBXR_DATABASE_VERSION
数据库存储格式版本号 Database storage-format version.
Definition interface.hpp:17