Expand description
BlockSource:密文块的统一来源抽象。
对应设计文档 11 号 §1.2。 本地文件、分片集合、容器条目、局域网远程设备都实现同一个 trait, 使播放器、缩略图、扫描逻辑只写一遍。
这个抽象直接决定决策 D-04(局域网只传密文)能否干净落地—— 远程实现返回的就是密文,解密统一在上层完成,服务端永不接触明文。
§与设计文档的一处偏离
文档给出的草案是 #[async_trait]。此处实现为同步 trait,理由:
payload::read_range是纯 CPU 的解密逻辑。 若BlockSource为异步,会迫使它连带异步化,进而污染整条调用链。omy-core是 MIT OR Apache-2.0 且要保持轻量,不应引入 async 运行时依赖。- CLI 是同步程序,异步会凭空增加复杂度。
远程实现(omy-net)在自己内部桥接异步即可——它本就需要运行时,
由它承担这个成本比让 core 承担更合理。GUI 侧在后台线程调用,不阻塞 UI。
Structs§
- Container
Entry View - 容器内单个条目的视图。
- Local
File Source - 本地文件,按需 seek 读取,不整体载入内存。
- Memory
Source - 内存中的完整文件。测试与小文件场景使用。
Traits§
- Block
Source - 密文块来源。
Functions§
- decrypt_
to_ sink - 把整个明文按窗口解密并交给
sink,内存占用与文件大小无关。 - read_
source_ range - 通过
BlockSource读取明文区间。