1 #ifndef ServiceRegistry_ServicesManager_h 2 #define ServiceRegistry_ServicesManager_h 41 namespace serviceregistry {
54 typedef std::map<TypeIDBase, std::shared_ptr<ServiceWrapperBase>>
Type2Service;
65 std::vector<ParameterSet>& iConfiguration,
66 bool associate =
true);
74 Type2Maker::const_iterator itFoundMaker;
80 "Service Request unable to find requested service with compiler type name '",
91 std::shared_ptr<ServiceWrapper<T>> ptr(std::dynamic_pointer_cast<
ServiceWrapper<T>>(itFound->second));
92 assert(
nullptr != ptr.get());
100 Type2Maker::const_iterator itFoundMaker;
122 template <
typename T>
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
bool put(std::shared_ptr< ServiceWrapper< T >> iPtr)
returns false if put fails because a service of this type already exists
std::map< TypeIDBase, MakerHolder > Type2Maker
edm::propagate_const< std::shared_ptr< ServiceMakerBase > > maker_
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