 |
ewmscp
..
|
Go to the documentation of this file. 1 #ifndef __outputHandler_h__
2 #define __outputHandler_h__
23 static std::remove_reference<decltype(
getFactoryMap())>::type map;
50 ~base()
override =
default;
57 virtual void seek(
size_t position);
64 virtual void sync() = 0;
67 virtual std::unique_ptr<writer>
newWriter(
const std::string& path,
73 std::unique_ptr<ioHandle::attrDataType> attrData,
74 std::unique_ptr<acl::list> aclData) = 0;
75 virtual std::unique_ptr<writer>
newTmpWriter(std::string& path,
78 std::unique_ptr<ioHandle::attrDataType> attrData,
79 std::unique_ptr<acl::list> aclData);
83 return it->second->create();
85 throw std::runtime_error(
"no outputHandler factory called " + name);
89 option.fAddToRange(item.first);
95 const std::string& srcPath,
99 const std::string& toPath) = 0;
114 const std::unique_ptr<const genericStat>& readInitialStat,
115 const std::string& toPath,
124 const std::string& suffix) {
125 auto lastSlash = path.find_last_of(
'/');
127 size_t fileNameLength;
128 if (lastSlash != std::string::npos) {
129 fileNameLength = path.size() - lastSlash - 1;
130 dirPath = path.substr(0,lastSlash);
132 fileNameLength = path.size();
136 pathBuf.resize(path.size() - suffix.size());
virtual void ensureParentDirs(const std::string &path, const std::string &srcPath, inputHandler::base *InputHandler)=0
virtual renameRetvalType rename(const std::string &fromPath, const std::unique_ptr< const genericStat > &readInitialStat, const std::string &toPath, copyRequest::stateType &state)=0
generic stat abstraction class Used to abstract the variants of the stat structure.
factoryClass(const std::string &aName)
static base * newHandler(const std::string &name)
virtual void writeBlockP(const block &)
virtual 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)=0
virtual 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)
class for exceptions that result from unimplemented functions Exceptions of this kind are to be throw...
virtual void closeAndRemoveBadCopy()=0
static void addAllowedNamesToOption(T &option)
virtual ~writer()=default
data block, used to hold the data that are being copied (or checksummed).
virtual void remove(const std::string &path, copyRequest::stateType &state)=0
static std::map< std::string, factoryClass * > & getFactoryMap()
virtual bool renameSimple(const std::string &fromPath, const std::string &toPath)=0
factoryTemplate(const std::string &aName)
base * create() const override
virtual void seek(size_t position)
factory class to create outputHandler::base* objects
template for factoryClass-derived factories
virtual size_t getMaxNameLength(const std::string &dirPath)
virtual void doAttributePreservations(const genericStat &readInitialStat)=0
void shortenNameToMax(const std::string &path, C &pathBuf, const std::string &suffix)
virtual size_t getSize() const
virtual base * create() const =0
class as base for inputHandler::base::reader and outputHandler::base::writer containing the common pa...
virtual void writeBlock(const block &b)=0
virtual void createSymlink(const std::vector< char > &, const std::string &, uid_t, gid_t)
virtual void doAttributePreservations(const std::string &, const genericStat &)