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

#include <inputHandlerDummy.h>

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

Classes

class  DummyDirectory
 
class  readerDummy
 

Public Member Functions

 dummy ()
 
 ~dummy () override=default
 
std::unique_ptr< readernewReader (const std::string &aPath, copyRequest::stateType &state, const genericStat &inititalStat) override
 get a reader for the file at path More...
 
bool pathExists (const std::string &) override
 
std::unique_ptr< const genericStatgetStat (const std::string &path, bool followLink) override
 
std::unique_ptr< DirectorygetDirectory (const std::string &path) override
 
- Public Member Functions inherited from inputHandler::base
virtual ~base () override=default
 
virtual bool readLinkTarget (const std::string &, std::vector< char > &)
 read link target from a symlink More...
 
virtual std::unique_ptr< acl::listgetAclData (const std::string &)
 
- Public Member Functions inherited from pathHandler
virtual ~pathHandler ()=default
 
virtual std::string getXattr (const std::string &, const std::string &)
 

Static Private Member Functions

static const blockrandomBlock ()
 

Static Private Attributes

static factoryTemplate< dummyfactory
 
static options::container< unsigned int > nFiles
 
static options::container< unsigned int > nDirs
 
static options::single< options::postFixedNumber< size_t > > minSize
 
static options::single< options::postFixedNumber< size_t > > maxSize
 
static options::single< bool > noCopy
 
static genericStat::clock_type::time_point mTime
 

Additional Inherited Members

- Static Public Member Functions inherited from inputHandler::base
static basenewHandler (const std::string &name)
 create an instance of an inputHandler, select by name More...
 
template<class T >
static void addAllowedNamesToOption (T &option)
 
- Protected Member Functions inherited from inputHandler::base
 base ()=default
 
- Static Protected Member Functions inherited from inputHandler::base
static std::map< std::string, factoryClass * > & getFactoryMap ()
 

Detailed Description

Definition at line 14 of file inputHandlerDummy.h.

Constructor & Destructor Documentation

◆ dummy()

inputHandler::dummy::dummy ( )

Definition at line 41 of file inputHandlerDummy.cpp.

41  {
42  }

◆ ~dummy()

inputHandler::dummy::~dummy ( )
overridedefault

Member Function Documentation

◆ getDirectory()

std::unique_ptr< base::Directory > inputHandler::dummy::getDirectory ( const std::string &  path)
overridevirtual

Implements inputHandler::base.

Definition at line 199 of file inputHandlerDummy.cpp.

199  {
200  if (path.find("/dummy/") == 0) {
201  return std::unique_ptr<Directory>(new DummyDirectory(path));
202  } else {
203  static inputHandler::posixFile posixHandler;
204  return posixHandler.getDirectory(path);
205  }
206  }

References inputHandler::posixFile::getDirectory().

Here is the call graph for this function:

◆ getStat()

std::unique_ptr< const genericStat > inputHandler::dummy::getStat ( const std::string &  path,
bool  followLink 
)
overridevirtual

Implements pathHandler.

Definition at line 119 of file inputHandlerDummy.cpp.

120  {
121  if (path.find("/dummy/") == 0) {
122  auto basename = path.substr(path.find_last_of('/')+1);
123  auto stat = new genericStat;
124  stat->device = 12345;
125  if (basename.find("file_") == 0) {
126  stat->mode = S_IFREG;
127  stat->size = std::stoll(basename.substr(5));
128  stat->mTime = mTime;
129  stat->aTime = mTime;
130  stat->blksize = randomBlock().max_size();
131  } else {
132  stat->mode = S_IFDIR;
133  }
134  return std::unique_ptr<const genericStat>(stat);
135  } else {
136  static posixFileCommon posixHandler;
137  return posixHandler.getStat(path, followLink);
138  }
139  }

References genericStat::device, posixFileCommon::getStat(), block::max_size(), mTime, and randomBlock().

Here is the call graph for this function:

◆ newReader()

std::unique_ptr< base::reader > inputHandler::dummy::newReader ( const std::string &  path,
copyRequest::stateType state,
const genericStat inititalStat 
)
overridevirtual

get a reader for the file at path

Returns
unique ptr to a file reader.
Exceptions
std::system_errorif file can't be opened File will be closed when the pointer goes out of scope.
Parameters
[in]path[in] path to the file to be opened for reading
[in,out]state[in,out] state may be set to vanished if the file does not exist
[in]inititalStat[in] genericStat data of the file encountered before reading, needed for checking unchangedness at the end

Implements inputHandler::base.

Definition at line 44 of file inputHandlerDummy.cpp.

46  {
47  return std::unique_ptr<base::reader>(new readerDummy(aPath,
48  state,
49  inititalStat));
50  }

◆ pathExists()

bool inputHandler::dummy::pathExists ( const std::string &  )
overridevirtual

Implements pathHandler.

Definition at line 116 of file inputHandlerDummy.cpp.

116  {
117  return true;
118  }

◆ randomBlock()

const block & inputHandler::dummy::randomBlock ( )
staticprivate

Definition at line 24 of file inputHandlerDummy.cpp.

24  {
25  static const block* data = nullptr;
26  if (data == nullptr) {
27  timerInst(createRandomBlock);
28  auto buffer = new block(16*1024*1024);
29  std::default_random_engine re;
30  for (auto p=static_cast<decltype(re)::result_type*>(buffer->bufferAt(0));
31  p < static_cast<decltype(re)::result_type*>(buffer->bufferAt(buffer->max_size()/sizeof(*p)));
32  ++p) {
33  *p = re();
34  }
35  buffer->bump_size(buffer->max_size());
36  data = buffer;
37  }
38  return *data;
39  }

References timerInst.

Referenced by inputHandler::dummy::DummyDirectory::getNextEntry(), getStat(), inputHandler::dummy::readerDummy::readBlock(), and inputHandler::dummy::readerDummy::readBlockP().

Here is the caller graph for this function:

Member Data Documentation

◆ factory

factoryTemplate<dummy> inputHandler::dummy::factory
staticprivate

Definition at line 15 of file inputHandlerDummy.h.

◆ maxSize

options::single<options::postFixedNumber<size_t> > inputHandler::dummy::maxSize
staticprivate

◆ minSize

options::single<options::postFixedNumber<size_t> > inputHandler::dummy::minSize
staticprivate

◆ mTime

genericStat::clock_type::time_point inputHandler::dummy::mTime
staticprivate

◆ nDirs

options::container<unsigned int> inputHandler::dummy::nDirs
staticprivate

◆ nFiles

options::container<unsigned int> inputHandler::dummy::nFiles
staticprivate

◆ noCopy

options::single<bool> inputHandler::dummy::noCopy
staticprivate

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
block
data block, used to hold the data that are being copied (or checksummed).
Definition: block.h:7
inputHandler::posixFile
Definition: inputHandlerPosixFile.h:15
genericStat::device
dev_t device
Definition: genericStat.h:15
posixFileCommon::getStat
std::unique_ptr< const genericStat > getStat(const std::string &path, bool followLink) override
Definition: posixFileCommon.cpp:30
inputHandler::dummy::mTime
static genericStat::clock_type::time_point mTime
Definition: inputHandlerDummy.h:22
timerInst
#define timerInst(subfunc)
Definition: timer.h:157
inputHandler::dummy::randomBlock
static const block & randomBlock()
Definition: inputHandlerDummy.cpp:24
inputHandler::posixFile::getDirectory
std::unique_ptr< Directory > getDirectory(const std::string &path) override
Definition: inputHandlerPosixFile.cpp:312
posixFileCommon
Definition: posixFileCommon.h:6