ewmscp  ..
Public Member Functions | Private Member Functions | Static Private Attributes | List of all members
policyRunRequestProvider Class Reference

#include <policyRunRequestProvider.h>

Inheritance diagram for policyRunRequestProvider:
[legend]
Collaboration diagram for policyRunRequestProvider:
[legend]

Public Member Functions

 policyRunRequestProvider (decltype(requests) aRequests, decltype(delayedRequests) aDelayedRequests, decltype(parents) aParents, decltype(InputHandler) aInputHandler, decltype(OutputHandler) aOutputHandler)
 
 ~policyRunRequestProvider () override=default
 
- Public Member Functions inherited from noFollowRequestProvider
 noFollowRequestProvider (decltype(requests) aRequests, decltype(delayedRequests) aDelayedRequests, decltype(parents) aParents, decltype(InputHandler) aInputHandler, decltype(OutputHandler) aOutputHandler)
 
 ~noFollowRequestProvider () override=default
 
bool isFollowMode () const override
 
void processSources (const std::vector< std::string > &sources) override
 
- Public Member Functions inherited from requestProvider
 requestProvider (decltype(requests) aRequests, decltype(delayedRequests) aDelayedRequests, decltype(parents) aParents, decltype(InputHandler) aInputHandler, decltype(OutputHandler) aOutputHandler)
 ! use only the file name part in the destination More...
 
virtual ~requestProvider ()=default
 
virtual void prepareMappings (std::vector< std::string > &sources, std::string &destination)
 
virtual void printMappings (std::ostream &stream)
 

Private Member Functions

void processSource (const std::string &source) override
 

Static Private Attributes

static factoryTemplate< policyRunRequestProviderfactory
 
static options::single< std::string > & escaperOption
 

Additional Inherited Members

- Static Public Member Functions inherited from requestProvider
static requestProvidernewProvider (const std::string &choice, decltype(requests) aRequests, decltype(delayedRequests) aDelayedRequests, decltype(parents) aParents, decltype(InputHandler) aInputHandler, decltype(OutputHandler) aOutputHandler)
 
static void addAllowedNamesToOption (options::single< std::string > &option)
 
- Protected Member Functions inherited from noFollowRequestProvider
virtual copyRequest::basenewRequest (inputHandler::base *InputHandler, const std::string &aSource, const std::string &aDestination, std::unique_ptr< const genericStat > &aStat, const singleMap &aMapEntry, bool remove, copyRequest::clock_type::time_point timestamp)
 
- Protected Member Functions inherited from requestProvider
virtual const singleMapgetDstPath (const std::string &source, std::string &destination, bool baseNameOnly=false)
 get detstination papth for a given source path More...
 
- Static Protected Member Functions inherited from requestProvider
static std::map< std::string, factoryClass * > & getFactoryMap ()
 
- Protected Attributes inherited from requestProvider
copyRequest::simpleQueuerequests
 
copyRequest::timedQueuedelayedRequests
 
bool parents
 
inputHandler::baseInputHandler
 
outputHandler::baseOutputHandler
 
- Static Protected Attributes inherited from noFollowRequestProvider
static options::single< std::string > & sourceDecodeMethod
 
static options::single< bool > ignoreMissing
 
static std::multiset< copyRequest::base *, copyRequest::base::pointerComparerequestSet
 
- Static Protected Attributes inherited from requestProvider
static options::map< std::string, pathMapTypepathMap
 
static singleMap badMapEntry
 

Detailed Description

Definition at line 8 of file policyRunRequestProvider.h.

Constructor & Destructor Documentation

◆ policyRunRequestProvider()

policyRunRequestProvider::policyRunRequestProvider ( decltype(requests aRequests,
decltype(delayedRequests aDelayedRequests,
decltype(parents aParents,
decltype(InputHandler aInputHandler,
decltype(OutputHandler aOutputHandler 
)
inline

Definition at line 16 of file policyRunRequestProvider.h.

20  :
21  noFollowRequestProvider(aRequests, aDelayedRequests, aParents,
22  aInputHandler, aOutputHandler) {
23  };

◆ ~policyRunRequestProvider()

policyRunRequestProvider::~policyRunRequestProvider ( )
overridedefault

Member Function Documentation

◆ processSource()

void policyRunRequestProvider::processSource ( const std::string &  source)
overrideprivatevirtual

Implements noFollowRequestProvider.

Definition at line 16 of file policyRunRequestProvider.cpp.

16  {
17  static auto escaper = escapism::newEscaper(escaperOption);
18  std::ifstream srcList(source);
19  std::string line;
20  while (std::getline(srcList, line)) {
21  auto separatorStart = line.find(" -- ");
22  if (separatorStart == std::string::npos) {
23  continue;
24  }
25  auto pathStart = separatorStart + 4; // length of " -- "
26  std::string src;
27  escaper->deEscape(line.substr(pathStart), src);
28  auto sourceStat = InputHandler->getStat(src, false); // never follow links
29  if (!sourceStat) {
30  if (ignoreMissing) {
31  if (! quiet) {
33  src, "stat", "not found");
34  }
35  continue;
36  }
37  throw std::runtime_error("can't stat " + src);
38  }
39  if (sourceStat->isDir()) { // directories are created on the fly, ignore here
40  continue;
41  }
42  std::string dst;
43  auto mapEntry = getDstPath(src, dst);
44  timerInst(emplace);
45  requestSet.emplace(new copyRequest::base(InputHandler, src, dst, sourceStat,
46  mapEntry,
47  false, copyRequest::clock_type::now()));
48  }
50 }

References errMsg::emit(), escaperOption, requestProvider::getDstPath(), pathHandler::getStat(), noFollowRequestProvider::ignoreMissing, requestProvider::InputHandler, escapism::newEscaper(), quiet, quietStatPrinter(), noFollowRequestProvider::requestSet, copyRequest::base::setStatPrinter(), timerInst, and errMsg::warning.

Here is the call graph for this function:

Member Data Documentation

◆ escaperOption

options::single<std::string>& policyRunRequestProvider::escaperOption
staticprivate

Definition at line 12 of file policyRunRequestProvider.h.

Referenced by processSource().

◆ factory

factoryTemplate<policyRunRequestProvider> policyRunRequestProvider::factory
staticprivate

Definition at line 10 of file policyRunRequestProvider.h.


The documentation for this class was generated from the following files:
noFollowRequestProvider::ignoreMissing
static options::single< bool > ignoreMissing
Definition: noFollowRequestProvider.h:11
errMsg::level::warning
@ warning
errMsg::location
class for defining the location of a error message in the source code.
Definition: errMsgQueue.h:14
quietStatPrinter
static void quietStatPrinter(std::ostream &aLogStream)
Definition: policyRunRequestProvider.cpp:11
copyRequest::base
class for copy requests.
Definition: copyRequest.h:99
copyRequest::base::setStatPrinter
static void setStatPrinter(void(*f)(std::ostream &))
Definition: copyRequest.cpp:1819
escapism::newEscaper
static const escapism * newEscaper(const std::string &name)
Definition: escapism.cpp:25
policyRunRequestProvider::escaperOption
static options::single< std::string > & escaperOption
Definition: policyRunRequestProvider.h:12
pathHandler::getStat
virtual std::unique_ptr< const genericStat > getStat(const std::string &path, bool followLink=true)=0
errMsg::emit
void emit(level aLogLevel, const location &loc, const std::string &aObject, const std::string &aAction, const Args &... args)
function to create and enqueue a message, this is the only way that messages should be created!
Definition: errMsgQueue.h:148
timerInst
#define timerInst(subfunc)
Definition: timer.h:157
requestProvider::InputHandler
inputHandler::base * InputHandler
Definition: requestProvider.h:34
noFollowRequestProvider::requestSet
static std::multiset< copyRequest::base *, copyRequest::base::pointerCompare > requestSet
Definition: noFollowRequestProvider.h:13
requestProvider::getDstPath
virtual const singleMap & getDstPath(const std::string &source, std::string &destination, bool baseNameOnly=false)
get detstination papth for a given source path
Definition: requestProvider.cpp:30
quiet
static options::single< bool > quiet('q', "quiet", "be quiet, no prefix to output lines")
noFollowRequestProvider::noFollowRequestProvider
noFollowRequestProvider(decltype(requests) aRequests, decltype(delayedRequests) aDelayedRequests, decltype(parents) aParents, decltype(InputHandler) aInputHandler, decltype(OutputHandler) aOutputHandler)
Definition: noFollowRequestProvider.h:23