Disk ARchive  2.7.14
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
 
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)
 
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
 
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

◆ 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

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