ewmscp  ..
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Attributes | List of all members
copyRequest::listingRequest Class Reference

class for checking if checksums match expectations Extends the copyRequest::base class with new printResults function that checks if sums match expected values and prints results in a way compatible with e.g. More...

Inheritance diagram for copyRequest::listingRequest:
[legend]
Collaboration diagram for copyRequest::listingRequest:
[legend]

Public Member Functions

 listingRequest (const std::string &aSource, std::unique_ptr< const genericStat > &aStat, inputHandler::base *aInputHandler)
 
void process (perThreadData &) override
 
bool compare (const base &rhs) const override
 
void printResults (std::ostream &, std::ostream &logStream) override
 
- Public Member Functions inherited from copyRequest::base
const genericStatgetInitialStat () const
 
const std::string & getSource () const
 
clock_type::duration getAdvisedDelay () const
 returns the advised delay More...
 
void registerIterator (decltype(filesInWorkIterator) iter)
 
decltype(filesInWorkIteratorgetFilesInWorkIteraror () const
 
fileInWork::slotTypes getSlotType () const
 
void changeRequestType (stateBitType newType)
 
 base (inputHandler::base *InputHandler, const std::string &aSource, const std::string &aDestination, std::unique_ptr< const genericStat > &aStat, const singleMap &aMapEntry, bool remove, clock_type::time_point timestamp)
 constructor for copy,link and remove requests. More...
 
 base (inputHandler::base *InputHandler, const std::string &aSource, const std::string &aDestination, const singleMap &aMapEntry, bool remove, clock_type::time_point timestamp)
 constructor for copy,link and remove requests. More...
 
 base (inputHandler::base *InputHandler, const std::string &aSource, const std::string &aDestination, const std::string &aMoveSource, const std::string &aOrigSource, const singleMap &aMapEntry, clock_type::time_point timestamp)
 constructor for rename requests only. More...
 
virtual ~base () noexcept(false)
 
const std::string & getSuffix () const
 
void addExpectedChecksumResult (const std::string &checkSumType, const std::string &expectedValue)
 
void kw_size (std::string &value) const
 
void kw_mtime (std::string &value) const
 
void kw_inow (std::string &value) const
 
void kw_now (std::string &value) const
 
void kw_version (std::string &value) const
 
void kw_commit (std::string &value) const
 
void kw_prefix (std::string &value) const
 
void kw_reason (std::string &value) const
 
void kw_state (std::string &value) const
 
void kw_finishtime (std::string &value) const
 

Static Public Member Functions

static void printFinalLine (std::ostream &)
 
static void prepareStatPrint ()
 setup statPrinter to print the final line for compatibiity mith eg. md5sum More...
 
- Static Public Member Functions inherited from copyRequest::base
static std::map< std::string, void(base::*)(std::string &) const > & keywordMap ()
 
static bool adviseDelay (clock_type::duration dt, const std::string &suffix)
 update the advised delay in the map. More...
 
static void printStats (std::ostream &stream)
 
static void resetStats ()
 
static bool retry (std::unique_ptr< base > &request, timedQueue &delayedRequests)
 
static void waitForAllInstancesGone ()
 
static bool checkForInstances ()
 
static std::function< void(std::ostream &)> & getStatPrinter ()
 we can't have static functions virtual, so we explicitly use a function to give us the proper print function, which can be changed in derived classes. More...
 
static void setStatPrinter (void(*f)(std::ostream &))
 
static void processQueue (simpleQueue &queue, simpleQueue &resultQueue, timedQueue &delayedRequests)
 
static void getSuffix (const std::string &path, std::string &suffix)
 

Protected Member Functions

void printModeBits (std::ostream &stream, mode_t bits)
 
void printMode (std::ostream &stream, mode_t bits)
 
- Protected Member Functions inherited from copyRequest::base
void adviseDelay (clock_type::duration dt=clock_type::duration::zero())
 

Static Protected Attributes

static options::single< bool > reverse
 
static options::single< bool > sortByTime
 
static options::single< bool > sortBySize
 
static singleMap dummyMapEntry
 
- Static Protected Attributes inherited from copyRequest::base
static statCollector::typed< decltype(tWorkDone - tInotify) > tTotalStat
 
static statCollector::typed< decltype(tWorkDone - tInotify) > tTotal2Stat
 
static statCollector::typed< decltype(tWorkDone - tInotify) > tInotifyStat
 
static statCollector::typed< decltype(tEnqueue - tInotify) > tPipeStat
 
static statCollector::typed< decltype(tWorkStart - tEnqueue) > tWaitStat
 
static statCollector::typed< decltype(tWorkDone - tWorkStart) > tCopyStat
 
static statCollector::typed< decltype(readInitialStat->size) > bytesStat
 
static statCollector::typed< double > speedStat
 
static clock_type::time_point tProgramStart
 
static std::atomic< unsigned int > nConcurrentProcesses
 
static options::single< double > maxDelayTime
 
static std::function< void(std::ostream &)> statPrinter
 

Additional Inherited Members

- Public Attributes inherited from copyRequest::base
decltype(fileInWork::filesInWork.begin()) filesInWorkIterator = fileInWork::filesInWork.end()
 
- Static Public Attributes inherited from copyRequest::base
static options::single< bool > setAttributesAfterClose
 
static options::single< bool > perFileThreads
 
static options::single< size_t > userWriteBlockSize
 
static options::single< size_t > userReadBlockSize
 
static options::single< size_t > maxMemoryBlockSize
 
static options::single< size_t > minMemoryBlockSize
 
static statCollector::typed< copyRequest::clock_type::duration > tEnqueueStat
 
static std::vector< std::atomic< unsigned int > > * processMultiplicities
 
- Protected Attributes inherited from copyRequest::base
std::unique_ptr< const genericStatreadInitialStat
 
std::list< checksum::base * > checkSums
 
perThreadDatathreadData
 
stateType state
 
std::string errorMessage
 
const std::string source
 
const std::string destination
 
const std::string moveSource
 
const std::string origSource
 
const singleMapmapEntry
 
std::string suffix
 
std::string prefix
 
size_t memoryBlockSize
 
clock_type::time_point tInotify
 
clock_type::time_point tEnqueue
 
clock_type::time_point tWorkStart
 
clock_type::time_point tWorkDone
 
unsigned retries
 

Detailed Description

class for checking if checksums match expectations Extends the copyRequest::base class with new printResults function that checks if sums match expected values and prints results in a way compatible with e.g.

md5sum command.

Definition at line 17 of file listingRequestProvider.cpp.

Constructor & Destructor Documentation

◆ listingRequest()

copyRequest::listingRequest::listingRequest ( const std::string &  aSource,
std::unique_ptr< const genericStat > &  aStat,
inputHandler::base aInputHandler 
)
inline

Definition at line 57 of file listingRequestProvider.cpp.

59  :
60  base(aInputHandler, aSource, "", aStat, dummyMapEntry, false, copyRequest::clock_type::now()) {}

Member Function Documentation

◆ compare()

bool copyRequest::listingRequest::compare ( const base rhs) const
inlineoverridevirtual

Reimplemented from copyRequest::base.

Definition at line 63 of file listingRequestProvider.cpp.

63  {
64  if (sortByTime) {
65  return (readInitialStat->mTime > rhs.getInitialStat().mTime) ^ reverse;
66  } else if (sortBySize) {
67  return (readInitialStat->size > rhs.getInitialStat().size) ^ reverse;
68  } else {
69  return (source < rhs.getSource()) ^ reverse;
70  }
71  }

References copyRequest::base::getInitialStat(), copyRequest::base::getSource(), genericStat::mTime, copyRequest::base::readInitialStat, reverse, genericStat::size, sortBySize, sortByTime, and copyRequest::base::source.

Here is the call graph for this function:

◆ prepareStatPrint()

static void copyRequest::listingRequest::prepareStatPrint ( )
inlinestatic

setup statPrinter to print the final line for compatibiity mith eg. md5sum

Definition at line 92 of file listingRequestProvider.cpp.

92  {
94  }

References printFinalLine(), and copyRequest::base::statPrinter.

Here is the call graph for this function:

◆ printFinalLine()

static void copyRequest::listingRequest::printFinalLine ( std::ostream &  )
inlinestatic

Definition at line 89 of file listingRequestProvider.cpp.

89  {
90  }

Referenced by prepareStatPrint().

Here is the caller graph for this function:

◆ printMode()

void copyRequest::listingRequest::printMode ( std::ostream &  stream,
mode_t  bits 
)
inlineprotected

Definition at line 26 of file listingRequestProvider.cpp.

26  {
27  switch (bits & S_IFMT) {
28  case S_IFSOCK:
29  stream << "s";
30  break;
31  case S_IFLNK:
32  stream << "l";
33  break;
34  case S_IFREG:
35  stream << "-";
36  break;
37  case S_IFBLK:
38  stream << "b";
39  break;
40  case S_IFDIR:
41  stream << "d";
42  break;
43  case S_IFCHR:
44  stream << "c";
45  break;
46  case S_IFIFO:
47  stream << "f";
48  break;
49  }
50  printModeBits(stream, bits >> 6);
51  printModeBits(stream, bits >> 3);
52  printModeBits(stream, bits >> 0);
53  stream << " ";
54  }

References printModeBits().

Referenced by printResults().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ printModeBits()

void copyRequest::listingRequest::printModeBits ( std::ostream &  stream,
mode_t  bits 
)
inlineprotected

Definition at line 23 of file listingRequestProvider.cpp.

23  {
24  stream << (bits & 4 ? "r" : "-") << (bits & 2 ? "w" : "-") << (bits & 1 ? "x" : "-");
25  }

Referenced by printMode().

Here is the caller graph for this function:

◆ printResults()

void copyRequest::listingRequest::printResults ( std::ostream &  ,
std::ostream &  logStream 
)
inlineoverridevirtual

Reimplemented from copyRequest::base.

Definition at line 73 of file listingRequestProvider.cpp.

74  {
75  static auto escaper = escapism::newEscaper("C");
76  timerInst(print);
77  std::string name;
78  escaper->escape(source, name);
79  printMode(logStream, readInitialStat->mode);
80  logStream << std::setw(6) << readInitialStat->ownerUid << " ";
81  logStream << std::setw(10) << readInitialStat->ownerGid << " ";
82  logStream << std::setw(13) << readInitialStat->size << " ";
83  std::string time;
84  readInitialStat->getMtime(time);
85  logStream << time << " ";
86  logStream << name << "\n";
87  timerInst(nix);
88  }

References escapism::newEscaper(), printMode(), copyRequest::base::readInitialStat, copyRequest::base::source, and timerInst.

Here is the call graph for this function:

◆ process()

void copyRequest::listingRequest::process ( perThreadData )
inlineoverridevirtual

Reimplemented from copyRequest::base.

Definition at line 61 of file listingRequestProvider.cpp.

61  {
62  }

Member Data Documentation

◆ dummyMapEntry

singleMap copyRequest::listingRequest::dummyMapEntry
staticprotected

Definition at line 55 of file listingRequestProvider.cpp.

◆ reverse

options::single<bool> copyRequest::listingRequest::reverse
staticprotected

Definition at line 19 of file listingRequestProvider.cpp.

Referenced by compare().

◆ sortBySize

options::single<bool> copyRequest::listingRequest::sortBySize
staticprotected

Definition at line 21 of file listingRequestProvider.cpp.

Referenced by compare().

◆ sortByTime

options::single<bool> copyRequest::listingRequest::sortByTime
staticprotected

Definition at line 20 of file listingRequestProvider.cpp.

Referenced by compare().


The documentation for this class was generated from the following file:
copyRequest::listingRequest::sortByTime
static options::single< bool > sortByTime
Definition: listingRequestProvider.cpp:20
copyRequest::listingRequest::printModeBits
void printModeBits(std::ostream &stream, mode_t bits)
Definition: listingRequestProvider.cpp:23
copyRequest::listingRequest::printFinalLine
static void printFinalLine(std::ostream &)
Definition: listingRequestProvider.cpp:89
copyRequest::listingRequest::printMode
void printMode(std::ostream &stream, mode_t bits)
Definition: listingRequestProvider.cpp:26
copyRequest::listingRequest::sortBySize
static options::single< bool > sortBySize
Definition: listingRequestProvider.cpp:21
copyRequest::base::readInitialStat
std::unique_ptr< const genericStat > readInitialStat
Definition: copyRequest.h:271
copyRequest::listingRequest::dummyMapEntry
static singleMap dummyMapEntry
Definition: listingRequestProvider.cpp:55
escapism::newEscaper
static const escapism * newEscaper(const std::string &name)
Definition: escapism.cpp:25
timerInst
#define timerInst(subfunc)
Definition: timer.h:157
copyRequest::base::source
const std::string source
Definition: copyRequest.h:284
copyRequest::listingRequest::reverse
static options::single< bool > reverse
Definition: listingRequestProvider.cpp:19
copyRequest::base::statPrinter
static std::function< void(std::ostream &)> statPrinter
Definition: copyRequest.h:330
copyRequest::base::base
base(inputHandler::base *InputHandler, const std::string &aSource, const std::string &aDestination, std::unique_ptr< const genericStat > &aStat, const singleMap &aMapEntry, bool remove, clock_type::time_point timestamp)
constructor for copy,link and remove requests.
Definition: copyRequest.cpp:1517