ewmscp  ..
outputHandlerPosixFile.h
Go to the documentation of this file.
1 #ifndef __outputHandlerPosixFile_h__
2 #define __outputHandlerPosixFile_h__
3 #include "outputHandler.h"
4 #include "posixFileCommon.h"
5 #include <sys/stat.h>
6 #include <sys/types.h>
7 
8 namespace outputHandler {
9 
10  class posixFile: public base, virtual public posixFileCommon {
12  public:
14  protected:
15  struct stat writeInitialStat;
16  std::unique_ptr<ioHandle::attrDataType> attrData;
17  std::unique_ptr<acl::list> aclData;
18  public:
19  writerPosixFile(const std::string& aPath,
20  bool mightAppend,
21  size_t sourceSize,
22  size_t readBlockSize,
24  bool noWrite,
25  std::unique_ptr<ioHandle::attrDataType> aAttrData,
26  std::unique_ptr<acl::list> aAclData);
27  writerPosixFile(std::string& aPath,
28  bool noWrite,
29  std::unique_ptr<ioHandle::attrDataType> aAttrData,
30  std::unique_ptr<acl::list> aAclData,
31  base& handler);
32  void closeAndRemoveBadCopy() override;
33  ~writerPosixFile() noexcept(false) override;
34  void seek(size_t position) override;
35  bool parallelizable() const override;
36  size_t getSize() const override;
37  void writeBlock(const block& b) override;
38  void writeBlockP(const block& b) override;
39  void doAttributePreservations(const genericStat& readInitialStat) override;
40  void sync() override;
41  };
42  posixFile() = default;
43  ~posixFile() override = default;
44  std::unique_ptr<writer> newWriter(const std::string& path,
45  bool mightAppend,
46  size_t sourceSize,
47  size_t readBlockSize,
48  copyRequest::stateType &state,
49  bool noWrite,
50  std::unique_ptr<ioHandle::attrDataType> attrData,
51  std::unique_ptr<acl::list> aclData) override;
52  std::unique_ptr<writer> newTmpWriter(std::string& path,
53  size_t sourceSize,
54  bool noWrite,
55  std::unique_ptr<ioHandle::attrDataType> attrData,
56  std::unique_ptr<acl::list> aclData) override;
57  void ensureParentDirs(const std::string& path,
58  const std::string& srcPath,
59  inputHandler::base* InputHandler) override;
60  void remove(const std::string& path, copyRequest::stateType& state) override;
61  bool renameSimple(const std::string& fromPath,
62  const std::string& toPath) override;
63  base::renameRetvalType rename(const std::string& fromPath,
64  const std::unique_ptr<const genericStat>& readInitialStat,
65  const std::string& toPath,
66  copyRequest::stateType& state) override;
67  void createSymlink(const std::vector<char>& target,
68  const std::string& path,
69  uid_t uid, gid_t gid) override;
70  void doAttributePreservations(const std::string& path,
71  const genericStat& stat) override;
72  size_t getMaxNameLength(const std::string& dirPath) override;
73  };
74 }; // end namespace outputHandler
75 
76 
77 #endif
outputHandler::posixFile::writerPosixFile::writeInitialStat
struct stat writeInitialStat
Definition: outputHandlerPosixFile.h:15
outputHandler::posixFile::writerPosixFile::aclData
std::unique_ptr< acl::list > aclData
Definition: outputHandlerPosixFile.h:17
outputHandler::posixFile
Definition: outputHandlerPosixFile.h:10
ioHandle::attrDataType
class for asttribute data, abstract base to be implemented for specific handlers
Definition: ioHandle.h:22
outputHandler::posixFile::writerPosixFile
Definition: outputHandlerPosixFile.h:13
inputHandler
Definition: inputHandler.h:29
outputHandler::posixFile::renameSimple
bool renameSimple(const std::string &fromPath, const std::string &toPath) override
Definition: outputHandlerPosixFile.cpp:141
outputHandler::posixFile::writerPosixFile::writeBlockP
void writeBlockP(const block &b) override
Definition: outputHandlerPosixFile.cpp:394
genericStat
generic stat abstraction class Used to abstract the variants of the stat structure.
Definition: genericStat.h:12
outputHandler::posixFile::newTmpWriter
std::unique_ptr< writer > newTmpWriter(std::string &path, size_t sourceSize, bool noWrite, std::unique_ptr< ioHandle::attrDataType > attrData, std::unique_ptr< acl::list > aclData) override
Definition: outputHandlerPosixFile.cpp:35
outputHandler
Definition: ioHandle.h:9
gid
options::single< int > gid
outputHandler::posixFile::writerPosixFile::doAttributePreservations
void doAttributePreservations(const genericStat &readInitialStat) override
Definition: outputHandlerPosixFile.cpp:410
copyRequest::stateType
Definition: copyRequestTypes.h:66
outputHandler::posixFile::ensureParentDirs
void ensureParentDirs(const std::string &path, const std::string &srcPath, inputHandler::base *InputHandler) override
Definition: outputHandlerPosixFile.cpp:55
outputHandler::posixFile::writerPosixFile::~writerPosixFile
~writerPosixFile() noexcept(false) override
Definition: outputHandlerPosixFile.cpp:323
outputHandler::posixFile::getMaxNameLength
size_t getMaxNameLength(const std::string &dirPath) override
Definition: outputHandlerPosixFile.cpp:470
outputHandler::posixFile::writerPosixFile::writerPosixFile
writerPosixFile(const std::string &aPath, bool mightAppend, size_t sourceSize, size_t readBlockSize, copyRequest::stateType &state, bool noWrite, std::unique_ptr< ioHandle::attrDataType > aAttrData, std::unique_ptr< acl::list > aAclData)
Definition: outputHandlerPosixFile.cpp:231
outputHandler::posixFile::remove
void remove(const std::string &path, copyRequest::stateType &state) override
Definition: outputHandlerPosixFile.cpp:97
outputHandler::posixFile::writerPosixFile::writeBlock
void writeBlock(const block &b) override
Definition: outputHandlerPosixFile.cpp:358
outputHandler::posixFile::writerPosixFile::attrData
std::unique_ptr< ioHandle::attrDataType > attrData
Definition: outputHandlerPosixFile.h:16
outputHandler::posixFile::writerPosixFile::seek
void seek(size_t position) override
Definition: outputHandlerPosixFile.cpp:346
outputHandler::base
Definition: outputHandler.h:17
outputHandler::base::writer
Definition: outputHandler.h:52
outputHandler::posixFile::writerPosixFile::parallelizable
bool parallelizable() const override
tell if this handler is capable of parallel IO. Unsually not the case
Definition: outputHandlerPosixFile.cpp:351
outputHandler::base::renameRetvalType
renameRetvalType
Definition: outputHandler.h:106
block
data block, used to hold the data that are being copied (or checksummed).
Definition: block.h:7
outputHandler::posixFile::newWriter
std::unique_ptr< writer > newWriter(const std::string &path, bool mightAppend, size_t sourceSize, size_t readBlockSize, copyRequest::stateType &state, bool noWrite, std::unique_ptr< ioHandle::attrDataType > attrData, std::unique_ptr< acl::list > aclData) override
Definition: outputHandlerPosixFile.cpp:20
outputHandler::posixFile::writerPosixFile::sync
void sync() override
Definition: outputHandlerPosixFile.cpp:477
outputHandler::posixFile::writerPosixFile::getSize
size_t getSize() const override
Definition: outputHandlerPosixFile.cpp:354
uid
options::single< int > uid
posixFileCommon.h
outputHandler::posixFile::writerPosixFile::closeAndRemoveBadCopy
void closeAndRemoveBadCopy() override
Definition: outputHandlerPosixFile.cpp:307
outputHandler::posixFile::createSymlink
void createSymlink(const std::vector< char > &target, const std::string &path, uid_t uid, gid_t gid) override
Definition: outputHandlerPosixFile.cpp:217
outputHandler::base::factoryTemplate
template for factoryClass-derived factories
Definition: outputHandler.h:39
posixFileIoCommon
base class for posixFile reader and writer class with the common stuff like fd, path and xattr handli...
Definition: posixFileCommon.h:17
posixFileCommon
Definition: posixFileCommon.h:6
ioHandle
class as base for inputHandler::base::reader and outputHandler::base::writer containing the common pa...
Definition: ioHandle.h:15
outputHandler::posixFile::factory
static factoryTemplate< posixFile > factory
Definition: outputHandlerPosixFile.h:11
copyRequest
Definition: checksumTestRequestProvider.cpp:25
posixFileIoCommon::path
const std::string & path
Definition: posixFileCommon.h:20
outputHandler.h
acl
Definition: acl.cpp:10
outputHandler::posixFile::rename
base::renameRetvalType rename(const std::string &fromPath, const std::unique_ptr< const genericStat > &readInitialStat, const std::string &toPath, copyRequest::stateType &state) override
Definition: outputHandlerPosixFile.cpp:153