pub struct StreamSink<'a> { /* private fields */ }Expand description
Generic PackSink over any StreamStore: buffers one obj payload at
a time in memory, then files it via the store’s verify-before-write
put_object (so the store’s own integrity
discipline re-checks the commit). Use FileSink for file://-rooted
sinks to get O(1) memory per record.
Implementations§
Source§impl<'a> StreamSink<'a>
impl<'a> StreamSink<'a>
Sourcepub fn new(store: &'a dyn StreamStore) -> Self
pub fn new(store: &'a dyn StreamStore) -> Self
Wraps store as a pack sink.
Trait Implementations§
Source§impl PackSink for StreamSink<'_>
impl PackSink for StreamSink<'_>
Source§fn has_object(&mut self, checksum: &str) -> Result<bool, StoreError>
fn has_object(&mut self, checksum: &str) -> Result<bool, StoreError>
Returns
true when the sink already holds checksum (the record’s
bytes will then be verified-and-discarded rather than re-written).Source§fn stage_object(
&mut self,
checksum: &str,
len: u64,
payload: &mut dyn Read,
) -> Result<(), StoreError>
fn stage_object( &mut self, checksum: &str, len: u64, payload: &mut dyn Read, ) -> Result<(), StoreError>
Stages the payload for
checksum by reading payload to EOF (the
reader has already limited it to exactly len bytes). Must not make
the object observable at its final address yet. On error the sink must
clean up after itself or tolerate the follow-up
abort_object call.Source§fn commit_object(&mut self, checksum: &str) -> Result<(), StoreError>
fn commit_object(&mut self, checksum: &str) -> Result<(), StoreError>
Commits the staged payload at its (reader-verified) content-address.
Source§fn abort_object(&mut self, _checksum: &str)
fn abort_object(&mut self, _checksum: &str)
Discards any staged payload for
checksum, leaving no trace (best
effort; must tolerate nothing being staged).Source§fn put_manifest(
&mut self,
id: &str,
manifest: &Manifest,
) -> Result<(), StoreError>
fn put_manifest( &mut self, id: &str, manifest: &Manifest, ) -> Result<(), StoreError>
Commits the manifest under
id. Called only after the end trailer of
a fully verified stream (manifest-last survives truncation).Auto Trait Implementations§
impl<'a> !RefUnwindSafe for StreamSink<'a>
impl<'a> !Send for StreamSink<'a>
impl<'a> !Sync for StreamSink<'a>
impl<'a> !UnwindSafe for StreamSink<'a>
impl<'a> Freeze for StreamSink<'a>
impl<'a> Unpin for StreamSink<'a>
impl<'a> UnsafeUnpin for StreamSink<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestCreates a shared type from an unshared type.