ewmscp  ..
ioHandle.h
Go to the documentation of this file.
1 #ifndef __ioHandle_h__
2 #define __ioHandle_h__
3 #include "genericStat.h"
4 #include "copyRequestTypes.h"
5 #include "acl.h"
6 #include <memory>
7 #include <forward_list>
8 
9 namespace outputHandler {
10  class base;
11 };
15 class ioHandle {
16  protected:
17  size_t blockSize;
18  public:
19 
22  class attrDataType {
23  protected:
24  std::forward_list<std::pair<std::string, std::string>> xattrs;
25  public:
26  virtual ~attrDataType() = default;
27 
30  virtual void set(ioHandle* handle
31  ) = 0;
32  };
33 
34  ioHandle(): blockSize(16 * 1024 * 1024) {};
35  virtual ~ioHandle() noexcept(false) {};
36 
38  virtual bool parallelizable() const {
39  return false;
40  }
41 
42 
43  virtual void setXattr(const std::string& /*name*/, const std::string& /*value*/) {
44  throw unimplementedActionError("xattr setting not implemented");
45  };
46 
51  virtual std::string getXattr(const std::string& /*name*/
52  ) {
53  throw unimplementedActionError("xattr getting not implemented");
54  };
55  virtual void removeXattr(const std::string& /*name*/) {
56  throw unimplementedActionError("xattr removal not implemented");
57  };
58  virtual size_t getBlockSize() const {
59  return (blockSize);
60  };
61  virtual void setBlockSize(size_t newSize) {
62  blockSize = newSize;
63  };
64  virtual std::unique_ptr<const genericStat> getStat() = 0;
65 
69  virtual std::unique_ptr<attrDataType> getAttrData(const outputHandler::base* /*aOutputHandler*/
70  ) {
71  return nullptr;
72  };
73 
77  virtual std::unique_ptr<acl::list> getAclData() {
78  return nullptr;
79  }
80 
81 };
82 
83 #endif
ioHandle::setXattr
virtual void setXattr(const std::string &, const std::string &)
Definition: ioHandle.h:43
ioHandle::attrDataType
class for asttribute data, abstract base to be implemented for specific handlers
Definition: ioHandle.h:22
genericStat.h
ioHandle::getStat
virtual std::unique_ptr< const genericStat > getStat()=0
ioHandle::removeXattr
virtual void removeXattr(const std::string &)
Definition: ioHandle.h:55
copyRequestTypes.h
ioHandle::attrDataType::~attrDataType
virtual ~attrDataType()=default
unimplementedActionError
class for exceptions that result from unimplemented functions Exceptions of this kind are to be throw...
Definition: copyRequestTypes.h:32
ioHandle::getAttrData
virtual std::unique_ptr< attrDataType > getAttrData(const outputHandler::base *)
get attributes in the optimal way for setting with aOutputHandler
Definition: ioHandle.h:69
ioHandle::attrDataType::xattrs
std::forward_list< std::pair< std::string, std::string > > xattrs
Definition: ioHandle.h:24
ioHandle::getXattr
virtual std::string getXattr(const std::string &)
get one extended attribute value
Definition: ioHandle.h:51
ioHandle::ioHandle
ioHandle()
Definition: ioHandle.h:34
outputHandler
Definition: ioHandle.h:9
ioHandle::getBlockSize
virtual size_t getBlockSize() const
Definition: ioHandle.h:58
acl.h
ioHandle::blockSize
size_t blockSize
in bytes, block size to be used when reading or writing
Definition: ioHandle.h:17
outputHandler::base
Definition: outputHandler.h:17
ioHandle::attrDataType::set
virtual void set(ioHandle *handle)=0
set this set of attributes on the file described by handle
ioHandle::~ioHandle
virtual ~ioHandle() noexcept(false)
Definition: ioHandle.h:35
ioHandle
class as base for inputHandler::base::reader and outputHandler::base::writer containing the common pa...
Definition: ioHandle.h:15
ioHandle::getAclData
virtual std::unique_ptr< acl::list > getAclData()
get acls
Definition: ioHandle.h:77
ioHandle::setBlockSize
virtual void setBlockSize(size_t newSize)
Definition: ioHandle.h:61
ioHandle::parallelizable
virtual bool parallelizable() const
tell if this handler is capable of parallel IO. Unsually not the case
Definition: ioHandle.h:38