CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes | Friends
edm::WaitingTask Class Reference

#include <WaitingTask.h>

Inheritance diagram for edm::WaitingTask:
edm::EmptyWaitingTask edm::FunctorWaitingTask< F > edm::Worker::AcquireTask< T, DUMMY > edm::Worker::AcquireTask< OccurrenceTraits< EventPrincipal, BranchActionStreamBegin >, DUMMY > edm::Worker::HandleExternalWorkExceptionTask edm::Worker::RunModuleTask< T >

Public Member Functions

std::exception_ptr const * exceptionPtr () const
 Returns exception thrown by dependent task. More...
 
 WaitingTask ()
 Constructor. More...
 
 ~WaitingTask () override
 

Private Member Functions

void dependentTaskFailed (std::exception_ptr iPtr)
 Called if waited for task failed. More...
 

Private Attributes

std::atomic< std::exception_ptr * > m_ptr
 

Friends

class WaitingTaskHolder
 
class WaitingTaskList
 
class WaitingTaskWithArenaHolder
 

Detailed Description

Definition at line 36 of file WaitingTask.h.

Constructor & Destructor Documentation

edm::WaitingTask::WaitingTask ( )
inline

Constructor.

Definition at line 44 of file WaitingTask.h.

44 : m_ptr{nullptr} {}
std::atomic< std::exception_ptr * > m_ptr
Definition: WaitingTask.h:74
edm::WaitingTask::~WaitingTask ( )
inlineoverride

Definition at line 45 of file WaitingTask.h.

References m_ptr.

45  {
46  delete m_ptr.load();
47  };
std::atomic< std::exception_ptr * > m_ptr
Definition: WaitingTask.h:74

Member Function Documentation

void edm::WaitingTask::dependentTaskFailed ( std::exception_ptr  iPtr)
inlineprivate

Called if waited for task failed.

Allows transfer of the exception caused by the dependent task to be moved to another thread. This method should only be called by WaitingTaskList

Definition at line 64 of file WaitingTask.h.

References m_ptr, and groupFilesInBlocks::temp.

Referenced by edm::WaitingTaskList::add(), edm::WaitingTaskWithArenaHolder::doneWaiting(), edm::WaitingTaskHolder::doneWaiting(), edm::WaitingTaskHolder::presetTaskAsFailed(), and edm::WaitingTaskList::presetTaskAsFailed().

64  {
65  if (iPtr and not m_ptr) {
66  auto temp = std::make_unique<std::exception_ptr>(iPtr);
67  std::exception_ptr* expected = nullptr;
68  if( m_ptr.compare_exchange_strong(expected, temp.get()) ) {
69  temp.release();
70  }
71  }
72  }
std::atomic< std::exception_ptr * > m_ptr
Definition: WaitingTask.h:74
std::exception_ptr const* edm::WaitingTask::exceptionPtr ( ) const
inline

Returns exception thrown by dependent task.

If the value is non-null then the dependent task failed.

Definition at line 54 of file WaitingTask.h.

References m_ptr.

Referenced by edm::FunctorWaitingTask< F >::execute(), edm::Worker::HandleExternalWorkExceptionTask::execute(), and edm::WaitingTaskHolder::taskHasFailed().

54  {
55  return m_ptr.load();
56  }
std::atomic< std::exception_ptr * > m_ptr
Definition: WaitingTask.h:74

Friends And Related Function Documentation

friend class WaitingTaskHolder
friend

Definition at line 40 of file WaitingTask.h.

friend class WaitingTaskList
friend

Definition at line 39 of file WaitingTask.h.

friend class WaitingTaskWithArenaHolder
friend

Definition at line 41 of file WaitingTask.h.

Member Data Documentation

std::atomic<std::exception_ptr*> edm::WaitingTask::m_ptr
private

Definition at line 74 of file WaitingTask.h.

Referenced by dependentTaskFailed(), exceptionPtr(), and ~WaitingTask().