Disk ARchive  2.7.15
Full featured and portable backup and archiving tool
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
libdar::cat_mirage Class Reference

the hard link implementation, cat_mirage is the named entry owned by a directory it points to a common "cat_etoile class" More...

#include <cat_mirage.hpp>

+ Inheritance diagram for libdar::cat_mirage:
+ Collaboration diagram for libdar::cat_mirage:

Public Types

enum  mirage_format { fmt_mirage , fmt_hard_link , fmt_file_etiquette }
 format of mirage More...
 

Public Member Functions

 cat_mirage (const std::string &name, cat_etoile *ref)
 
 cat_mirage (const std::shared_ptr< user_interaction > &dialog, const smart_pointer< pile_descriptor > &pdesc, const archive_version &reading_ver, saved_status saved, entree_stats &stats, std::map< infinint, cat_etoile * > &corres, compression default_algo, mirage_format fmt, bool lax, bool small)
 
 cat_mirage (const std::shared_ptr< user_interaction > &dialog, const smart_pointer< pile_descriptor > &pdesc, const archive_version &reading_ver, saved_status saved, entree_stats &stats, std::map< infinint, cat_etoile * > &corres, compression default_algo, bool lax, bool small)
 
 cat_mirage (const cat_mirage &ref)
 
 cat_mirage (cat_mirage &&ref) noexcept
 
cat_mirageoperator= (const cat_mirage &ref)
 
cat_mirageoperator= (cat_mirage &&ref)
 
virtual bool operator== (const cat_entree &ref) const override
 returns true if the two object are the same
 
virtual unsigned char signature () const override
 inherited class signature
 
virtual std::string get_description () const override
 inherited class designation
 
virtual cat_entreeclone () const override
 a way to copy the exact type of an object even if pointed to by a parent class pointer
 
cat_inodeget_inode () const
 
infinint get_etiquette () const
 
infinint get_etoile_ref_count () const
 
cat_etoileget_etoile () const
 
bool is_inode_counted () const
 
bool is_inode_wrote () const
 
bool is_inode_dumped () const
 
void set_inode_counted (bool val) const
 
void set_inode_wrote (bool val) const
 
void set_inode_dumped (bool val) const
 
virtual void post_constructor (const pile_descriptor &pdesc) override
 let inherited classes build object's data after CRC has been read from file in small read mode More...
 
bool is_first_mirage () const
 whether we are the mirage that triggered this hard link creation
 
virtual void change_location (const smart_pointer< pile_descriptor > &pdesc) override
 
void disable_reduction_to_normal_inode ()
 always write the inode as a hardlinked inode More...
 
- Public Member Functions inherited from libdar::cat_nomme
 cat_nomme (const std::string &name, saved_status arg)
 
 cat_nomme (const smart_pointer< pile_descriptor > &pdesc, bool small, saved_status val)
 
 cat_nomme (const cat_nomme &ref)=default
 
 cat_nomme (cat_nomme &&ref) noexcept=default
 
cat_nommeoperator= (const cat_nomme &ref)=default
 
cat_nommeoperator= (cat_nomme &&ref)=default
 
virtual bool operator< (const cat_nomme &ref) const
 
const std::string & get_name () const
 
void change_name (const std::string &x)
 
bool same_as (const cat_nomme &ref) const
 
- Public Member Functions inherited from libdar::cat_entree
 cat_entree (saved_status val)
 setup an object when read from filesystem
 
 cat_entree (const smart_pointer< pile_descriptor > &pdesc, bool small, saved_status val)
 setup an object when read from an archive More...
 
 cat_entree (const cat_entree &ref)=default
 
 cat_entree (cat_entree &&ref) noexcept=default
 
cat_entreeoperator= (const cat_entree &ref)=default
 
cat_entreeoperator= (cat_entree &&ref)=default
 
virtual ~cat_entree () noexcept(false)
 destructor
 
bool operator!= (const cat_entree &ref) const
 
bool same_as (const cat_entree &ref) const
 return true of the two objects would generate the same entry on filsystem More...
 
void dump (const pile_descriptor &pdesc, bool small) const
 write down the object information to a stack More...
 
void specific_dump (const pile_descriptor &pdesc, bool small) const
 this call gives an access to inherited_dump More...
 
saved_status get_saved_status () const
 obtain the saved status of the object
 
void set_saved_status (saved_status x)
 modify the saved_status of the object
 
void set_list_entry (const slice_layout *sly, bool fetch_ea, list_entry &ent) const
 setup a list_entry object relative to the current cat_entree object More...
 

Protected Member Functions

virtual void inherited_dump (const pile_descriptor &pdesc, bool small) const override
 inherited class may overload this method but shall first call the parent's inherited_dump() in the overloaded method
 
- Protected Member Functions inherited from libdar::cat_entree
pileget_pile () const
 stack used to read object from (nullptr is returned for object created from filesystem)
 
proto_compressor * get_compressor_layer () const
 compressor generic_file relative methods More...
 
escape * get_escape_layer () const
 escape generic_file relative methods More...
 
generic_fileget_read_cat_layer (bool small) const
 return the adhoc layer in the stack to read from the catalogue objects (except the EA, FSA or Data part)
 

Private Member Functions

void init (const std::shared_ptr< user_interaction > &dialog, const smart_pointer< pile_descriptor > &pdesc, const archive_version &reading_ver, saved_status saved, entree_stats &stats, std::map< infinint, cat_etoile * > &corres, compression default_algo, mirage_format fmt, bool lax, bool small)
 
void dup_on (cat_etoile *ref)
 

Private Attributes

cat_etoilestar_ref
 

Additional Inherited Members

- Static Public Member Functions inherited from libdar::cat_entree
static cat_entreeread (const std::shared_ptr< user_interaction > &dialog, const smart_pointer< pile_descriptor > &f, const archive_version &reading_ver, entree_stats &stats, std::map< infinint, cat_etoile * > &corres, compression default_algo, bool lax, bool only_detruit, bool small)
 read and create an object of inherited class of class cat_entree More...
 

Detailed Description

the hard link implementation, cat_mirage is the named entry owned by a directory it points to a common "cat_etoile class"

well, a mirage is this fake apparition of water in a desert... I guess you get the picture now... :-)

Definition at line 47 of file cat_mirage.hpp.

Member Enumeration Documentation

◆ mirage_format

format of mirage

Enumerator
fmt_mirage 

new format

fmt_hard_link 

old dual format

Definition at line 51 of file cat_mirage.hpp.

Member Function Documentation

◆ change_location()

virtual void libdar::cat_mirage::change_location ( const smart_pointer< pile_descriptor > &  pdesc)
inlineoverridevirtual

for archive merging, will let the object drop EA, FSA and Data to an alternate stack than the one it has been read from

Note
this is used when cloning an object from a catalogue to provide a merged archive. Such cloned object must point the stack of the archive under construction, so we use this call for that need,
this is also used when opening a catalogue if an isolated catalogue in place of the internal catalogue of an archive
this method is virtual in order for cat_directory to overwrite it and propagate the change to all entries of the directory tree as well for mirage to propagate the change to the hard linked inode

Reimplemented from libdar::cat_entree.

Definition at line 106 of file cat_mirage.hpp.

References libdar::cat_entree::change_location().

◆ disable_reduction_to_normal_inode()

void libdar::cat_mirage::disable_reduction_to_normal_inode ( )
inline

always write the inode as a hardlinked inode

Note
when calling dump() on a mirage by default if the inode pointed by the mirage has is referred only once, it is saved as a normal inode that's to say a non hard linked inode. In some circumstances, the total number of hard link on that inode is not yet known at the time the inode is written (repair operation), we cannot assume the hard linked inode is a normal inode as new hard links pointing on that same inode may have not been read yet.

Definition at line 117 of file cat_mirage.hpp.

◆ post_constructor()

virtual void libdar::cat_mirage::post_constructor ( const pile_descriptor &  pdesc)
overridevirtual

let inherited classes build object's data after CRC has been read from file in small read mode

Parameters
[in]pdescstack to read the data from
Note
used from cat_entree::read to complete small read
this method is called by cat_entree::read and mirage::post_constructor only when contructing an object with small set to true

Reimplemented from libdar::cat_entree.


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