CMS 3D CMS Logo

edm::WorkerMaker< T > Class Template Reference

#include <FWCore/Framework/src/WorkerMaker.h>

Inheritance diagram for edm::WorkerMaker< T >:

edm::Maker

List of all members.

Public Member Functions

std::auto_ptr< WorkermakeWorker (WorkerParams const &, sigc::signal< void, ModuleDescription const & > &, sigc::signal< void, ModuleDescription const & > &) const
 WorkerMaker ()


Detailed Description

template<class T>
class edm::WorkerMaker< T >

Definition at line 26 of file WorkerMaker.h.


Constructor & Destructor Documentation

template<class T>
edm::WorkerMaker< T >::WorkerMaker (  )  [inline, explicit]

Definition at line 36 of file WorkerMaker.h.

00036                               {
00037   }


Member Function Documentation

template<class T>
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   }


The documentation for this class was generated from the following file:
Generated on Tue Jun 9 18:44:47 2009 for CMSSW by  doxygen 1.5.4