Files
chanora/crates/chanora_cache/README.md
T
Edison Jwa 01a4a9ed28 docs: add README files to 9 crates and update verification plan (TODO-030,036)
Add purpose, architecture, and public API summary to each crate
README following chanora_resolver pattern. Update verification master
plan with new evidence sources and entry/exit criteria.
2026-06-11 11:09:12 +09:00

1.6 KiB

chanora_cache

Disposable content-addressed blob cache for avatar and icon files. Wraps cacache for crash safety and integrity verification. Separated from chanora_storage because cache owns reconstructible, disposable blob data with different durability and backup semantics.

Architecture

  • BlobCache — async blob store backed by cacache's content-v2 / index-v2 on-disk layout.
  • Keys are protocol identifiers prefixed by type: av_<32-char-hex> for avatars (MD5), ic_<decimal> for icons (CRC32).
  • Cacache handles dedup and SSRI integrity verification on every read.
  • Corrupt entries are automatically removed on read failure.
  • LRU eviction by timestamp when total size exceeds the configured cap.

Public API Summary

Types

Type Role
BlobCache Content-addressed blob cache
BlobCacheError Io, InvalidKey

Key methods on BlobCache

  • new(cache_dir, max_bytes) — create or open the cache. max_bytes = 0 disables eviction.
  • put(prefix, key, data) — store a blob (async)
  • get(prefix, key)Option<Vec<u8>> — read a blob, with integrity check (async)
  • remove(prefix, key) — delete a specific blob (async)
  • clear() — delete all blobs (async)
  • total_size()u64 — sum of all blob sizes (async)
  • evict() — remove oldest entries until under max_bytes cap (async)

Constants

  • PREFIX_AVATAR = "av_" — avatar key prefix
  • PREFIX_ICON = "ic_" — icon key prefix

Key validation

Avatar keys must be exactly 32 hex characters. Icon keys must be non-empty decimal digits. Unknown prefixes are rejected. This prevents malformed entries from polluting the cache.