ewmscp  ..
Public Member Functions | Private Attributes | List of all members
inputHandler::dummy::readerDummy Class Reference

#include <inputHandlerDummy.h>

Inheritance diagram for inputHandler::dummy::readerDummy:
[legend]
Collaboration diagram for inputHandler::dummy::readerDummy:
[legend]

Public Member Functions

 readerDummy (const std::string &aPath, copyRequest::stateType &state, const genericStat &inititalStat)
 
 ~readerDummy () override
 
bool parallelizable () const override
 tell if this handler is capable of parallel IO. Unsually not the case More...
 
bool readBlock (block &b) override
 read one block from the file More...
 
void readBlockP (block &b, size_t bytesToRead, off_t offset) override
 read one block from the file, starting at offset. More...
 
void checkUnchangedness () override
 check if the file is unchanged by comparing cuttent stat to initial stat More...
 
std::unique_ptr< const genericStatgetStat () override
 
- Public Member Functions inherited from inputHandler::base::reader
virtual ~reader () noexcept(false)=default
 
virtual bool setupSparseRegions (const std::string &)
 set up internal list of data and hole regions, normally does nothing More...
 
virtual void seek (size_t)
 like the standard seek, to be used only when appending new data to a file More...
 
- Public Member Functions inherited from ioHandle
 ioHandle ()
 
virtual ~ioHandle () noexcept(false)
 
virtual void setXattr (const std::string &, const std::string &)
 
virtual std::string getXattr (const std::string &)
 get one extended attribute value More...
 
virtual void removeXattr (const std::string &)
 
virtual size_t getBlockSize () const
 
virtual void setBlockSize (size_t newSize)
 
virtual std::unique_ptr< attrDataTypegetAttrData (const outputHandler::base *)
 get attributes in the optimal way for setting with aOutputHandler More...
 
virtual std::unique_ptr< acl::listgetAclData ()
 get acls More...
 

Private Attributes

size_t size
 

Additional Inherited Members

- Protected Member Functions inherited from inputHandler::base::reader
 reader (const genericStat &inititalStat)
 
- Protected Member Functions inherited from unwindCheck
 unwindCheck ()=default
 
 ~unwindCheck ()=default
 
bool isUnwinding () const
 
- Protected Member Functions inherited from ioHandle
 ioHandle ()
 
virtual ~ioHandle () noexcept(false)
 
virtual void setXattr (const std::string &, const std::string &)
 
virtual std::string getXattr (const std::string &)
 get one extended attribute value More...
 
virtual void removeXattr (const std::string &)
 
virtual size_t getBlockSize () const
 
virtual void setBlockSize (size_t newSize)
 
virtual std::unique_ptr< attrDataTypegetAttrData (const outputHandler::base *)
 get attributes in the optimal way for setting with aOutputHandler More...
 
virtual std::unique_ptr< acl::listgetAclData ()
 get acls More...
 
- Protected Attributes inherited from inputHandler::base::reader
const genericStatreadInitialStat
 stat at beginning, needed for unchngedness check More...
 
std::remove_const< decltype(readInitialStat.size)>::type totalBytesRead = 0
 number of bytes read so far, needed for check on growing files More...
 
- Protected Attributes inherited from ioHandle
size_t blockSize
 in bytes, block size to be used when reading or writing More...
 

Detailed Description

Definition at line 24 of file inputHandlerDummy.h.

Constructor & Destructor Documentation

◆ readerDummy()

inputHandler::dummy::readerDummy::readerDummy ( const std::string &  aPath,
copyRequest::stateType state,
const genericStat inititalStat 
)

Definition at line 56 of file inputHandlerDummy.cpp.

58  :
59  ioHandle(),
60  reader(inititalStat) {
61  }

◆ ~readerDummy()

inputHandler::dummy::readerDummy::~readerDummy ( )
override

Definition at line 63 of file inputHandlerDummy.cpp.

63  {
64  }

Member Function Documentation

◆ checkUnchangedness()

void inputHandler::dummy::readerDummy::checkUnchangedness ( )
overridevirtual

check if the file is unchanged by comparing cuttent stat to initial stat

Exceptions
delayAdvisingErrorif file has changed according to size of mtime
std::system_errorif stat fails

Implements inputHandler::base::reader.

Definition at line 109 of file inputHandlerDummy.cpp.

109  {
110  }

◆ getStat()

std::unique_ptr< const genericStat > inputHandler::dummy::readerDummy::getStat ( )
overridevirtual

Implements ioHandle.

Definition at line 112 of file inputHandlerDummy.cpp.

112  {
113  return std::unique_ptr<const genericStat>(new genericStat(readInitialStat));
114  }

◆ parallelizable()

bool inputHandler::dummy::readerDummy::parallelizable ( ) const
overridevirtual

tell if this handler is capable of parallel IO. Unsually not the case

Reimplemented from ioHandle.

Definition at line 68 of file inputHandlerDummy.cpp.

68  {
69  return true;
70  }

◆ readBlock()

bool inputHandler::dummy::readerDummy::readBlock ( block b)
overridevirtual

read one block from the file

Returns
true if the last block was read, false if more to follow
Exceptions
std::system_errorif read fails
delayAdvisingErrorif file changes during reading

Implements inputHandler::base::reader.

Definition at line 71 of file inputHandlerDummy.cpp.

71  {
72  timerInst(read);
74  auto bytesToRead = readInitialStat.size - totalBytesRead;
75  if (bytesToRead > b.max_size()) {
76  bytesToRead = b.max_size();
77  }
78  if (! noCopy) {
79  if (randomBlock().size() < bytesToRead) {
80  throw std::runtime_error("random data block too small");
81  }
82  {
83  timerInst(memcpy);
84  memcpy(b.bufferAt(0), randomBlock().bufferAt(0), bytesToRead);
85  }
86  }
87  b.bump_size(bytesToRead);
88  totalBytesRead += bytesToRead;
90  }

References block::bufferAt(), block::bump_size(), block::clear(), block::max_size(), inputHandler::dummy::noCopy, inputHandler::dummy::randomBlock(), and timerInst.

Here is the call graph for this function:

◆ readBlockP()

void inputHandler::dummy::readerDummy::readBlockP ( block ,
size_t  ,
off_t   
)
overridevirtual

read one block from the file, starting at offset.

meant for pparallel reading, often not implemented only for non-sparse files

Exceptions
std::system_errorif read fails
delayAdvisingErrorif file changes during reading
std::logic_errorif attempted on sparse file

Reimplemented from inputHandler::base::reader.

Definition at line 93 of file inputHandlerDummy.cpp.

93  {
94  timerInst(readp);
95  b.clear(offset);
96  if (! noCopy) {
97  if (randomBlock().size() < bytesToRead) {
98  throw std::runtime_error("random data block too small");
99  }
100  {
101  timerInst(memcpy);
102  memcpy(b.bufferAt(0), randomBlock().bufferAt(0), bytesToRead);
103  }
104  }
105  b.bump_size(bytesToRead);
106  }

References block::bufferAt(), block::bump_size(), block::clear(), inputHandler::dummy::noCopy, inputHandler::dummy::randomBlock(), and timerInst.

Here is the call graph for this function:

Member Data Documentation

◆ size

size_t inputHandler::dummy::readerDummy::size
private

Definition at line 25 of file inputHandlerDummy.h.


The documentation for this class was generated from the following files:
block::max_size
size_t max_size() const
Definition: block.h:22
genericStat
generic stat abstraction class Used to abstract the variants of the stat structure.
Definition: genericStat.h:12
inputHandler::dummy::noCopy
static options::single< bool > noCopy
Definition: inputHandlerDummy.h:21
ioHandle::ioHandle
ioHandle()
Definition: ioHandle.h:34
block::bump_size
void bump_size(size_t additionalBytes)
Definition: block.h:33
inputHandler::base::reader::readInitialStat
const genericStat & readInitialStat
stat at beginning, needed for unchngedness check
Definition: inputHandler.h:74
genericStat::size
size_t size
Definition: genericStat.h:16
block::bufferAt
void * bufferAt(size_t offset)
only way to access the data in the block
Definition: block.cpp:28
inputHandler::base::reader::totalBytesRead
std::remove_const< decltype(readInitialStat.size)>::type totalBytesRead
number of bytes read so far, needed for check on growing files
Definition: inputHandler.h:75
inputHandler::base::reader::reader
reader(const genericStat &inititalStat)
Definition: inputHandler.h:76
timerInst
#define timerInst(subfunc)
Definition: timer.h:157
inputHandler::dummy::randomBlock
static const block & randomBlock()
Definition: inputHandlerDummy.cpp:24
block::clear
void clear(size_t aOffset)
Definition: block.h:28
inputHandler::dummy::readerDummy::size
size_t size
Definition: inputHandlerDummy.h:25