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

class to get copyRequest out of the fileInWork list. More...

#include <fileInWork.h>

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

Public Member Functions

 eraser (const copyRequest::base &request)
 
std::unique_ptr< copyRequest::basegetNext ()
 

Additional Inherited Members

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

Detailed Description

class to get copyRequest out of the fileInWork list.

used by copyRequest::processQueueSimple to get pending requests for the file in work, and to unregister the request from the fileInWork instance

Definition at line 103 of file fileInWork.h.

Constructor & Destructor Documentation

◆ eraser()

copyRequest::fileInWork::eraser::eraser ( const copyRequest::base request)

Definition at line 63 of file fileInWork.cpp.

63  :
64  lockuser(request.getFilesInWorkIteraror()) {
65  }

Member Function Documentation

◆ getNext()

std::unique_ptr< copyRequest::base > copyRequest::fileInWork::eraser::getNext ( )

Definition at line 66 of file fileInWork.cpp.

66  {
67  if (iter == filesInWork.end()) { // happens for nonFollow request providers
68  return nullptr;
69  }
70  if (iter->second.empty()) {
71  timerInst(erase);
72  filesInWork.erase(iter);
73  return nullptr;
74  } else {
75  auto request = std::move(iter->second.front());
76  iter->second.pop_front();
77  iter->second.queuedRequestType = request->getSlotType();
78  return request;
79  }
80  }

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

Referenced by copyRequest::base::processQueue().

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::base::getFilesInWorkIteraror
decltype(filesInWorkIterator) getFilesInWorkIteraror() const
Definition: copyRequest.h:345
copyRequest::fileInWork::lockuser::lockuser
lockuser()
Definition: fileInWork.h:45
copyRequest::fileInWork::lockuser::iter
decltype(filesInWork) ::iterator iter
Definition: fileInWork.h:42
timerInst
#define timerInst(subfunc)
Definition: timer.h:157