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

let a generic_file be managed by another thread More...

#include <generic_thread.hpp>

Inherits libdar::generic_file.

Public Member Functions

 generic_thread (generic_file *ptr, U_I data_block_size=tampon_block_size, U_I data_num_block=tampon_num_block, U_I ctrl_block_size=tampon_block_size_ctrl, U_I ctrl_num_block=tampon_num_block_ctrl)
 constructor More...
 
 generic_thread (const generic_thread &ref)=delete
 
 generic_thread (generic_thread &&ref) noexcept=delete
 
generic_threadoperator= (const generic_thread &ref)=delete
 
generic_threadoperator= (generic_thread &&ref) noexcept=delete
 
virtual bool skippable (skippability direction, const infinint &amount) override
 whether the implementation is able to skip More...
 
virtual bool skip (const infinint &pos) override
 skip at the absolute position More...
 
virtual bool skip_to_eof () override
 skip to the end of file
 
virtual bool skip_relative (S_I x) override
 skip relatively to the current position
 
virtual infinint get_position () const override
 get the current read/write position
 
- Public Member Functions inherited from libdar::generic_file
 generic_file (gf_mode m)
 main constructor
 
 generic_file (const generic_file &ref)
 copy constructor
 
 generic_file (generic_file &&ref) noexcept
 move constructor
 
generic_fileoperator= (const generic_file &ref)
 assignment operator
 
generic_fileoperator= (generic_file &&ref) noexcept
 move operator
 
 ~generic_file () noexcept(false)
 virtual destructor, More...
 
void terminate ()
 destructor-like call, except that it is allowed to throw exceptions
 
bool operator== (generic_file &ref)
 
bool operator!= (generic_file &ref)
 
gf_mode get_mode () const
 retreive the openning mode for this object
 
void read_ahead (const infinint &amount)
 
void ignore_read_ahead (bool mode)
 
virtual U_I read (char *a, U_I size) override
 read data from the generic_file inherited from proto_generic_file
 
virtual void write (const char *a, U_I size) override
 write data to the generic_file inherited from proto_generic_file
 
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
 
crcget_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
 
- Public Member Functions inherited from libdar::proto_generic_file
 proto_generic_file (const proto_generic_file &ref)=default
 copy constructor
 
 proto_generic_file (proto_generic_file &&ref) noexcept=default
 move constructor
 
proto_generic_fileoperator= (const proto_generic_file &ref)=default
 assignment operator
 
proto_generic_fileoperator= (proto_generic_file &&ref) noexcept=default
 move operator
 
virtual ~proto_generic_file () noexcept(false)
 virtual destructor More...
 

Static Public Attributes

static constexpr unsigned int tampon_block_size = 102401
 
static constexpr unsigned int tampon_num_block = 1000
 
static constexpr unsigned int tampon_block_size_ctrl = 1024
 
static constexpr unsigned int tampon_num_block_ctrl = 10
 

Protected Member Functions

virtual void inherited_read_ahead (const infinint &amount) override
 tells the object that several calls to read() will follow to probably obtain at least the given amount of data More...
 
virtual U_I inherited_read (char *a, U_I size) override
 implementation of read() operation More...
 
virtual void inherited_write (const char *a, U_I size) override
 implementation of the write() operation More...
 
virtual void inherited_sync_write () override
 generic_file inherited method to sync all pending writes More...
 
virtual void inherited_flush_read () override
 reset internal engine, flush caches in order to read the data at current position More...
 
virtual void inherited_terminate () override
 destructor-like call, except that it is allowed to throw exceptions More...
 
- Protected Member Functions inherited from libdar::generic_file
void set_mode (gf_mode x)
 
bool is_terminated () const
 

Private Member Functions

void send_order ()
 
void read_answer ()
 
void check_answer (msg_type expected)
 
void wake_up_slave_if_asked ()
 check whether an order to wakeup the slave has been received, and send wake up the slave
 
void release_block_answer ()
 
void release_data_ptr ()
 
void purge_data_pipe ()
 drops all data in the toslave_data pipe
 
void my_run ()
 
void my_join ()
 

Private Attributes

libthreadar::fast_tampon< char > toslave_data
 
libthreadar::fast_tampon< char > tomaster_data
 
libthreadar::fast_tampon< char > toslave_ctrl
 
libthreadar::fast_tampon< char > tomaster_ctrl
 
slave_thread * remote
 
bool reached_eof
 whether we reached end of file
 
char data_header
 contains 1 byte header for data
 
char data_header_eof
 contains 1 byte header for data + eof
 
bool running
 whether a remote is expected to run, tid is then set
 
pthread_t tid
 thread id of remote
 
messaging_encode order
 
messaging_decode answer
 
unsigned int num
 
char * ptr
 
label dataname
 

Additional Inherited Members

- Public Types inherited from libdar::generic_file
enum  skippability { skip_backward, skip_forward }
 

Detailed Description

let a generic_file be managed by another thread

Definition at line 44 of file generic_thread.hpp.


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