3个版本
0.1.2 | 2023年5月23日 |
---|---|
0.1.1 | 2023年5月6日 |
0.1.0 | 2023年4月30日 |
#11 in #chunking
41 每月下载量
345KB
458 行
carbites
对CAR文件进行分块。将单个CAR分割成多个CAR。
原始实现来自go-carbites。
用法
Carbites支持树遍历策略
树遍历 - 遍历DAG,将子图打包到每个输出的CAR文件中。每个CAR文件都有相同的根CID,但包含DAG的不同部分。从根节点遍历DAG,按顺序解码每个块并提取链接,以确定要包含在每个CAR中的子图。
use carbites::{new_splitter, CarSplitter, Strategy};
use std::io::Write;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let file = std::fs::File::open("examples/test.car")?;
let mut splitter = new_splitter(Strategy::Treewalk, file, 1024);
let mut i = 0;
while let Some(chunk) = splitter.next_chunk()? {
let mut file = std::fs::File::create(format!("target/chunk-{}.car", i))?;
file.write(&chunk)?;
i += 1;
}
Ok(())
}
待办事项
- 添加对简单策略的支持(见下文)
简单 - 快速但简单,只有第一个CAR输出有根CID,后续的CAR有占位符“空”CID。第一个CAR输出在头部有根,后续的CAR有空的根CID bafkqaaa
如推荐。
许可证
许可协议为以下之一
- Apache License,版本2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
任选其一。
依赖项
~3MB
~60K SLoC