26#ifndef TRIVIAL_SAR_HPP
27#define TRIVIAL_SAR_HPP
63 const label & data_name,
64 const std::string & execute,
71 bool format_07_compatible
89 const label & internal_name,
90 const label & data_name,
91 bool format_07_compatible,
92 const std::string & execute
the contextual class adds the information of phases in the generic_file
this is the interface class from which all other data transfer classes inherit
virtual bool truncatable(const infinint &pos) const =0
whether the implementation is able to truncate to the given position
virtual void truncate(const infinint &pos)
truncate file at the given offset
virtual bool skippable(skippability direction, const infinint &amount)=0
whether the implementation is able to skip
void read_ahead(const infinint &amount)
void flush_read()
be ready to read at current position, reseting all pending data for reading, cached and in compressio...
virtual bool skip_to_eof()=0
skip to the end of file
bool is_terminated() const
void sync_write()
write any pending data
the arbitrary large positive integer class
manage label data structure used in archive slice headers
class mem_ui to keep a copy of a user_interaction object
void disable_natural_destruction()
disable execution of user command when destroying the current object
virtual bool skip(const infinint &pos) override
skip at the absolute position
label of_data_name
archive's data name
const infinint & get_slice_header_size() const
size of the slice header
trivial_sar(const std::shared_ptr< user_interaction > &dialog, const std::string &pipename, bool lax)
constructor to read a (single sliced) archive from a pipe
virtual void inherited_truncate(const infinint &pos) override
truncate file at the give offset
std::string hook
command to execute after slice writing (not used in read-only mode)
virtual void inherited_write(const char *a, U_I size) override
implementation of the write() operation
virtual void inherited_terminate() override
destructor-like call, except that it is allowed to throw exceptions
virtual void inherited_flush_read() override
reset internal engine, flush caches in order to read the data at current position
virtual bool truncatable(const infinint &pos) const override
whether the implementation is able to truncate to the given position
std::string hook_where
what value to use for p substitution in hook
void init(const label &internal_name)
write the slice header and set the offset field (write mode), or (read-mode), reads the slice header ...
virtual const label & get_data_name() const override
obtain the data_name of the archive (label associated with the archive's data)
infinint cur_pos
current position as returned by get_position()
infinint offset
offset to apply to get the first byte of data out of SAR headers
trivial_sar(const std::shared_ptr< user_interaction > &dialog, gf_mode open_mode, const std::string &base_name, const std::string &extension, const entrepot &where, const label &internal_nale, const label &data_name, const std::string &execute, bool allow_over, bool warn_over, bool force_permission, U_I permission, hash_algo x_hash, const infinint &min_digits, bool format_07_compatible)
constructor to build a new single sliced archive
generic_file * reference
points to the underlying data, owned by "this"
std::string base_url
what value to use for u substitution in hook
void enable_natural_destruction()
enable back execution of user command when destroying the current object
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 amoun...
std::string base
basename of the archive (used for string susbstitution in hook)
virtual bool skip_to_eof() override
skip to the end of file
virtual void inherited_sync_write() override
write down any pending data
virtual U_I inherited_read(char *a, U_I size) override
implementation of read() operation
virtual bool skippable(skippability direction, const infinint &amount) override
whether the implementation is able to skip
bool natural_destruction
whether user command is executed once the single sliced archive is completed (disable upon user inter...
virtual bool skip_relative(S_I x) override
skip relatively to the current position
trivial_sar(const std::shared_ptr< user_interaction > &dialog, generic_file *f, const label &internal_name, const label &data_name, bool format_07_compatible, const std::string &execute)
constructor to write a (single sliced) archive to a anonymous pipe
virtual bool is_an_old_start_end_archive() const override
returns whether the archive is a old archive (format < 8)
trivial_sar(const std::shared_ptr< user_interaction > &dialog, int filedescriptor, bool lax)
infinint min_digits
minimum number of digits in slice name
trivial_sar(const trivial_sar &ref)=delete
copy constructor (disabled)
trivial_sar & operator=(const trivial_sar &ref)=delete
assignment operator (disabled)
bool old_sar
true if the read sar has an old header (format <= "07") or the to be written must keep a version 07 f...
trivial_sar(trivial_sar &&ref) noexcept=delete
move constructor
infinint end_of_slice
when end of slice/archive is met, there is an offset by 1 compared to the offset of reference....
virtual infinint get_position() const override
get the current read/write position
std::string ext
extension of the archive (used for string substitution in hook)
class contextual adds the information of phases in the generic_file
hash_algo
hashing algorithm available
std::string sar_make_filename(const std::string &base_name, const infinint &num, const infinint &min_digits, const std::string &ext)
return the name of a slice given the base_name, slice number and extension
gf_mode
generic_file openning modes
include macro defined by the configure script and some specific additional ones
libdar namespace encapsulate all libdar symbols
defines the entrepot interface.
class generic_file is defined here as well as class fichier
switch module to limitint (32 ou 64 bits integers) or infinint
are defined here basic integer types that tend to be portable
class mem_ui definition. This class is to be used as parent class to handle user_interaction object m...