File indexing completed on 2024-04-06 12:12:06
0001 #ifndef Framework_WorkerRegistry_h
0002 #define Framework_WorkerRegistry_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include <memory>
0013
0014 #include <map>
0015 #include <string>
0016
0017 #include "FWCore/Utilities/interface/propagate_const.h"
0018
0019 namespace edm {
0020
0021 class Worker;
0022 class ActivityRegistry;
0023 struct WorkerParams;
0024 class ModuleRegistry;
0025 class ModuleTypeResolverMaker;
0026 class ParameterSet;
0027 namespace maker {
0028 class ModuleHolder;
0029 }
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039 class WorkerRegistry {
0040 public:
0041 explicit WorkerRegistry(std::shared_ptr<ActivityRegistry> areg, ModuleTypeResolverMaker const* resolverMaker);
0042 WorkerRegistry(std::shared_ptr<ActivityRegistry> areg, std::shared_ptr<ModuleRegistry> iModReg);
0043 ~WorkerRegistry();
0044
0045 WorkerRegistry(WorkerRegistry&&) = default;
0046 WorkerRegistry(WorkerRegistry const&) = delete;
0047 WorkerRegistry& operator=(WorkerRegistry const&) = delete;
0048
0049
0050
0051
0052
0053 Worker* getWorker(WorkerParams const& p, std::string const& moduleLabel);
0054
0055
0056
0057 Worker const* get(std::string const& moduleLabel) const;
0058
0059
0060 void deleteModule(std::string const& moduleLabel);
0061
0062 void clear();
0063
0064 private:
0065
0066 typedef std::map<std::string, edm::propagate_const<std::shared_ptr<Worker>>> WorkerMap;
0067
0068 edm::propagate_const<std::shared_ptr<ModuleRegistry>> modRegistry_;
0069
0070
0071 WorkerMap m_workerMap;
0072 std::shared_ptr<ActivityRegistry> actReg_;
0073
0074 };
0075
0076 }
0077
0078 #endif