Available on crate feature
server only.Expand description
The streaming HTTP handler: a blanket StorageProxyHandler over any
StorageProxyBackend.
This is where all the wire semantics live — Range → 206/Content-Range,
ETag/Accept-Ranges relay, If-Match → conditional PUT → 412, and
bounded-memory streaming in both directions. A backend implementer never
touches any of it; they only authorize and open a store.
§Memory
GET/HEADstream the object store’s [GetResult] straight into the axum response body viaaxum::body::Body::from_stream; the whole object is never materialized.PUTwith noIf-Matchstreams the request body through aWriteMultipart, flushing fixed-size parts — bounded regardless of object size.PUTwithIf-Matchis an inherently single-request conditional write on the cloud side, so the body is buffered under a hard cap (MAX_BUFFERED_PUT); this path is for the small_delta_logcommit files the wasm write path conditionally writes.
Constants§
- MAX_
BUFFERED_ PUT - Hard cap on the body buffered for a conditional (
If-Match)PUT. A conditional write is a single cloud request, so the body cannot be streamed as multipart; the cap bounds proxy memory. Sized generously for Delta commit files (the only conditional writes the wasm path issues) while rejecting a runaway upload with413.
Traits§
- Storage
Proxy Handler - The HTTP-facing surface produced by the blanket impl below. A host router
dispatches to these three methods; each returns a fully-formed axum
Response(streaming forGET), or aProxyErrorthe router turns into a response.
Functions§
- parse_
if_ match - Extract the
If-Matchheader value (if any) for a conditionalPUT. - parse_
range - Parse an HTTP
Rangeheader value into anobject_store::GetRange.