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 drop_sender(&mut self)
pub async fn send_data(&mut self, data: Vec<u8>)
Sourcepub fn get_hash(&self) -> Option<SHA1>
pub fn get_hash(&self) -> Option<SHA1>
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<Entry>,
) -> Result<(), GitError>
pub async fn encode( &mut self, entry_rx: Receiver<Entry>, ) -> 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.
pub async fn encode_with_zstdelta( &mut self, entry_rx: Receiver<Entry>, ) -> Result<(), GitError>
Sourcepub async fn parallel_encode(
&mut self,
entry_rx: Receiver<Entry>,
) -> Result<(), GitError>
pub async fn parallel_encode( &mut self, entry_rx: Receiver<Entry>, ) -> Result<(), GitError>
Parallel encode with rayon, only works when window_size == 0 (no delta)
Sourcepub async fn encode_async(
self,
rx: Receiver<Entry>,
) -> Result<JoinHandle<()>, GitError>
pub async fn encode_async( self, rx: Receiver<Entry>, ) -> 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
pub async fn encode_async_with_zstdelta( self, rx: Receiver<Entry>, ) -> Result<JoinHandle<()>, GitError>
Auto Trait Implementations§
impl Freeze for PackEncoder
impl RefUnwindSafe for PackEncoder
impl Send for PackEncoder
impl Sync for PackEncoder
impl Unpin 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
Mutably borrows from an owned value. Read more
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> Pointable for T
impl<T> Pointable for T
Source§impl<T> ValueSize for T
impl<T> ValueSize for T
Source§fn value_size(&self) -> usize
fn value_size(&self) -> usize
The size of this value in bytes, excluding allocated data. Read more
Source§fn value_size_sum_iter<'item>(iterator: impl Iterator<Item = &'item T>) -> usizewhere
T: 'item,
fn value_size_sum_iter<'item>(iterator: impl Iterator<Item = &'item T>) -> usizewhere
T: 'item,
The total sum of the sizes of all values in the given iterator, in
bytes. This is default-implemented by computing ValueSize::value_size
on every element and summing them. For Sized types, a more potentially
efficient implementation using Iterator::count is provided. If you are
implementing this trait manually, it is unlikely to be more efficient to
provide a manual implementation here. Read more
Source§fn value_size_sum_exact_size_iter<'item>(
iterator: impl ExactSizeIterator<Item = &'item T>,
) -> usizewhere
T: 'item,
fn value_size_sum_exact_size_iter<'item>(
iterator: impl ExactSizeIterator<Item = &'item T>,
) -> usizewhere
T: 'item,
The total sum of the sizes of all values in the given
exact-size-iterator, in bytes. This is default-implemented by using
ValueSize::value_size_sum_iter. For Sized types, a usually more
efficient implementation using ExactSizeIterator::len is provided. If
you are implementing this trait manually, it is unlikely to be more
efficient to provide a manual implementation here. Read more