Weave documentation
Strand Blobs

Writer and Reader

Actual AsyncWrite/AsyncRead interfaces and finalization behavior.

BlobStore::create_writer(metadata) returns a BlobWriter implementing Tokio AsyncWrite. Use AsyncWriteExt::write_all, flush and shutdown; there are no write_chunk or finish methods. shutdown writes the remaining chunk and blob metadata. The writer exposes bytes_written() and chunks_written(), but does not return a BlobId from shutdown.

For callers that need the ID directly, prefer BlobStore::put(reader, metadata).await, which returns BlobId. get(&id).await returns Option<BlobReader>. The reader implements AsyncRead and exposes size, id and metadata; read_to_end allocates memory for the full resulting payload.

The streaming writer buffers chunks, but its current shutdown implementation does not propagate a ready error returned by its initial flush poll before proceeding. Finalization should not be described as an independently verified durable commit. Re-read the stored blob and handle errors before treating an ingestion as complete.

Source declarations · Source declarations