Disk ARchive  2.6.1
Full featured and portable backup and archiving tool
Public Member Functions | Private Member Functions | Private Attributes | List of all members
libdar::cat_delta_signature Class Reference

the cat_delta_signature file class More...

#include <cat_delta_signature.hpp>

Public Member Functions

 cat_delta_signature (generic_file *f, compressor *c)
 constructor to read an object (using read() later on) from filesystem More...
 
 cat_delta_signature ()
 constructor to write an object to filesytem (using dump_* methods later on)
 
 cat_delta_signature (const cat_delta_signature &ref)
 copy constructor
 
 cat_delta_signature (cat_delta_signature &&ref) noexcept
 move constructor
 
cat_delta_signatureoperator= (const cat_delta_signature &ref)
 assignement operator
 
cat_delta_signatureoperator= (cat_delta_signature &&ref) noexcept
 move assignment operator
 
 ~cat_delta_signature ()
 destructor
 
void read (bool sequential_read)
 
bool can_obtain_sig () const
 the cat_delta_signature structure can only hold CRC without delta_signature, this call gives the situation about that point
 
std::shared_ptr< memory_fileobtain_sig () const
 provide a memory_file object which the caller has the duty to destroy after use More...
 
void drop_sig () const
 drop signature but keep metadata available More...
 
void will_have_signature ()
 give the object where to fetch from the delta signature, object must exist up to the next call to dump_data More...
 
void set_sig (const std::shared_ptr< memory_file > &ptr)
 the object pointed to by ptr must stay available when calling dump_data()/dump_metadata() later on
 
void set_sig ()
 variante used when the delta_signature object will only contain CRCs (no delta signature)
 
void dump_data (generic_file &f, bool sequential_mode) const
 write down the data eventually with sequential read mark followed by delta sig metadata
 
void dump_metadata (generic_file &f) const
 write down the delta_signature metadata for catalogue
 
bool has_patch_base_crc () const
 returns whether the object has a base patch CRC (s_delta status objects)
 
bool get_patch_base_crc (const crc *&c) const
 returns the CRC of the file to base the patch on, for s_delta objects
 
void set_patch_base_crc (const crc &c)
 set the reference CRC of the file to base the patch on, for s_detla objects
 
bool has_patch_result_crc () const
 returns whether the object has a CRC corresponding to data (for s_saved, s_delta, and when delta signature is present)
 
bool get_patch_result_crc (const crc *&c) const
 returns the CRC the file will have once restored or patched (for s_saved, s_delta, and when delta signature is present)
 
void set_patch_result_crc (const crc &c)
 set the CRC the file will have once restored or patched (for s_saved, s_delta, and when delta signature is present)
 
void clear ()
 reset the object
 

Private Member Functions

void init () noexcept
 
void copy_from (const cat_delta_signature &ref)
 
void move_from (cat_delta_signature &&ref) noexcept
 
void destroy () noexcept
 
void fetch_data () const
 

Private Attributes

crcpatch_base_check
 associated CRC for the file this signature has been computed on
 
infinint delta_sig_size
 size of the data to setup "sig" (set to zero when reading in sequential mode, sig is then setup on-fly)
 
infinint delta_sig_offset
 where to read data from to setup "sig" (set to zero when read in sequential mode, sig is setup on-fly)
 
std::shared_ptr< memory_filesig
 the signature data, if set nullptr it will be fetched from f in direct access mode only
 
crcpatch_result_check
 associated CRC
 
generic_filesrc
 where to read data from
 
compressorzip
 needed to disable compression when reading delta signature data from an archive
 

Detailed Description

the cat_delta_signature file class

this class works in to implicit modes

Definition at line 90 of file cat_delta_signature.hpp.

Constructor & Destructor Documentation

◆ cat_delta_signature()

libdar::cat_delta_signature::cat_delta_signature ( generic_file f,
compressor c 
)

constructor to read an object (using read() later on) from filesystem

Parameters
[in]fwhere to read the data from, used when calling read() later on. f must not be set to nullptr and the pointed to object must survive this cat_delta_signature object
[in]cpoints to the compressor layer in order to suspend compression when reading data (metadata will be read compressed or not depending on the its location (in-lined or in the catalogue at end of archive)

Member Function Documentation

◆ drop_sig()

void libdar::cat_delta_signature::drop_sig ( ) const
inline

drop signature but keep metadata available

Note
there is a lot of chance that a call to obtain_sig() will fail after drop_sig() has been called when in sequential read mode, due to the limited possibility to skip backward in that mode

Definition at line 141 of file cat_delta_signature.hpp.

References sig.

◆ obtain_sig()

std::shared_ptr<memory_file> libdar::cat_delta_signature::obtain_sig ( ) const

provide a memory_file object which the caller has the duty to destroy after use

Note
while drop_sig has not been called, obtain_sig() can be called any number of time
in direct mode (not sequential_real mode) the first call to obtain_sig() fetches the data from the archive and loads it to memory.

Referenced by can_obtain_sig().

◆ read()

void libdar::cat_delta_signature::read ( bool  sequential_read)

read the metadata of the object from the generic_file given at construction time

Note
in sequential read mode, the data is also read at that time and loaded into memory, thing which is done transparently by obtain_sig() when in direct access mode

Referenced by ~cat_delta_signature().

◆ will_have_signature()

void libdar::cat_delta_signature::will_have_signature ( )
inline

give the object where to fetch from the delta signature, object must exist up to the next call to dump_data

Note
seg_sig_ref() must be called each time before invoking dump_data(), normally it is done once... for can_obtain_sig() to return true before the signature is provided

Definition at line 150 of file cat_delta_signature.hpp.

References delta_sig_size, and set_sig().


The documentation for this class was generated from the following file: