pub struct PackEncoder { /* private fields */ }Expand description
A encoder for generating pack files with delta objects.
Implementations§
Source§impl PackEncoder
impl PackEncoder
pub fn new( object_number: usize, window_size: usize, sender: Sender<Vec<u8>>, ) -> Self
pub fn new_with_idx( object_number: usize, window_size: usize, pack_sender: Sender<Vec<u8>>, idx_sender: Sender<Vec<u8>>, ) -> Self
pub fn drop_sender(&mut self)
pub async fn send_data(&mut self, data: Vec<u8>)
Sourcepub fn get_hash(&self) -> Option<ObjectHash>
pub fn get_hash(&self) -> Option<ObjectHash>
Get the hash of the pack file. if the pack file is not finished, return None
Sourcepub async fn encode(
&mut self,
entry_rx: Receiver<MetaAttached<Entry, EntryMeta>>,
) -> Result<(), GitError>
pub async fn encode( &mut self, entry_rx: Receiver<MetaAttached<Entry, EntryMeta>>, ) -> Result<(), GitError>
Encodes entries into a pack file with delta objects and outputs them through the specified writer.
§Arguments
rx- A receiver channel (mpsc::Receiver<Entry>) from which entries to be encoded are received.
§Returns
Returns Ok(()) if encoding is successful, or a GitError in case of failure.
- Returns a
GitErrorif there is a failure during the encoding process. - Returns
PackEncodeErrorif an encoding operation is already in progress.
Sourcepub async fn encode_with_zstdelta(
&mut self,
entry_rx: Receiver<MetaAttached<Entry, EntryMeta>>,
) -> Result<(), GitError>
pub async fn encode_with_zstdelta( &mut self, entry_rx: Receiver<MetaAttached<Entry, EntryMeta>>, ) -> Result<(), GitError>
Encode with zstdelta
Sourcepub async fn parallel_encode(
&mut self,
entry_rx: Receiver<MetaAttached<Entry, EntryMeta>>,
) -> Result<(), GitError>
pub async fn parallel_encode( &mut self, entry_rx: Receiver<MetaAttached<Entry, EntryMeta>>, ) -> Result<(), GitError>
Parallel encode with rayon, only works when window_size == 0 (no delta)
Sourcepub async fn encode_async(
self,
rx: Receiver<MetaAttached<Entry, EntryMeta>>,
) -> Result<JoinHandle<()>, GitError>
pub async fn encode_async( self, rx: Receiver<MetaAttached<Entry, EntryMeta>>, ) -> Result<JoinHandle<()>, GitError>
async version of encode, result data will be returned by JoinHandle. It will consume PackEncoder, so you can’t use it after calling this function. when window_size = 0, it executes parallel_encode which retains stream transmission when window_size = 0,it executes encode which uses magic sort and delta. It seems that all other modules rely on this api
Sourcepub async fn encode_async_with_zstdelta(
self,
rx: Receiver<MetaAttached<Entry, EntryMeta>>,
) -> Result<JoinHandle<()>, GitError>
pub async fn encode_async_with_zstdelta( self, rx: Receiver<MetaAttached<Entry, EntryMeta>>, ) -> Result<JoinHandle<()>, GitError>
async version of encode_with_zstdelta, result data will be returned by JoinHandle.
Sourcepub async fn encode_idx_file(&mut self) -> Result<(), GitError>
pub async fn encode_idx_file(&mut self) -> Result<(), GitError>
Generate idx file after pack file has been generated
Auto Trait Implementations§
impl Freeze for PackEncoder
impl RefUnwindSafe for PackEncoder
impl Send for PackEncoder
impl Sync for PackEncoder
impl Unpin for PackEncoder
impl UnsafeUnpin for PackEncoder
impl UnwindSafe for PackEncoder
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
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>
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>
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 more