![]() |
Disk ARchive
2.5.1
Full featured and portable backup and archiving tool
|
this is the interface class from which all other data transfer classes inherit More...
#include <generic_file.hpp>
Inherits libdar::on_pool.
Inherited by hide_file, libdar::cache, libdar::compressor, libdar::escape, libdar::fichier_global, libdar::generic_thread, libdar::memory_file, libdar::null_file, libdar::pile, libdar::sar, libdar::scrambler, libdar::secu_memory_file, libdar::trivial_sar, libdar::tronc, libdar::tronconneuse, libdar::tuyau, and libdar::zapette.
Public Types | |
enum | skippability { skip_backward, skip_forward } |
Public Member Functions | |
generic_file (gf_mode m) | |
main constructor | |
generic_file (const generic_file &ref) | |
copy constructor | |
virtual | ~generic_file () throw (Ebug) |
virtual destructor, this let inherited destructor to be called even from a generic_file pointer to an inherited class | |
void | terminate () const |
destructor-like call, except that it is allowed to throw exceptions | |
const generic_file & | operator= (const generic_file &ref) |
assignment operator | |
gf_mode | get_mode () const |
retreive the openning mode for this object | |
virtual void | read_ahead (const infinint &amount) |
void | ignore_read_ahead (bool mode) |
U_I | read (char *a, U_I size) |
read data from the generic_file More... | |
void | write (const char *a, U_I size) |
write data to the generic_file More... | |
void | write (const std::string &arg) |
write a string to the generic_file More... | |
S_I | read_back (char &a) |
skip back one char, read on char and skip back one char | |
S_I | read_forward (char &a) |
read one char | |
virtual bool | skippable (skippability direction, const infinint &amount)=0 |
virtual bool | skip (const infinint &pos)=0 |
virtual bool | skip_to_eof ()=0 |
skip to the end of file | |
virtual bool | skip_relative (S_I x)=0 |
skip relatively to the current position | |
virtual infinint | get_position () const =0 |
get the current read/write position | |
virtual void | copy_to (generic_file &ref) |
copy all data from current position to the object in argument | |
virtual void | copy_to (generic_file &ref, const infinint &crc_size, crc *&value) |
copy all data from the current position to the object in argument and computes a CRC value of the transmitted data More... | |
U_32 | copy_to (generic_file &ref, U_32 size) |
small copy (up to 4GB) with CRC calculation | |
infinint | copy_to (generic_file &ref, infinint size) |
copy the given amount to the object in argument | |
bool | diff (generic_file &f, const infinint &me_read_ahead, const infinint &you_read_ahead, const infinint &crc_size, crc *&value) |
compares the contents with the object in argument More... | |
bool | diff (generic_file &f, const infinint &me_read_ahead, const infinint &you_read_ahead, const infinint &crc_size, crc *&value, infinint &err_offset) |
void | reset_crc (const infinint &width) |
reset CRC on read or writen data More... | |
bool | crc_status () const |
to known whether CRC calculation is activated or not | |
crc * | get_crc () |
get CRC of the transfered date since last reset More... | |
void | sync_write () |
write any pending data | |
void | flush_read () |
be ready to read at current position, reseting all pending data for reading, cached and in compression engine for example | |
![]() | |
void * | operator new (size_t n_byte) |
void * | operator new (size_t n_byte, const std::nothrow_t ¬hrow_value) |
void * | operator new[] (size_t n_byte) |
void * | operator new[] (size_t n_byte, const std::nothrow_t ¬hrow_value) |
void * | operator new (size_t n_byte, memory_pool *p) |
void * | operator new[] (size_t n_byte, memory_pool *p) |
void | operator delete (void *ptr, memory_pool *p) |
this operator is called by the compiler if an exception is throw from the constructor of the allocated object | |
void | operator delete[] (void *ptr, memory_pool *p) |
this operator is called by the compiler if an exception is throw from the constructor of the allocated objects | |
void | operator delete (void *ptr) |
this is the usual delete operator, modified to handle allocated objects allocated on a memory pool or not | |
void | operator delete[] (void *ptr) |
this is the usual delete[] operator, modified to handle allocated objects allocated on a memory pool or not | |
Protected Member Functions | |
void | set_mode (gf_mode x) |
virtual void | inherited_read_ahead (const infinint &amount)=0 |
virtual U_I | inherited_read (char *a, U_I size)=0 |
implementation of read() operation More... | |
virtual void | inherited_write (const char *a, U_I size)=0 |
implementation of the write() operation More... | |
virtual void | inherited_sync_write ()=0 |
write down any pending data More... | |
virtual void | inherited_flush_read ()=0 |
virtual void | inherited_terminate ()=0 |
destructor-like call, except that it is allowed to throw exceptions More... | |
bool | is_terminated () const |
![]() | |
memory_pool * | get_pool () const |
template<class T > | |
void | meta_new (T *&ptr, size_t num) |
template<class T > | |
void | meta_delete (T *ptr) |
this is the interface class from which all other data transfer classes inherit
it provides mainly read and write operations, skip operations and few other functions.
Definition at line 100 of file generic_file.hpp.
|
virtual |
copy all data from the current position to the object in argument and computes a CRC value of the transmitted data
[in] | ref | defines where to copy the data to |
[in] | crc_size | tell the width of the crc to compute on the copied data |
[out] | value | points to a newly allocated crc object containing the crc value |
bool libdar::generic_file::diff | ( | generic_file & | f, |
const infinint & | me_read_ahead, | ||
const infinint & | you_read_ahead, | ||
const infinint & | crc_size, | ||
crc *& | value | ||
) |
compares the contents with the object in argument
[in] | f | is the file to compare the current object with |
[in] | me_read_ahead | is the amount of data to read ahead from "*this" (0 for no limit, up to end of eof) |
[in] | you_read_ahead | is the amount of data to read ahead from f (0 for no limit, up to end of file |
[in] | crc_size | is the width of the CRC to use for calculation |
[out] | value | is the computed checksum, its value can be used for additional testing if this method returns false (no difference between files). The given checksum has to be set to the expected width by the caller. |
bool libdar::generic_file::diff | ( | generic_file & | f, |
const infinint & | me_read_ahead, | ||
const infinint & | you_read_ahead, | ||
const infinint & | crc_size, | ||
crc *& | value, | ||
infinint & | err_offset | ||
) |
compare the contents with the object in argument, also providing the offset of the first difference met
[in] | f | is the file to compare the current object with |
[in] | me_read_ahead | is the amount of data to read ahead from "*this" (0 for no limit, up to end of eof) |
[in] | you_read_ahead | is the amount of data to read ahead from f (0 for no limit, up to end of file |
[in] | crc_size | is the width of the CRC to use for calculation |
[out] | value | is the computed checksum, its value can be used for additional |
[out] | err_offset | in case of difference, holds the offset of the first difference met testing if this method returns false (no difference between files). The given checksum has to be set to the expected width by the caller. |
crc* libdar::generic_file::get_crc | ( | ) |
get CRC of the transfered date since last reset
|
inline |
ignore read ahead requests
[in] | mode | if set to true read_ahead requests are ignored: inherited_read_ahead() of the inherited class is not called |
Definition at line 134 of file generic_file.hpp.
|
protectedpure virtual |
reset internal engine, flush caches in order to read the data at current position
Implemented in libdar::sar, libdar::trivial_sar, libdar::tronc, libdar::compressor, libdar::tuyau, libdar::zapette, libdar::null_file, libdar::cache, and libdar::scrambler.
|
protectedpure virtual |
implementation of read() operation
[in,out] | a | where to put the data to read |
[in] | size | says how much data to read |
Implemented in libdar::sar, libdar::trivial_sar, libdar::tronc, libdar::compressor, libdar::tuyau, libdar::zapette, libdar::cache, libdar::null_file, and libdar::scrambler.
|
protectedpure virtual |
tells the object that several calls to read() will follow to probably obtain at least the given amount of data
[in] | amount | is the maximum expected amount of data that is known to be read |
Implemented in libdar::sar, libdar::trivial_sar, libdar::tronc, libdar::compressor, libdar::tuyau, libdar::zapette, libdar::cache, libdar::null_file, and libdar::scrambler.
|
protectedpure virtual |
write down any pending data
Implemented in libdar::sar, libdar::trivial_sar, libdar::tronc, libdar::compressor, libdar::tuyau, libdar::zapette, libdar::null_file, libdar::cache, and libdar::scrambler.
|
protectedpure virtual |
destructor-like call, except that it is allowed to throw exceptions
Implemented in libdar::sar, libdar::trivial_sar, libdar::tronc, libdar::compressor, libdar::tuyau, libdar::zapette, libdar::null_file, libdar::cache, and libdar::scrambler.
|
protectedpure virtual |
implementation of the write() operation
[in] | a | what data to write |
[in] | size | amount of data to write |
Implemented in libdar::sar, libdar::trivial_sar, libdar::tronc, libdar::compressor, libdar::tuyau, libdar::zapette, libdar::cache, libdar::null_file, and libdar::scrambler.
|
inlineprotected |
is some specific call (skip() & Co.) need to be forbidden when the object has been terminated, one can use this call to check the terminated status
Definition at line 316 of file generic_file.hpp.
Referenced by libdar::zapette::get_position(), libdar::tronconneuse::get_position(), libdar::zapette::skip_to_eof(), libdar::trivial_sar::skip_to_eof(), and libdar::tronconneuse::write_end_of_file().
U_I libdar::generic_file::read | ( | char * | a, |
U_I | size | ||
) |
read data from the generic_file
[in,out] | a | is where to put the data to read |
[in] | size | is how much data to read |
Referenced by read_forward().
|
virtual |
read ahead information
[in] | amount | is the expected amount of data the caller will read, if zero is given the object shall prepare as much as possible data for reading until a skip request, write request or a new read_ahead request |
Referenced by libdar::scrambler::inherited_read_ahead(), libdar::cache::inherited_read_ahead(), libdar::compressor::inherited_read_ahead(), and libdar::trivial_sar::inherited_read_ahead().
void libdar::generic_file::reset_crc | ( | const infinint & | width | ) |
reset CRC on read or writen data
[in] | width | is the width to use for the CRC |
|
pure virtual |
skip at the absolute position
[in] | pos | the offset in byte where next read/write operation must start |
Implemented in libdar::sar, libdar::trivial_sar, libdar::tronconneuse, libdar::compressor, libdar::tronc, libdar::tuyau, libdar::zapette, libdar::cache, libdar::null_file, and libdar::scrambler.
Referenced by libdar::compressor::skip().
|
pure virtual |
whether the implementation is able to skip
Implemented in libdar::sar, libdar::trivial_sar, libdar::tronconneuse, libdar::compressor, libdar::tuyau, libdar::tronc, libdar::zapette, libdar::cache, libdar::null_file, and libdar::scrambler.
Referenced by libdar::compressor::skippable(), and libdar::trivial_sar::skippable().
void libdar::generic_file::write | ( | const char * | a, |
U_I | size | ||
) |
write data to the generic_file
void libdar::generic_file::write | ( | const std::string & | arg | ) |
write a string to the generic_file