CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Types | Private Attributes
edm::WorkerRegistry Class Reference

The Registry of all workers that where requested Holds all instances of workers. In this implementation, Workers are owned. More...

#include "edm/WorkerRegistry.h"

Public Member Functions

void clear ()
 
void deleteModule (std::string const &moduleLabel)
 Deletes the module of the Worker, but the Worker continues to exist. More...
 
Worker const * get (std::string const &moduleLabel) const
 
WorkergetWorker (WorkerParams const &p, std::string const &moduleLabel)
 Retrieve the particular instance of the worker. More...
 
WorkerRegistryoperator= (WorkerRegistry const &)=delete
 
 WorkerRegistry (std::shared_ptr< ActivityRegistry > areg)
 
 WorkerRegistry (std::shared_ptr< ActivityRegistry > areg, std::shared_ptr< ModuleRegistry > iModReg)
 
 WorkerRegistry (WorkerRegistry &&)=default
 
 WorkerRegistry (WorkerRegistry const &)=delete
 
 ~WorkerRegistry ()
 

Private Types

typedef std::map< std::string,
edm::propagate_const
< std::shared_ptr< Worker > > > 
WorkerMap
 the container of workers More...
 

Private Attributes

std::shared_ptr< ActivityRegistryactReg_
 
WorkerMap m_workerMap
 internal map of registered workers (owned). More...
 
edm::propagate_const
< std::shared_ptr
< ModuleRegistry > > 
modRegistry_
 

Detailed Description

The Registry of all workers that where requested Holds all instances of workers. In this implementation, Workers are owned.

Definition at line 38 of file WorkerRegistry.h.

Member Typedef Documentation

typedef std::map<std::string, edm::propagate_const<std::shared_ptr<Worker> > > edm::WorkerRegistry::WorkerMap
private

the container of workers

Definition at line 65 of file WorkerRegistry.h.

Constructor & Destructor Documentation

edm::WorkerRegistry::WorkerRegistry ( std::shared_ptr< ActivityRegistry areg)
explicit

Definition at line 18 of file WorkerRegistry.cc.

19  : modRegistry_(new ModuleRegistry), m_workerMap(), actReg_(areg) {}
std::shared_ptr< ActivityRegistry > actReg_
WorkerMap m_workerMap
internal map of registered workers (owned).
areg
Definition: Schedule.cc:687
edm::propagate_const< std::shared_ptr< ModuleRegistry > > modRegistry_
edm::WorkerRegistry::WorkerRegistry ( std::shared_ptr< ActivityRegistry areg,
std::shared_ptr< ModuleRegistry iModReg 
)

Definition at line 21 of file WorkerRegistry.cc.

22  : modRegistry_(modReg), m_workerMap(), actReg_(areg) {}
std::shared_ptr< ActivityRegistry > actReg_
WorkerMap m_workerMap
internal map of registered workers (owned).
areg
Definition: Schedule.cc:687
edm::propagate_const< std::shared_ptr< ModuleRegistry > > modRegistry_
edm::WorkerRegistry::~WorkerRegistry ( )

Definition at line 24 of file WorkerRegistry.cc.

24 {}
edm::WorkerRegistry::WorkerRegistry ( WorkerRegistry &&  )
default
edm::WorkerRegistry::WorkerRegistry ( WorkerRegistry const &  )
delete

Member Function Documentation

void edm::WorkerRegistry::clear ( void  )

Definition at line 26 of file WorkerRegistry.cc.

References m_workerMap.

26 { m_workerMap.clear(); }
WorkerMap m_workerMap
internal map of registered workers (owned).
void edm::WorkerRegistry::deleteModule ( std::string const &  moduleLabel)

Deletes the module of the Worker, but the Worker continues to exist.

Definition at line 56 of file WorkerRegistry.cc.

References Exception, and m_workerMap.

Referenced by edm::WorkerManager::deleteModuleIfExists().

56  {
57  WorkerMap::iterator workerIt = m_workerMap.find(moduleLabel);
58  if (workerIt == m_workerMap.end()) {
59  throw cms::Exception("LogicError")
60  << "WorkerRegistry::deleteModule() Trying to delete the module of a Worker with label " << moduleLabel
61  << " but no such Worker exists in the WorkerRegistry. Please contact framework developers.";
62  }
63  workerIt->second->clearModule();
64  }
WorkerMap m_workerMap
internal map of registered workers (owned).
Worker const * edm::WorkerRegistry::get ( std::string const &  moduleLabel) const
Worker * edm::WorkerRegistry::getWorker ( WorkerParams const &  p,
std::string const &  moduleLabel 
)

Retrieve the particular instance of the worker.

If the worker with that set of parameters does not exist, create it

Note
Workers are owned by this class, do not delete them

Definition at line 28 of file WorkerRegistry.cc.

References edm::WorkerParams::actions_, actReg_, m_workerMap, modRegistry_, edm::WorkerParams::preallocate_, edm::WorkerParams::processConfiguration_, edm::WorkerParams::pset_, and edm::WorkerParams::reg_.

Referenced by edm::WorkerManager::getWorker().

28  {
29  WorkerMap::iterator workerIt = m_workerMap.find(moduleLabel);
30 
31  // if the worker is not there, make it
32  if (workerIt == m_workerMap.end()) {
33  MakeModuleParams mmp(p.pset_, *p.reg_, p.preallocate_, p.processConfiguration_);
34  auto modulePtr = modRegistry_->getModule(
35  mmp, moduleLabel, actReg_->preModuleConstructionSignal_, actReg_->postModuleConstructionSignal_);
36  auto workerPtr = modulePtr->makeWorker(p.actions_);
37 
38  workerPtr->setActivityRegistry(actReg_);
39 
40  // Transfer ownership of worker to the registry
41  m_workerMap[moduleLabel] =
42  std::shared_ptr<Worker>(workerPtr.release()); // propagate_const<T> has no reset() function
43  return m_workerMap[moduleLabel].get();
44  }
45  return (workerIt->second.get());
46  }
std::shared_ptr< ActivityRegistry > actReg_
WorkerMap m_workerMap
internal map of registered workers (owned).
edm::propagate_const< std::shared_ptr< ModuleRegistry > > modRegistry_
WorkerRegistry& edm::WorkerRegistry::operator= ( WorkerRegistry const &  )
delete

Member Data Documentation

std::shared_ptr<ActivityRegistry> edm::WorkerRegistry::actReg_
private

Definition at line 71 of file WorkerRegistry.h.

Referenced by getWorker().

WorkerMap edm::WorkerRegistry::m_workerMap
private

internal map of registered workers (owned).

Definition at line 70 of file WorkerRegistry.h.

Referenced by clear(), deleteModule(), get(), and getWorker().

edm::propagate_const<std::shared_ptr<ModuleRegistry> > edm::WorkerRegistry::modRegistry_
private

Definition at line 67 of file WorkerRegistry.h.

Referenced by getWorker().