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

the data_tree class stores presence of a given file in a set of archives More...

#include <data_tree.hpp>

+ Inheritance diagram for libdar::data_tree:
+ Collaboration diagram for libdar::data_tree:

Public Member Functions

 data_tree (const std::string &name)
 
 data_tree (generic_file &f, unsigned char db_version)
 
 data_tree (const data_tree &ref)=default
 
 data_tree (data_tree &&ref) noexcept=default
 
data_treeoperator= (const data_tree &ref)=default
 
data_treeoperator= (data_tree &&ref) noexcept=default
 
virtual void dump (generic_file &f) const
 
std::string get_name () const
 
void set_name (const std::string &name)
 
db_lookup get_data (std::set< archive_num > &archive, const datetime &date, bool even_when_removed) const
 
db_lookup get_EA (archive_num &archive, const datetime &date, bool even_when_removed) const
 if EA has been saved alone later, returns in which version for the state of the file at the given date.
 
bool read_data (archive_num num, datetime &val, db_etat &present) const
 return the date of file's last modification date within the give archive and whether the file has been saved or deleted
 
bool read_EA (archive_num num, datetime &val, db_etat &present) const
 return the date of last inode change and whether the EA has been saved or deleted
 
void set_data (const archive_num &archive, const datetime &date, db_etat present)
 
void set_data (const archive_num &archive, const datetime &date, db_etat present, const crc *base, const crc *result)
 
void set_EA (const archive_num &archive, const datetime &date, db_etat present)
 
virtual bool check_order (user_interaction &dialog, const path &current_path, bool &initial_warn) const
 check date order between archives withing the database ; throw Erange if problem found with date order More...
 
virtual void finalize (const archive_num &archive, const datetime &deleted_date, const archive_num &ignore_archive_greater_or_equal)
 add deleted entry if no object of the current archive exist and the entry of the previous archive is already present. More...
 
virtual bool remove_all_from (const archive_num &archive_to_remove, const archive_num &last_archive)
 return true if the corresponding file is no more located in any archive (thus, the object is no more usefull in the base) More...
 
void listing (database_listing_get_version_callback callback, void *tag) const
 list where is saved this file
 
virtual void apply_permutation (archive_num src, archive_num dst)
 
virtual void skip_out (archive_num num)
 decrement archive numbers above num More...
 
virtual void compute_most_recent_stats (std::deque< infinint > &data, std::deque< infinint > &ea, std::deque< infinint > &total_data, std::deque< infinint > &total_ea) const
 
virtual char obj_signature () const
 
virtual bool fix_corruption ()
 

Static Public Member Functions

static char signature ()
 

Private Member Functions

template<class T >
bool check_map_order (user_interaction &dialog, const std::map< archive_num, T > the_map, const path &current_path, const std::string &field_nature, bool &initial_warn) const
 
bool check_delta_validity ()
 

Static Private Member Functions

static archive_num data_tree_permutation (archive_num src, archive_num dst, archive_num x)
 gives new archive number when an database has its archive reordered More...
 
static void display_line (database_listing_get_version_callback callback, void *tag, archive_num num, const datetime *data, db_etat data_presence, const datetime *ea, db_etat ea_presence)
 helper method to provide information to a database_listing_get_version_callback
 

Private Attributes

std::string filename
 
std::map< archive_num, status_plus > last_mod
 
std::map< archive_num, status > last_change
 

Static Private Attributes

static constexpr const char *const ETAT_SAVED = "S"
 
static constexpr const char *const ETAT_PATCH = "O"
 
static constexpr const char *const ETAT_PATCH_UNUSABLE = "U"
 
static constexpr const char *const ETAT_PRESENT = "P"
 
static constexpr const char *const ETAT_REMOVED = "R"
 
static constexpr const char *const ETAT_ABSENT = "A"
 
static constexpr const char *const ETAT_INODE = "I"
 
static constexpr unsigned char STATUS_PLUS_FLAG_ME = 0x01
 
static constexpr unsigned char STATUS_PLUS_FLAG_REF = 0x02
 

Detailed Description

the data_tree class stores presence of a given file in a set of archives

the data associated to a given file are the different modification dates that this file has been found in the archive the database has been feed by

Definition at line 53 of file data_tree.hpp.

Member Function Documentation

◆ check_order()

virtual bool libdar::data_tree::check_order ( user_interaction dialog,
const path current_path,
bool &  initial_warn 
) const
inlinevirtual

check date order between archives withing the database ; throw Erange if problem found with date order

Reimplemented in libdar::data_dir.

Definition at line 100 of file data_tree.hpp.

◆ data_tree_permutation()

static archive_num libdar::data_tree::data_tree_permutation ( archive_num  src,
archive_num  dst,
archive_num  x 
)
staticprivate

gives new archive number when an database has its archive reordered

Parameters
[in]srcthe archive number to move
[in]dstthe new position of the archive number given by src
[in]xany archive number in the database, which new position is to be calculated in regard to the src -> dst move
Returns
the new archive number of archive x in regard to the src -> dst move

◆ finalize()

virtual void libdar::data_tree::finalize ( const archive_num archive,
const datetime deleted_date,
const archive_num ignore_archive_greater_or_equal 
)
virtual

add deleted entry if no object of the current archive exist and the entry of the previous archive is already present.

Parameters
[in]archiveis the number of the archive to finalize
[in]deleted_datedate of deletion to use for inode removal when no information can be grabbed from the archive (this date is taken from the parent dir last modification date)
[in]ignore_archive_greater_or_equalignore archives which number is greater or equal than "ignore_archive_greater_or_equal" as if they were not present in the database. If set to zero, no archive is ignored.

Reimplemented in libdar::data_dir.

◆ get_data()

db_lookup libdar::data_tree::get_data ( std::set< archive_num > &  archive,
const datetime date,
bool  even_when_removed 
) const

returns the archives to restore in order to obtain the data that was defined just before (or at) the given date

Parameters
[out]archiveis the set of archive to restore in sequence to obtain the requested data
[in]datedate above which to ignore data found in the database
[in]even_when_removedis true when user requested to restore the file in its latest state even if it has been removed afterward
Returns
the success of failure status of the requested lookup

◆ get_name()

std::string libdar::data_tree::get_name ( ) const
inline

Definition at line 65 of file data_tree.hpp.

◆ obj_signature()

virtual char libdar::data_tree::obj_signature ( ) const
inlinevirtual

Definition at line 130 of file data_tree.hpp.

◆ remove_all_from()

virtual bool libdar::data_tree::remove_all_from ( const archive_num archive_to_remove,
const archive_num last_archive 
)
virtual

return true if the corresponding file is no more located in any archive (thus, the object is no more usefull in the base)

Reimplemented in libdar::data_dir.

◆ set_data() [1/2]

void libdar::data_tree::set_data ( const archive_num archive,
const datetime date,
db_etat  present 
)
inline

Definition at line 87 of file data_tree.hpp.

◆ set_data() [2/2]

void libdar::data_tree::set_data ( const archive_num archive,
const datetime date,
db_etat  present,
const crc base,
const crc result 
)
inline

Definition at line 91 of file data_tree.hpp.

◆ set_EA()

void libdar::data_tree::set_EA ( const archive_num archive,
const datetime date,
db_etat  present 
)
inline

Definition at line 97 of file data_tree.hpp.

◆ set_name()

void libdar::data_tree::set_name ( const std::string &  name)
inline

Definition at line 66 of file data_tree.hpp.

◆ signature()

static char libdar::data_tree::signature ( )
inlinestatic

Definition at line 131 of file data_tree.hpp.

◆ skip_out()

virtual void libdar::data_tree::skip_out ( archive_num  num)
virtual

decrement archive numbers above num

Reimplemented in libdar::data_dir.

Member Data Documentation

◆ ETAT_ABSENT

constexpr const char* const libdar::data_tree::ETAT_ABSENT = "A"
staticconstexprprivate

Definition at line 143 of file data_tree.hpp.

◆ ETAT_INODE

constexpr const char* const libdar::data_tree::ETAT_INODE = "I"
staticconstexprprivate

Definition at line 144 of file data_tree.hpp.

◆ ETAT_PATCH

constexpr const char* const libdar::data_tree::ETAT_PATCH = "O"
staticconstexprprivate

Definition at line 139 of file data_tree.hpp.

◆ ETAT_PATCH_UNUSABLE

constexpr const char* const libdar::data_tree::ETAT_PATCH_UNUSABLE = "U"
staticconstexprprivate

Definition at line 140 of file data_tree.hpp.

◆ ETAT_PRESENT

constexpr const char* const libdar::data_tree::ETAT_PRESENT = "P"
staticconstexprprivate

Definition at line 141 of file data_tree.hpp.

◆ ETAT_REMOVED

constexpr const char* const libdar::data_tree::ETAT_REMOVED = "R"
staticconstexprprivate

Definition at line 142 of file data_tree.hpp.

◆ ETAT_SAVED

constexpr const char* const libdar::data_tree::ETAT_SAVED = "S"
staticconstexprprivate

Definition at line 138 of file data_tree.hpp.

◆ filename

std::string libdar::data_tree::filename
private

Definition at line 195 of file data_tree.hpp.

◆ last_change

std::map<archive_num, status> libdar::data_tree::last_change
private

Definition at line 197 of file data_tree.hpp.

◆ last_mod

std::map<archive_num, status_plus> libdar::data_tree::last_mod
private

Definition at line 196 of file data_tree.hpp.

◆ STATUS_PLUS_FLAG_ME

constexpr unsigned char libdar::data_tree::STATUS_PLUS_FLAG_ME = 0x01
staticconstexprprivate

Definition at line 146 of file data_tree.hpp.

◆ STATUS_PLUS_FLAG_REF

constexpr unsigned char libdar::data_tree::STATUS_PLUS_FLAG_REF = 0x02
staticconstexprprivate

Definition at line 147 of file data_tree.hpp.


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