ewmscp  ..
Public Member Functions | Static Private Attributes | List of all members
checksum::adler32noOpt Class Reference

derived from adler32, without optimisation for hole blocks More...

#include <adler32.h>

Inheritance diagram for checksum::adler32noOpt:
[legend]
Collaboration diagram for checksum::adler32noOpt:
[legend]

Public Member Functions

 adler32noOpt (const std::string &name)
 
void update (void *data, size_t size) override
 proces size bytes in the block at data More...
 
void update (size_t size) override
 proces size many zero bytes More...
 
void update (void *data, size_t size, size_t offset) override
 
void update (size_t size, size_t offset) override
 
- Public Member Functions inherited from checksum::adler32
 adler32 (const std::string &name)
 
void finish () override
 finish calculation ad write to result More...
 
bool parallelizable () const override
 
void parallelFinish () override
 
- Public Member Functions inherited from checksum::base
virtual ~base ()=default
 
const std::string & getName () const
 
const std::string & getResult () const
 
void setExpectedResult (const std::string &expectedResult)
 
const std::string & getExpectedResult () const
 
bool checkExpectation () const
 

Static Private Attributes

static factoryTemplate< adler32noOptfactory
 

Additional Inherited Members

- Static Public Member Functions inherited from checksum::base
static factoryClassnewFactory (const std::string &aName)
 
template<class T >
static void addAllowedNamesToOption (T &option)
 
- Protected Member Functions inherited from checksum::base
 base (const std::string &aName)
 
- Static Protected Member Functions inherited from checksum::base
static std::map< std::string, factoryClass * > & getFactoryMap ()
 
- Protected Attributes inherited from checksum::adler32
uint32_t adler
 
std::mutex partialSumsMutex
 
std::map< size_t, std::pair< uint32_t, size_t > > partialSums
 
- Protected Attributes inherited from checksum::base
const std::string & name
 
std::string result
 
std::string expected
 

Detailed Description

derived from adler32, without optimisation for hole blocks

Definition at line 32 of file adler32.h.

Constructor & Destructor Documentation

◆ adler32noOpt()

checksum::adler32noOpt::adler32noOpt ( const std::string &  name)

Definition at line 60 of file adler32.cpp.

60 : adler32(aName) {}

Member Function Documentation

◆ update() [1/4]

void checksum::adler32noOpt::update ( size_t  size)
overridevirtual

proces size many zero bytes

Reimplemented from checksum::adler32.

Definition at line 65 of file adler32.cpp.

65  { // case for block of zeroes
66  for (size_t bytes_done = 0; bytes_done < size;) {
67  auto missing = size - bytes_done;
68  size_t bytes = std::min(missing, block::nullBufferSize());
69 
70  adler = ::adler32(adler, static_cast<const unsigned char*>(block::nullBuffer()), bytes);
71  bytes_done += bytes;
72  }
73  }

References checksum::adler32::adler, checksum::adler32::adler32(), block::nullBuffer(), and block::nullBufferSize().

Here is the call graph for this function:

◆ update() [2/4]

void checksum::adler32noOpt::update ( size_t  size,
size_t  offset 
)
overridevirtual

Reimplemented from checksum::adler32.

Definition at line 82 of file adler32.cpp.

82  {
83  auto part = adler;
84  for (size_t bytes_done = 0; bytes_done < size;) {
85  auto missing = size - bytes_done;
86  size_t bytes = std::min(missing, block::nullBufferSize());
87 
88  part = ::adler32(part, static_cast<const unsigned char*>(block::nullBuffer()), bytes);
89  bytes_done += bytes;
90  }
91  std::lock_guard<decltype(partialSumsMutex)> lock(partialSumsMutex);
92  partialSums.emplace(offset, std::pair<uint32_t, size_t>(part, size));
93  }

References checksum::adler32::adler, checksum::adler32::adler32(), block::nullBuffer(), block::nullBufferSize(), checksum::adler32::partialSums, and checksum::adler32::partialSumsMutex.

Here is the call graph for this function:

◆ update() [3/4]

void checksum::adler32noOpt::update ( void *  data,
size_t  size 
)
overridevirtual

proces size bytes in the block at data

Reimplemented from checksum::adler32.

Definition at line 62 of file adler32.cpp.

62  {
63  adler = ::adler32(adler, reinterpret_cast<const unsigned char*>(data), size);
64  }

References checksum::adler32::adler, and checksum::adler32::adler32().

Here is the call graph for this function:

◆ update() [4/4]

void checksum::adler32noOpt::update ( void *  data,
size_t  size,
size_t  offset 
)
overridevirtual

Reimplemented from checksum::adler32.

Definition at line 75 of file adler32.cpp.

75  {
76  auto part = ::adler32(adler,
77  reinterpret_cast<const unsigned char*>(data),
78  size);
79  std::lock_guard<decltype(partialSumsMutex)> lock(partialSumsMutex);
80  partialSums.emplace(offset, std::pair<uint32_t, size_t>(part, size));
81  }

References checksum::adler32::adler, checksum::adler32::adler32(), checksum::adler32::partialSums, and checksum::adler32::partialSumsMutex.

Here is the call graph for this function:

Member Data Documentation

◆ factory

factoryTemplate<adler32noOpt> checksum::adler32noOpt::factory
staticprivate

Definition at line 34 of file adler32.h.


The documentation for this class was generated from the following files:
checksum::adler32::partialSumsMutex
std::mutex partialSumsMutex
Definition: adler32.h:17
checksum::adler32::adler32
adler32(const std::string &name)
Definition: adler32.cpp:11
block::nullBuffer
static const void * nullBuffer()
Definition: block.cpp:37
block::nullBufferSize
static size_t nullBufferSize()
Definition: block.cpp:34
checksum::adler32::adler
uint32_t adler
Definition: adler32.h:16
checksum::adler32::partialSums
std::map< size_t, std::pair< uint32_t, size_t > > partialSums
Definition: adler32.h:18