使用React js完成web前端
This commit is contained in:
1 parent
9e8c5f1ef0
commit
7600f0f9ed
130 files changed
+12708
-788
No files matched your search
@@ -6,32 +6,20 @@ use crate::log::Level;
|
||||
|
||||
// 配置:环境变量优先于 TOML,最后回退内置默认值。
|
||||
|
||||
// 默认值
|
||||
/// 默认配置文件路径
|
||||
pub const DEFAULT_CONFIG_PATH: &str = "chusql-storage.toml";
|
||||
|
||||
/// 默认池容量(页数)
|
||||
pub const DEFAULT_POOL_SIZE: usize = 1024;
|
||||
/// 默认页大小
|
||||
pub const DEFAULT_PAGE_SIZE: usize = 4096;
|
||||
/// 默认 B+ 树 order
|
||||
pub const DEFAULT_BTREE_ORDER: usize = 4;
|
||||
/// 默认数据目录
|
||||
pub const DEFAULT_DATA_DIR: &str = "data";
|
||||
/// 默认管道名
|
||||
pub const DEFAULT_DATA_DIR: &str = "../localdata";
|
||||
pub const DEFAULT_PIPE_NAME: &str = "chusql-storage";
|
||||
/// 默认日志等级
|
||||
pub const DEFAULT_LOG_LEVEL: &str = "info";
|
||||
|
||||
/// 页大小允许范围
|
||||
const MIN_PAGE_SIZE: usize = 512;
|
||||
const MAX_PAGE_SIZE: usize = 65536;
|
||||
/// order 最小值
|
||||
const MIN_BTREE_ORDER: usize = 3;
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
// 配置
|
||||
/// 生效的配置
|
||||
pub struct Config {
|
||||
pub page_size: usize,
|
||||
pub btree_order: usize,
|
||||
@@ -41,7 +29,6 @@ pub struct Config {
|
||||
pub log_level: Level,
|
||||
}
|
||||
|
||||
/// 全默认值
|
||||
impl Default for Config {
|
||||
fn default() -> Self {
|
||||
Config {
|
||||
@@ -56,7 +43,6 @@ impl Default for Config {
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
/// 一个选项的来源
|
||||
pub enum Origin {
|
||||
Default,
|
||||
File(PathBuf),
|
||||
@@ -75,7 +61,6 @@ impl Origin {
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
/// 配置 + 每项来源
|
||||
pub struct Loaded {
|
||||
pub config: Config,
|
||||
pub config_path: Option<PathBuf>,
|
||||
@@ -84,8 +69,6 @@ pub struct Loaded {
|
||||
|
||||
#[derive(Debug, Default, Deserialize)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
// 文件形状
|
||||
/// TOML 的形状(字段都可选)
|
||||
struct FileConfig {
|
||||
page: Option<FilePage>,
|
||||
btree: Option<FileBtree>,
|
||||
@@ -97,47 +80,40 @@ struct FileConfig {
|
||||
|
||||
#[derive(Debug, Default, Deserialize)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
/// [buffer] 段
|
||||
struct FileBuffer {
|
||||
pool_size: Option<usize>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Deserialize)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
/// [page] 段
|
||||
struct FilePage {
|
||||
size: Option<usize>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Deserialize)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
/// [btree] 段
|
||||
struct FileBtree {
|
||||
order: Option<usize>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Deserialize)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
/// [storage] 段
|
||||
struct FileStorage {
|
||||
data_dir: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Deserialize)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
/// [server] 段
|
||||
struct FileServer {
|
||||
pipe_name: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Deserialize)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
/// [log] 段
|
||||
struct FileLog {
|
||||
level: Option<String>,
|
||||
}
|
||||
|
||||
// 加载
|
||||
/// 按真实环境加载
|
||||
pub fn load() -> Result<Loaded, String> {
|
||||
let path = match std::env::var("CHUSQL_CONFIG") {
|
||||
@@ -252,7 +228,7 @@ pub fn resolve(
|
||||
let origins = vec![
|
||||
("page.size", page_size.to_string(), page_origin),
|
||||
("btree.order", btree_order.to_string(), order_origin),
|
||||
("buffer.pool_size", pool_size.to_string(), pool_origin), // 新增
|
||||
("buffer.pool_size", pool_size.to_string(), pool_origin),
|
||||
("storage.data_dir", data_dir.clone(), dir_origin),
|
||||
("server.pipe_name", pipe_name.clone(), pipe_origin),
|
||||
("log.level", log_level.name().to_string(), log_origin),
|
||||
@@ -291,7 +267,6 @@ fn pick<T: Clone>(
|
||||
Ok((default, Origin::Default))
|
||||
}
|
||||
|
||||
// 校验
|
||||
/// 检查选项是否自洽
|
||||
fn validate_layout(page_size: usize, btree_order: usize) -> Result<(), String> {
|
||||
if !(MIN_PAGE_SIZE..=MAX_PAGE_SIZE).contains(&page_size) || !page_size.is_power_of_two() {
|
||||
|
||||
Reference in new issue
Block a user