#include <FWCore/Framework/src/WorkerMaker.h>
Public Member Functions | |
std::auto_ptr< Worker > | makeWorker (WorkerParams const &, sigc::signal< void, ModuleDescription const & > &, sigc::signal< void, ModuleDescription const & > &) const |
WorkerMaker () |
Definition at line 26 of file WorkerMaker.h.
edm::WorkerMaker< T >::WorkerMaker | ( | ) | [inline, explicit] |
std::auto_ptr< Worker > edm::WorkerMaker< T >::makeWorker | ( | WorkerParams const & | p, | |
sigc::signal< void, ModuleDescription const & > & | pre, | |||
sigc::signal< void, ModuleDescription const & > & | post | |||
) | const [inline, virtual] |
Implements edm::Maker.
Definition at line 40 of file WorkerMaker.h.
References cms::Exception::append(), dbtoconf::conf, edm::errors::Configuration, edm::ParameterSet::id(), module(), edm::ModuleDescription::moduleLabel_, edm::ModuleDescription::moduleName_, edm::ModuleDescription::parameterSetID_, edm::WorkerParams::passID_, edm::ModuleDescription::processConfiguration_, edm::WorkerParams::processName_, edm::WorkerParams::procPset_, edm::WorkerParams::pset_, edm::WorkerParams::releaseVersion_, and parseConfig::worker.
00042 { 00043 typedef T UserType; 00044 typedef typename UserType::ModuleType ModuleType; 00045 typedef typename UserType::WorkerType WorkerType; 00046 00047 ParameterSet const& procParams = *p.procPset_; 00048 ParameterSet const& conf = *p.pset_; 00049 ModuleDescription md; 00050 md.parameterSetID_ = conf.id(); 00051 md.moduleName_ = conf.template getParameter<std::string>("@module_type"); 00052 md.moduleLabel_ = conf.template getParameter<std::string>("@module_label"); 00053 md.processConfiguration_ = ProcessConfiguration(p.processName_, procParams.id(), p.releaseVersion_, p.passID_); 00054 00055 std::auto_ptr<Worker> worker; 00056 try { 00057 pre(md); 00058 std::auto_ptr<ModuleType> module(WorkerType::template makeModule<UserType>(md, conf)); 00059 worker=std::auto_ptr<Worker>(new WorkerType(module, md, p)); 00060 post(md); 00061 } catch( cms::Exception& iException){ 00062 edm::Exception toThrow(edm::errors::Configuration,"Error occured while creating "); 00063 toThrow<<md.moduleName_<<" with label "<<md.moduleLabel_<<"\n"; 00064 toThrow.append(iException); 00065 post(md); 00066 throw toThrow; 00067 } 00068 return worker; 00069 }