ewmscp  ..
Public Member Functions | List of all members
copyRequest::fileInWork::inserter Class Reference

create a new fileInWork instance in the map. More...

#include <fileInWork.h>

Inheritance diagram for copyRequest::fileInWork::inserter:
[legend]
Collaboration diagram for copyRequest::fileInWork::inserter:
[legend]

Public Member Functions

 inserter (const std::string &fileName)
 
void enRegister (std::unique_ptr< copyRequest::base > &request)
 register a request in the fileInWork list More...
 
fileInWorkgetFileInWork ()
 
void markForQueueing (std::unique_ptr< copyRequest::base > &request)
 
- Public Member Functions inherited from copyRequest::fileInWork::lockuser
bool empty () const
 

Additional Inherited Members

- Protected Member Functions inherited from copyRequest::fileInWork::lockuser
 lockuser (decltype(iter) Iter)
 
 lockuser ()
 
 ~lockuser ()=default
 
- Protected Attributes inherited from copyRequest::fileInWork::lockuser
std::unique_lock< decltype(filesInWorkMutex)> lock
 
decltype(filesInWork) ::iterator iter
 

Detailed Description

create a new fileInWork instance in the map.

Holds the lock for the map so that thread safety is guaranteed. Allows for checking if identical requests are already queued.

Definition at line 79 of file fileInWork.h.

Constructor & Destructor Documentation

◆ inserter()

copyRequest::fileInWork::inserter::inserter ( const std::string &  fileName)
inline

Definition at line 81 of file fileInWork.h.

81  {
82  timerInst(create);
83  iter = filesInWork.find(fileName);
84  if (iter == filesInWork.end()) {
85  timerInst(emplace);
86  auto result = filesInWork.emplace(fileName, clock_type::now());
87  iter = result.first;
88  }
89  }

References copyRequest::fileInWork::filesInWork, copyRequest::fileInWork::lockuser::iter, and timerInst.

Member Function Documentation

◆ enRegister()

void copyRequest::fileInWork::inserter::enRegister ( std::unique_ptr< copyRequest::base > &  request)

register a request in the fileInWork list

Definition at line 50 of file fileInWork.cpp.

50  {
51  request->registerIterator(iter);
52  iter->second.remove_if([&request](std::unique_ptr<copyRequest::base>& item) {
53  return item->getSlotType() == request->getSlotType();
54  });
55  iter->second.emplace_back(std::move(request));
56  }

References copyRequest::base::getSlotType(), copyRequest::fileInWork::lockuser::iter, and copyRequest::base::registerIterator().

Referenced by followRequestProvider::enqueueOrAppend().

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

◆ getFileInWork()

fileInWork& copyRequest::fileInWork::inserter::getFileInWork ( )
inline

Definition at line 93 of file fileInWork.h.

93  {
94  return iter->second;
95  }

References copyRequest::fileInWork::lockuser::iter.

Referenced by followRequestProvider::enqueueOrAppend().

Here is the caller graph for this function:

◆ markForQueueing()

void copyRequest::fileInWork::inserter::markForQueueing ( std::unique_ptr< copyRequest::base > &  request)

Definition at line 57 of file fileInWork.cpp.

57  {
58  request->registerIterator(iter);
60  }

References copyRequest::base::getSlotType(), and copyRequest::base::registerIterator().

Referenced by followRequestProvider::enqueueOrAppend().

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

The documentation for this class was generated from the following files:
copyRequest::fileInWork::filesInWork
static std::map< std::string, fileInWork > filesInWork
maps file names to filesInWork objects
Definition: fileInWork.h:30
copyRequest::fileInWork::lockuser::iter
decltype(filesInWork) ::iterator iter
Definition: fileInWork.h:42
copyRequest::base::getSlotType
fileInWork::slotTypes getSlotType() const
Definition: copyRequest.h:348
copyRequest::fileInWork::inserter::getFileInWork
fileInWork & getFileInWork()
Definition: fileInWork.h:93
copyRequest::base::registerIterator
void registerIterator(decltype(filesInWorkIterator) iter)
Definition: copyRequest.h:342
copyRequest::fileInWork::queuedRequestType
slotTypes queuedRequestType
Definition: fileInWork.h:28
timerInst
#define timerInst(subfunc)
Definition: timer.h:157