Loading...
Searching...
No Matches
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, proto_compressor *c)
| constructor to read an object (using read() later on) from filesystem/backup
| cat_delta_signature ()
| constructor to write an object to filesytem/backup (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
bool | is_pending_read () const
| tells whether the read() call has been invoked
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
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
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
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
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
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, moved to cat_file since format 11.2, still need for older formats
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
crc * | patch_result_check
| associated CRC
generic_file * | src
| where to read data from
proto_compressor * | zip
| needed to disable compression when reading delta signature data from an archive
U_I | sig_block_len
| block length used within delta signature
bool | pending_read
| when the object has been created for read but data not yet read from archive

## 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 99 of file cat_delta_signature.hpp.

## Constructor & Destructor Documentation

## cat_delta_signature() [1/4]

libdar::cat_delta_signature::cat_delta_signature | ( | generic_file * | f,
|  | proto_compressor * | c )

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

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)

Referenced by cat_delta_signature(), cat_delta_signature(), operator=(), and operator=().

## cat_delta_signature() [2/4]

libdar::cat_delta_signature::cat_delta_signature | ( |  | ) |

inline

constructor to write an object to filesytem/backup (using dump_* methods later on)

Definition at line 112 of file cat_delta_signature.hpp.

## cat_delta_signature() [3/4]

libdar::cat_delta_signature::cat_delta_signature | ( | const cat_delta_signature & | ref | ) |

inline

copy constructor

Definition at line 115 of file cat_delta_signature.hpp.

References cat_delta_signature().

## cat_delta_signature() [4/4]

libdar::cat_delta_signature::cat_delta_signature | ( | cat_delta_signature && | ref | ) |

inline noexcept

move constructor

Definition at line 118 of file cat_delta_signature.hpp.

References cat_delta_signature().

## ~cat_delta_signature()

libdar::cat_delta_signature::~cat_delta_signature | ( |  | ) |

inline

destructor

Definition at line 127 of file cat_delta_signature.hpp.

## Member Function Documentation

## can_obtain_sig()

bool libdar::cat_delta_signature::can_obtain_sig | ( |  | ) | const

inline

the cat_delta_signature structure can only hold CRC without delta_signature, this call gives the situation about that point

Definition at line 140 of file cat_delta_signature.hpp.

References delta_sig_size.

## clear()

void libdar::cat_delta_signature::clear | ( |  | ) |

inline

reset the object

Definition at line 207 of file cat_delta_signature.hpp.

Referenced by operator=().

## 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 156 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

## has_patch_base_crc()

bool libdar::cat_delta_signature::has_patch_base_crc | ( |  | ) | const

inline

returns whether the object has a base patch CRC (s_delta status objects)

Definition at line 189 of file cat_delta_signature.hpp.

References patch_base_check.

## has_patch_result_crc()

bool libdar::cat_delta_signature::has_patch_result_crc | ( |  | ) | const

inline

returns whether the object has a CRC corresponding to data (for s_saved, s_delta, and when delta signature is present)

Definition at line 198 of file cat_delta_signature.hpp.

References patch_result_check.

## is_pending_read()

bool libdar::cat_delta_signature::is_pending_read | ( |  | ) | const

inline

tells whether the read() call has been invoked

Definition at line 132 of file cat_delta_signature.hpp.

References pending_read.

## 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.

## obtain_sig_block_size()

U_I libdar::cat_delta_signature::obtain_sig_block_size | ( |  | ) | const

inline

provide the block size used for delta signature

Definition at line 150 of file cat_delta_signature.hpp.

References sig_block_len.

## operator=() [1/2]

cat_delta_signature & libdar::cat_delta_signature::operator= | ( | cat_delta_signature && | ref | ) |

inline noexcept

move assignment operator

Definition at line 124 of file cat_delta_signature.hpp.

References cat_delta_signature().

## operator=() [2/2]

cat_delta_signature & libdar::cat_delta_signature::operator= | ( | const cat_delta_signature & | ref | ) |

inline

assignement operator

Definition at line 121 of file cat_delta_signature.hpp.

References cat_delta_signature(), and clear().

## 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() [1/2]

void libdar::cat_delta_signature::set_sig | ( |  | ) |

inline

variante used when the delta_signature object will only contain CRCs (no delta signature)

Definition at line 174 of file cat_delta_signature.hpp.

References delta_sig_offset, delta_sig_size, sig, and sig_block_len.

## set_sig() [2/2]

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 165 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 212 of file cat_delta_signature.hpp.

Referenced by set_sig().

## delta_sig_size

infinint libdar::cat_delta_signature::delta_sig_size

private

size of the data to setup "sig" (set to zero when reading in sequential mode, sig is then setup on-fly)

Definition at line 211 of file cat_delta_signature.hpp.

Referenced by can_obtain_sig(), set_sig(), and will_have_signature().

## patch_base_check

crc* libdar::cat_delta_signature::patch_base_check

private

associated CRC for the file this signature has been computed on, moved to cat_file since format 11.2, still need for older formats

Definition at line 210 of file cat_delta_signature.hpp.

Referenced by has_patch_base_crc().

## patch_result_check

crc* libdar::cat_delta_signature::patch_result_check

private

associated CRC

Definition at line 215 of file cat_delta_signature.hpp.

Referenced by has_patch_result_crc().

## pending_read

bool libdar::cat_delta_signature::pending_read

private

when the object has been created for read but data not yet read from archive

Definition at line 219 of file cat_delta_signature.hpp.

Referenced by is_pending_read().

## 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 214 of file cat_delta_signature.hpp.

Referenced by drop_sig(), and set_sig().

## sig_block_len

U_I libdar::cat_delta_signature::sig_block_len

mutable private

block length used within delta signature

Definition at line 218 of file cat_delta_signature.hpp.

Referenced by obtain_sig_block_size(), and set_sig().

## src

generic_file* libdar::cat_delta_signature::src

private

where to read data from

Definition at line 216 of file cat_delta_signature.hpp.

## zip

proto_compressor* libdar::cat_delta_signature::zip

private

needed to disable compression when reading delta signature data from an archive

Definition at line 217 of file cat_delta_signature.hpp.

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

- cat_delta_signature.hpp