| Disk ARchive 2.6.12 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
Private

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_signature & | operator= (const cat_delta_signature &ref)
| assignement operator
cat_delta_signature & | operator= (cat_delta_signature &&ref) noexcept
| move assignment operator
| ~cat_delta_signature ()
| destructor
void | read (bool sequential_read, const archive_version &ver)
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_file > | obtain_sig (const archive_version &ver) const
| provide a memory_file object which the caller has the duty to destroy after use More...
U_I | obtain_sig_block_size () const
| provide the block size used for delta signature
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, U_I sig_block_size)
| the object pointed to by ptr must stay available when calling dump_data()/dump_metadata() later on More...
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 archive_version &ver) const
| write down the data eventually with sequential read mark followed by delta sig metadata More...
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 archive_version &ver) const

## Private Attributes
crc * | patch_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
std::shared_ptr< memory_file > | sig
| the signature data, if set nullptr it will be fetched from f in direct access mode only More...
crc * | patch_result_check
| associated CRC
generic_file * | src
| where to read data from
compressor * | zip
| needed to disable compression when reading delta signature data from an archive
U_I | sig_block_len
| block lenght used within delta signature

## Detailed Description

the cat_delta_signature file class

this class works in two implicit modes

- read mode read the metadata from an archive the caller having to know where to find it read the data and fill the provided memory_file (get_sig()) by the delta signature provide access to the associated CRC
- write mode stores the associated CRC write down the given delta signature (with metadata in sequential mode) write down the metadata the signature is not stored

Definition at line 91 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] | f | where 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] | c | points 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 145 of file cat_delta_signature.hpp.

References sig.

## ◆ dump_data()

void libdar::cat_delta_signature::dump_data | ( | generic_file & | f,
|  | bool | sequential_mode,
|  | const archive_version & | ver
| ) |  | const

write down the data eventually with sequential read mark followed by delta sig metadata

Note
  ver is only used to know which version to use for reading the data, but it is always written following the most recent supported archive format version

## ◆ obtain_sig()

std::shared_ptr<memory_file> libdar::cat_delta_signature::obtain_sig | ( | const archive_version & | ver | ) | 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.

## ◆ read()

void libdar::cat_delta_signature::read | ( | bool | sequential_read,
|  | const archive_version & | ver
| ) |  |

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

## ◆ set_sig()

void libdar::cat_delta_signature::set_sig | ( | const std::shared_ptr< memory_file > & | ptr,
|  | U_I | sig_block_size
| ) |  |

the object pointed to by ptr must stay available when calling dump_data()/dump_metadata() later on

Note
  sig_block_size is an additional information about the block size used to setup the signature, this is not the size of the 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 154 of file cat_delta_signature.hpp.

References delta_sig_size.

## Member Data Documentation

## ◆ delta_sig_offset

infinint libdar::cat_delta_signature::delta_sig_offset
| private

where to read sig_block_len followed by delta_sig_size bytes of data from which to setup "sig"

Definition at line 201 of file cat_delta_signature.hpp.

Referenced by set_sig().

## ◆ sig

std::shared_ptr<memory_file> libdar::cat_delta_signature::sig
| mutable private

the signature data, if set nullptr it will be fetched from f in direct access mode only

Note
  delta_sig_offset is set to zero when read in sequential mode, sig is setup on-fly

Definition at line 203 of file cat_delta_signature.hpp.

Referenced by drop_sig(), and set_sig().

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

- cat_delta_signature.hpp