pub struct StreamPolicy {
pub max_bytes: u64,
pub extensions: Option<Vec<String>>,
pub max_bytes_by_kind: BTreeMap<String, u64>,
pub observer: Option<StreamObserver>,
}Expand description
Policy for what a stream scheme will serve.
Fields§
§max_bytes: u64Largest file served (bytes) when no per-kind cap applies.
extensions: Option<Vec<String>>Lowercase extensions served; None serves any type the mime table knows.
max_bytes_by_kind: BTreeMap<String, u64>Per-kind size caps (bytes). A key is an extension ("mov", a leading dot is optional), a full
MIME type ("application/pdf") or a MIME family ("video" or "video/*"). Lookup order is
extension, then full MIME, then family; a file matching no key uses max_bytes. Empty by
default, so behaviour is unchanged until a cap is added with StreamPolicy::with_kind_cap.
observer: Option<StreamObserver>Optional observer of served requests; None (the default) costs one branch per request. Set
it with StreamPolicy::observer.
Implementations§
Source§impl StreamPolicy
impl StreamPolicy
Sourcepub fn with_kind_cap(self, kind: &str, max_bytes: u64) -> Self
pub fn with_kind_cap(self, kind: &str, max_bytes: u64) -> Self
Add or replace a per-kind cap. kind follows the key rules of
StreamPolicy::max_bytes_by_kind.
Sourcepub fn observer(self, f: impl Fn(&StreamEvent) + Send + Sync + 'static) -> Self
pub fn observer(self, f: impl Fn(&StreamEvent) + Send + Sync + 'static) -> Self
Observe requests served under this policy: resolved size, HEAD, range served, full served,
rejected range and bytes read (see StreamEventKind). A panicking observer is contained.
Sourcepub fn max_bytes_for(&self, path: &Path) -> u64
pub fn max_bytes_for(&self, path: &Path) -> u64
The size cap that applies to path: the most specific per-kind entry, else max_bytes.