#include <OBTServiceManager.h>
Private Types | |
typedef std::map < std::string, std::map< unsigned int, IService * > > | ServicesMap |
Registered services. | |
Private Member Functions | |
ServiceManager () | |
ServiceManager (const ServiceManager &) | |
virtual | ~ServiceManager () |
const ServiceManager & | operator= (const ServiceManager &) |
Private Attributes | |
ServicesMap | _services |
Friends | |
class | Singleton< ServiceManager > |
template<class TService> | |
TService * | getService (unsigned int ID=0) |
Get a service. | |
template<class TService> | |
const std::map < unsigned int, IService * > * | getServices () |
template<class TService> | |
void | addService (TService *service, unsigned int ID=0) |
template<class TService> | |
void | removeService (unsigned int ID=0) |
Loaded plugins can add services the ServiceManager. One service interface may be realized by several implementation classes. A user of this service can then choose between these implementations, according to a specific criterion (e.g file extension for a loader). Services have to be queried via a call to ServiceManager
Definition at line 22 of file OBTServiceManager.h.
typedef std::map< std::string, std::map< unsigned int, IService* > > OBT::ServiceManager::ServicesMap [private] |
ServiceManager::ServiceManager | ( | ) | [private] |
OBT::ServiceManager::ServiceManager | ( | const ServiceManager & | ) | [private] |
copy constructor
ServiceManager::~ServiceManager | ( | ) | [private, virtual] |
const ServiceManager& OBT::ServiceManager::operator= | ( | const ServiceManager & | ) | [private] |
assignment
friend class Singleton< ServiceManager > [friend] |
Definition at line 24 of file OBTServiceManager.h.
TService* getService | ( | unsigned int | ID = 0 |
) | [friend] |
Get a service.
TService | type of the service to get. | |
ID | id of the service to get. |
Definition at line 85 of file OBTServiceManager.h.
00086 { 00087 ServiceManager::ServicesMap& services( Singleton< ServiceManager >::getInstance()._services ) ; 00088 ServiceManager::ServicesMap::iterator servicesIte( services.find( typeid( TService ).name() ) ) ; 00089 if ( servicesIte != services.end() ) 00090 { 00091 std::map< unsigned int, IService* >::iterator ite( servicesIte->second.find( ID ) ) ; 00092 if ( ite != servicesIte->second.end() ) 00093 { 00094 return static_cast<TService*>( ite->second ) ; 00095 } 00096 } 00097 TRACE_WARNING( "The following service was not found : " << typeid( TService ).name() << " with id " << ID ) ; 00098 return NULL ; 00099 }
const std::map< unsigned int, IService* >* getServices | ( | ) | [friend] |
Get all the services of the given type.
TService | type of the services to get. |
Definition at line 105 of file OBTServiceManager.h.
00106 { 00107 const std::map< unsigned int, IService* >* servicesFound = 0 ; 00108 ServiceManager::ServicesMap& services( Singleton< ServiceManager >::getInstance()._services ) ; 00109 ServiceManager::ServicesMap::const_iterator servicesIte( services.find( typeid( TService ).name() ) ) ; 00110 if ( servicesIte != services.end() ) 00111 { 00112 servicesFound = &servicesIte->second ; 00113 } 00114 else 00115 { 00116 TRACE_WARNING( "The following services was not found : " << typeid( TService ).name() ) ; 00117 } 00118 return servicesFound ; 00119 }
void addService | ( | TService * | service, | |
unsigned int | ID = 0 | |||
) | [friend] |
Add a service
service | to add. |
[DEBUG | ONLY] if service is null |
Definition at line 125 of file OBTServiceManager.h.
00126 { 00127 OBT_DBG_ASSERT( service != NULL ) ; 00128 ServiceManager::ServicesMap::mapped_type& serviceMap 00129 ( Singleton< ServiceManager >::getInstance()._services[ typeid( TService ).name() ] ) ; 00130 serviceMap[ ID ] = service ; 00131 }
void removeService | ( | unsigned int | ID = 0 |
) | [friend] |
Remove a service
[DEBUG | ONLY] if service is null |
Definition at line 137 of file OBTServiceManager.h.
00138 { 00139 ServiceManager::ServicesMap::iterator servicesIte 00140 ( Singleton< ServiceManager >::getInstance()._services.find( typeid( TService ).name() ) ) ; 00141 if ( servicesIte != Singleton< ServiceManager >::getInstance()._services.end() ) 00142 { 00143 std::map< unsigned int, IService* >::iterator ite( servicesIte->second.find( ID ) ) ; 00144 if ( ite != servicesIte->second.end() ) 00145 { 00146 servicesIte->second.erase( ite ) ; 00147 if ( servicesIte->second.empty() ) 00148 { 00149 Singleton< ServiceManager >::getInstance()._services.erase( servicesIte ) ; 00150 } 00151 } 00152 } 00153 }
ServicesMap OBT::ServiceManager::_services [private] |
Definition at line 76 of file OBTServiceManager.h.