ewmscp  ..
Public Types | Public Member Functions | Private Attributes | List of all members
fileSizeGenerator Class Reference

Public Types

enum  distributionType { constant, uniform, geometric, gauss }
 

Public Member Functions

 fileSizeGenerator (const std::string &aDistribution, size_t size_parameter1, size_t size_parameter2, size_t max_size)
 
size_t getNumber ()
 

Private Attributes

std::mt19937 generator
 
std::geometric_distribution< size_t > geometric_dist
 
std::uniform_int_distribution< size_t > uniform_dist
 
std::normal_distribution< double > normal_dist
 
distributionType distribution
 
size_t parameter1
 
size_t parameter2
 
size_t maxFileSize
 

Detailed Description

Definition at line 208 of file fileopstest.cpp.

Member Enumeration Documentation

◆ distributionType

Enumerator
constant 
uniform 
geometric 
gauss 

Definition at line 210 of file fileopstest.cpp.

210  {
211  constant,
212  uniform,
213  geometric,
214  gauss
215  };

Constructor & Destructor Documentation

◆ fileSizeGenerator()

fileSizeGenerator::fileSizeGenerator ( const std::string &  aDistribution,
size_t  size_parameter1,
size_t  size_parameter2,
size_t  max_size 
)
inline

Definition at line 226 of file fileopstest.cpp.

229  :
230  parameter1(size_parameter1),
231  parameter2(size_parameter2),
232  maxFileSize(max_size) {
233  static std::random_device rd;
234  generator.seed(rd());
235 
236  if (aDistribution == "constant") {
238  } else if (aDistribution == "uniform") {
240  uniform_dist.param(decltype(uniform_dist)::param_type(parameter1, parameter2));
241  } else if (aDistribution == "geometric") {
243  geometric_dist.param(decltype(geometric_dist)::param_type(1. / parameter1));
244  } else if (aDistribution == "gauss") {
246  normal_dist.param(decltype(normal_dist)::param_type(static_cast<double>(parameter1),
247  static_cast<double>(parameter2)));
248  } else {
249  throw std::runtime_error("bad distribution parameter");
250  }
251  }

References constant, distribution, gauss, generator, geometric, geometric_dist, normal_dist, parameter1, parameter2, uniform, and uniform_dist.

Member Function Documentation

◆ getNumber()

size_t fileSizeGenerator::getNumber ( )
inline

Definition at line 252 of file fileopstest.cpp.

252  {
253  size_t result;
254 
255  switch (distribution) {
256  case constant:
257  result = parameter1;
258  break;
259 
260  case uniform:
261  result = uniform_dist(generator);
262  break;
263 
264  case geometric:
265  result = geometric_dist(generator);
266  break;
267 
268  case gauss:
269  result = normal_dist(generator);
270  break;
271 
272  default:
273  return 0;
274  }
275 
276  if (result > maxFileSize) {
277  result = maxFileSize;
278  }
279 
280  return result;
281  }

References constant, distribution, gauss, generator, geometric, geometric_dist, maxFileSize, normal_dist, parameter1, uniform, and uniform_dist.

Referenced by creator().

Here is the caller graph for this function:

Member Data Documentation

◆ distribution

distributionType fileSizeGenerator::distribution
private

Definition at line 221 of file fileopstest.cpp.

Referenced by fileSizeGenerator(), and getNumber().

◆ generator

std::mt19937 fileSizeGenerator::generator
private

Definition at line 217 of file fileopstest.cpp.

Referenced by fileSizeGenerator(), and getNumber().

◆ geometric_dist

std::geometric_distribution<size_t> fileSizeGenerator::geometric_dist
private

Definition at line 218 of file fileopstest.cpp.

Referenced by fileSizeGenerator(), and getNumber().

◆ maxFileSize

size_t fileSizeGenerator::maxFileSize
private

Definition at line 224 of file fileopstest.cpp.

Referenced by getNumber().

◆ normal_dist

std::normal_distribution<double> fileSizeGenerator::normal_dist
private

Definition at line 220 of file fileopstest.cpp.

Referenced by fileSizeGenerator(), and getNumber().

◆ parameter1

size_t fileSizeGenerator::parameter1
private

Definition at line 222 of file fileopstest.cpp.

Referenced by fileSizeGenerator(), and getNumber().

◆ parameter2

size_t fileSizeGenerator::parameter2
private

Definition at line 223 of file fileopstest.cpp.

Referenced by fileSizeGenerator().

◆ uniform_dist

std::uniform_int_distribution<size_t> fileSizeGenerator::uniform_dist
private

Definition at line 219 of file fileopstest.cpp.

Referenced by fileSizeGenerator(), and getNumber().


The documentation for this class was generated from the following file:
fileSizeGenerator::maxFileSize
size_t maxFileSize
Definition: fileopstest.cpp:224
fileSizeGenerator::parameter1
size_t parameter1
Definition: fileopstest.cpp:222
fileSizeGenerator::distribution
distributionType distribution
Definition: fileopstest.cpp:221
fileSizeGenerator::uniform
@ uniform
Definition: fileopstest.cpp:212
fileSizeGenerator::uniform_dist
std::uniform_int_distribution< size_t > uniform_dist
Definition: fileopstest.cpp:219
fileSizeGenerator::parameter2
size_t parameter2
Definition: fileopstest.cpp:223
fileSizeGenerator::normal_dist
std::normal_distribution< double > normal_dist
Definition: fileopstest.cpp:220
fileSizeGenerator::constant
@ constant
Definition: fileopstest.cpp:211
fileSizeGenerator::gauss
@ gauss
Definition: fileopstest.cpp:214
fileSizeGenerator::generator
std::mt19937 generator
Definition: fileopstest.cpp:217
fileSizeGenerator::geometric_dist
std::geometric_distribution< size_t > geometric_dist
Definition: fileopstest.cpp:218
fileSizeGenerator::geometric
@ geometric
Definition: fileopstest.cpp:213