![]() |
Disk ARchive
2.5.3
Full featured and portable backup and archiving tool
|
#include <cache.hpp>
Inherits libdar::generic_file.
Public Member Functions | |
cache (generic_file &hidden, bool shift_mode, U_I size=102400) | |
cache (const cache &ref) | |
const cache & | operator= (const cache &ref) |
void | change_to_read_write () |
bool | skippable (skippability direction, const infinint &amount) |
bool | skip (const infinint &pos) |
bool | skip_to_eof () |
skip to the end of file | |
bool | skip_relative (S_I x) |
skip relatively to the current position | |
infinint | get_position () const |
get the current read/write position | |
![]() | |
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 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 | inherited_read_ahead (const infinint &amount) |
U_I | inherited_read (char *a, U_I size) |
implementation of read() operation More... | |
void | inherited_write (const char *a, U_I size) |
implementation of the write() operation More... | |
void | inherited_sync_write () |
write down any pending data More... | |
void | inherited_flush_read () |
void | inherited_terminate () |
destructor-like call, except that it is allowed to throw exceptions More... | |
![]() | |
void | set_mode (gf_mode x) |
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) |
Additional Inherited Members | |
![]() | |
enum | skippability { skip_backward, skip_forward } |
the cache class implements a fixed length read/write caching mechanism
it is intended to reduce context switches when no compression is used and when reading or writing catalogue through a pipe. The catalogue read and write is done by calling dump/constructor methods of the many objects that a catalogue contains. This makes a lot of small reads or writes, which make very poor performances when used over the network through a pipe to ssh. When compression is used, the problem disapears as the compression engine gather these many small reads or writes into much bigger ones. This in only when there is no compression or encryption that this class is useful (and used). Another target of class cache is to provide limited skippability when data is read of written to pipe (which do not have any skippability)
|
inlineprotectedvirtual |
reset internal engine, flush caches in order to read the data at current position
Implements libdar::generic_file.
|
protectedvirtual |
implementation of read() operation
[in,out] | a | where to put the data to read |
[in] | size | says how much data to read |
Implements libdar::generic_file.
Referenced by inherited_read_ahead().
|
inlineprotectedvirtual |
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 |
Implements libdar::generic_file.
Definition at line 73 of file cache.hpp.
References inherited_read(), inherited_write(), and libdar::generic_file::read_ahead().
|
inlineprotectedvirtual |
write down any pending data
Implements libdar::generic_file.
|
inlineprotectedvirtual |
destructor-like call, except that it is allowed to throw exceptions
Implements libdar::generic_file.
|
protectedvirtual |
implementation of the write() operation
[in] | a | what data to write |
[in] | size | amount of data to write |
Implements libdar::generic_file.
Referenced by inherited_read_ahead().
|
virtual |
skip at the absolute position
[in] | pos | the offset in byte where next read/write operation must start |
Implements libdar::generic_file.
|
virtual |
whether the implementation is able to skip
Implements libdar::generic_file.