1 #ifndef ServiceRegistry_ServicesManager_h 2 #define ServiceRegistry_ServicesManager_h 41 namespace serviceregistry {
46 MakerHolder(std::shared_ptr<ServiceMakerBase> iMaker,
56 typedef std::map<TypeIDBase, std::shared_ptr<ServiceWrapperBase> >
Type2Service;
67 std::vector<ParameterSet>& iConfiguration,
68 bool associate =
true);
76 Type2Maker::const_iterator itFoundMaker ;
82 "Service Request unable to find requested service with compiler type name '",
93 std::shared_ptr<ServiceWrapper<T> > ptr(std::dynamic_pointer_cast<
ServiceWrapper<T> >(itFound->second));
94 assert(
nullptr != ptr.get());
102 Type2Maker::const_iterator itFoundMaker ;
Type2Service type2Service_
MakerHolder(std::shared_ptr< ServiceMakerBase > iMaker, ParameterSet &iPSet, ActivityRegistry &)
void fillListOfMakers(std::vector< ParameterSet > &)
ServicesManager const & operator=(ServicesManager const &)=delete
void createServiceFor(MakerHolder const &)
void copySlotsTo(ActivityRegistry &)
copy our Service's slots to the argument's signals
std::map< TypeIDBase, MakerHolder > Type2Maker
edm::propagate_const< std::shared_ptr< ServiceMakerBase > > maker_
bool put(std::shared_ptr< ServiceWrapper< T > > iPtr)
returns false if put fails because a service of this type already exists
static void throwThis(Code category, char const *message0="", char const *message1="", char const *message2="", char const *message3="", char const *message4="")
std::vector< TypeIDBase > actualCreationOrder_
void connectTo(ActivityRegistry &iOther)
causes iOther's signals to be forward to us
bool add(ServicesManager &) const
element_type const * get() const
void copySlotsFrom(ActivityRegistry &)
the copy the argument's slots to the our signals
std::vector< TypeIDBase > requestedCreationOrder_
ActivityRegistry registry_
edm::propagate_const< std::unique_ptr< Type2Maker > > type2Maker_
ServicesManager(std::vector< ParameterSet > &iConfiguration)
bool isAvailable() const
returns true of the particular service is accessible
std::map< TypeIDBase, std::shared_ptr< ServiceWrapperBase > > Type2Service
edm::propagate_const< std::shared_ptr< ServicesManager > > associatedManager_
ActivityRegistry * registry_
void connect(ActivityRegistry &iOther)
causes our ActivityRegistry's signals to be forwarded to iOther