42 assertion2( service!=0, name, getListOfRegisteredServices() );
43 assertion2( !name.empty(), name, getListOfRegisteredServices() );
44 assertion2( !hasService(service), name, getListOfRegisteredServices() );
50 #if !defined(SharedTBB)
54 _services.push_back( entry );
60 for (std::vector<ServiceEntry>::iterator p=_services.begin(); p!=_services.end(); ) {
61 if ( p->_service==service) {
62 p = _services.erase(p);
71 ServiceContainer::const_iterator p = _services.begin();
75 if (p->_service==service) {
94 ServiceContainer::iterator p = _services.begin();
98 p->_service->receiveDanglingMessages();
105 std::ostringstream result;
107 ServiceContainer::const_iterator p = _services.begin();
108 p != _services.end();
111 result <<
" " << p->_name;
#define assertion2(expr, param0, param1)
Create a lock around a boolean semaphore region.
virtual void receiveDanglingMessages() override
Answer to MPI Messages.
virtual ~ServiceRepository()
static tarch::services::ServiceRepository _singleton
static ServiceRepository & getInstance()
void init()
Maybe the only service that you don't have to init and shutdown.
void removeService(Service *const service)
This routine is thread-safe, i.e.
std::string getListOfRegisteredServices() const
bool hasService(Service *service) const
This routine is thread-safe.
void addService(Service *const service, const std::string &name)
Add a new service.
virtual void shutdown() override