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

#include <inputHandlerDummy.h>

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

Public Member Functions

 DummyDirectory (const std::string &path)
 
 ~DummyDirectory () noexcept(false) override
 
std::unique_ptr< Entry > getNextEntry (bool ignoreMissing) override
 

Private Attributes

unsigned int nFilesLeft
 
unsigned int nDirsLeft
 
unsigned int level
 

Detailed Description

Definition at line 46 of file inputHandlerDummy.h.

Constructor & Destructor Documentation

◆ DummyDirectory()

inputHandler::dummy::DummyDirectory::DummyDirectory ( const std::string &  path)

Definition at line 141 of file inputHandlerDummy.cpp.

141  : Directory(aPath) {
142  if (path.find("/dummy/") == 0) {
143  auto basename = path.substr(path.find_last_of('/')+1);
144  if (basename.empty()) { // tld
145  level = 0;
146  } else if (basename.find("dir_") == 0) {
147  level = std::stoul(basename.substr(4));
148  } else {
149  throw std::logic_error(aPath + " is not a directory");
150  }
151  if (nFiles.size() <= level) {
152  nFilesLeft = 0;
153  } else {
154  nFilesLeft = nFiles.at(level);
155  }
156  if (nDirs.size() <= level) {
157  nDirsLeft = 0;
158  } else {
159  nDirsLeft = nDirs.at(level);
160  }
161  } else {
162  throw std::logic_error("dummy directories mist start with /dummy/, not " + aPath);
163  }
164  }

References level, inputHandler::dummy::nDirs, nDirsLeft, inputHandler::dummy::nFiles, and nFilesLeft.

◆ ~DummyDirectory()

inputHandler::dummy::DummyDirectory::~DummyDirectory ( )
overridenoexcept

Definition at line 165 of file inputHandlerDummy.cpp.

165  {
166  }

Member Function Documentation

◆ getNextEntry()

std::unique_ptr< base::Directory::Entry > inputHandler::dummy::DummyDirectory::getNextEntry ( bool  ignoreMissing)
override

Definition at line 167 of file inputHandlerDummy.cpp.

167  {
168  if (nFilesLeft) {
169  --nFilesLeft;
170  std::string name("file_");
171  auto stat = std::unique_ptr<genericStat>(new genericStat);
172  std::uniform_int_distribution<size_t> distribution(minSize, maxSize);
173  static std::default_random_engine rnd;
174  stat->size = distribution(rnd);
175  stat->device = 12345;
176  stat->mode = S_IFREG;
177  stat->blksize = randomBlock().max_size();
178  stat->mTime = mTime;
179  stat->aTime = mTime;
180  name += std::to_string(stat->size);
181  name += "_";
182  name += std::to_string(nFilesLeft);
183  return std::unique_ptr<Entry>(new Entry(name, stat));
184  } else if (nDirsLeft) {
185  --nDirsLeft;
186  std::string name("dir_");
187  auto stat = std::unique_ptr<genericStat>(new genericStat);
188  stat->device = 12345;
189  stat->mode = S_IFDIR;
190  stat->mTime = mTime;
191  stat->aTime = mTime;
192  name += std::to_string(level+1);
193  name += "_";
194  name += std::to_string(nDirsLeft);
195  return std::unique_ptr<Entry>(new Entry(name, stat));
196  }
197  return nullptr;
198  }

References distribution, block::max_size(), inputHandler::dummy::maxSize, inputHandler::dummy::minSize, inputHandler::dummy::mTime, and inputHandler::dummy::randomBlock().

Here is the call graph for this function:

Member Data Documentation

◆ level

unsigned int inputHandler::dummy::DummyDirectory::level
private

Definition at line 49 of file inputHandlerDummy.h.

Referenced by DummyDirectory().

◆ nDirsLeft

unsigned int inputHandler::dummy::DummyDirectory::nDirsLeft
private

Definition at line 48 of file inputHandlerDummy.h.

Referenced by DummyDirectory().

◆ nFilesLeft

unsigned int inputHandler::dummy::DummyDirectory::nFilesLeft
private

Definition at line 47 of file inputHandlerDummy.h.

Referenced by DummyDirectory().


The documentation for this class was generated from the following files:
block::max_size
size_t max_size() const
Definition: block.h:22
inputHandler::dummy::DummyDirectory::level
unsigned int level
Definition: inputHandlerDummy.h:49
genericStat
generic stat abstraction class Used to abstract the variants of the stat structure.
Definition: genericStat.h:12
inputHandler::dummy::maxSize
static options::single< options::postFixedNumber< size_t > > maxSize
Definition: inputHandlerDummy.h:20
inputHandler::dummy::nDirs
static options::container< unsigned int > nDirs
Definition: inputHandlerDummy.h:18
inputHandler::dummy::DummyDirectory::nFilesLeft
unsigned int nFilesLeft
Definition: inputHandlerDummy.h:47
inputHandler::dummy::DummyDirectory::nDirsLeft
unsigned int nDirsLeft
Definition: inputHandlerDummy.h:48
inputHandler::dummy::minSize
static options::single< options::postFixedNumber< size_t > > minSize
Definition: inputHandlerDummy.h:19
inputHandler::dummy::mTime
static genericStat::clock_type::time_point mTime
Definition: inputHandlerDummy.h:22
inputHandler::dummy::randomBlock
static const block & randomBlock()
Definition: inputHandlerDummy.cpp:24
distribution
static options::single< std::string > distribution('d', "distribution", "distribution type", "constant", {"constant", "uniform", "geometric", "gauss"})
inputHandler::dummy::nFiles
static options::container< unsigned int > nFiles
Definition: inputHandlerDummy.h:17