#include <servicemanager.h>
Inheritance diagram for kore::ServiceManager::
Public Methods | |
ServiceManager () | |
Default constructor. More... | |
virtual | ~ServiceManager () |
Destructor. More... | |
virtual void | registerProvider (ServiceProvider *provider) |
Registers all the services provided by the given ServiceProvider. More... | |
virtual void | unregisterProvider (ServiceProvider *provider) |
Unregisters all the services provided by the given ServiceProvider. More... | |
virtual void | registerProviders (ServiceProvider **providers) |
Registers all the services provided by the given ServiceProviders. More... | |
virtual void | unregisterProviders () |
Unregisters ALL the Services registered to this ServiceManager. More... | |
virtual void | registerService (const Service *service) |
Registers the given Service to this ServiceManager. More... | |
virtual void | unregisterService (const Service *service) |
Unregisters the given Service from this ServiceManager. More... | |
virtual void | registerServices (const Service **srvs) |
Registers a list of Services to this ServiceManager. More... | |
virtual void | unregisterServices () |
Unregisters ALL the Services registered to this ServiceManager. More... | |
virtual const Service ** | registeredServices () const |
Gets the list of Services registered to this ServiceManager. More... | |
virtual const Service ** | registeredServices (ServiceProvider *provider) const |
Gets the list of Services provided by the given ServiceProvider AND registered to this ServiceManager. More... | |
virtual const Service ** | registeredServices (const Service *service) const |
Gets the list of Services registered to this ServiceManager AND matching the given Service. More... | |
virtual const Service ** | registeredServices (const char *service) const |
Gets the list of Services registered to this ServiceManager AND matching the given Service name. More... | |
virtual const Service * | registeredService (const Service *service) const |
Gets the first Service best matching the given Service. More... | |
virtual const Service * | registeredService (const char *service) const |
Gets the first Service best matching the given Service name. More... | |
virtual ServiceProvider ** | registeredProviders () const |
Gets the list of ServiceProviders which have Services registered to this ServiceManager. More... | |
virtual ServiceProvider ** | registeredProviders (const Service *service) const |
Gets the list of ServiceProviders which have Services registered to this ServiceManager AND matching the given Service. More... | |
virtual ServiceProvider ** | registeredProviders (const char *service) const |
Gets the list of ServiceProviders which have Services registered to this ServiceManager AND matching the given Service name. More... | |
virtual ServiceProvider * | registeredProvider (const Service *service) const |
Gets the first ServiceProvider which has a Service best matching the given Service. More... | |
virtual ServiceProvider * | registeredProvider (const char *service) const |
Gets the first ServiceProvider which has a Service best matching the given Service name. More... | |
Private Types | |
typedef hash_multimap< const char *, const Service *, hash< const char *>, eqstr > | srv_hash_type |
typedef set< ServiceProvider *, ltptr > | sp_set_type |
Private Attributes | |
const Version * | _smVersion |
const Version * | _smAPIVersion |
const Info * | _smInfo |
const Service * | _smService |
srv_hash_type | _services |
When creating a new ServiceProvider instance, you have to register the services it provides to the ServiceManager, as well as unregister them right before the instance will get destroyed. The ServiceManager can be queried (registered...(...)) for the existing registered Services and ServiceProviders.
Definition at line 27 of file servicemanager.h.
|
Definition at line 208 of file servicemanager.h. Referenced by registeredProviders(). |
|
Definition at line 199 of file servicemanager.h. |
|
Default constructor. Creates a new ServiceManager instance. Definition at line 21 of file servicemanager.cpp. References _smAPIVersion, _smInfo, _smService, _smVersion, kore::ServiceProvider::addService(), kore::Module::setInfo(), SM_API_MAJOR, SM_API_MINOR, SM_API_REVISION, SM_API_VERSION, SM_DESCRIPTION, SM_MAJOR, SM_MINOR, SM_NAME, SM_REVISION, SM_SERVICE, SM_SERVICE_DESCRIPTION, SM_TYPE, and SM_VERSION.
00022 { 00023 _smVersion = new Version(SM_MAJOR,SM_MINOR,SM_REVISION,SM_VERSION); 00024 _smAPIVersion = new Version(SM_API_MAJOR,SM_API_MINOR,SM_API_REVISION,SM_API_VERSION); 00025 _smInfo = new Info(this, SM_NAME, SM_TYPE, SM_DESCRIPTION, _smVersion, _smAPIVersion); 00026 setInfo(_smInfo); 00027 _smService = new Service(this, SM_SERVICE, SM_SERVICE_DESCRIPTION); 00028 addService(_smService); 00029 } |
|
Destructor.
Definition at line 30 of file servicemanager.cpp. References _services, _smAPIVersion, _smInfo, _smService, _smVersion, unregisterProviders(), and unregisterServices().
00031 { 00032 unregisterServices(); 00033 unregisterProviders(); 00034 delete _smInfo; 00035 delete _smVersion; 00036 delete _smAPIVersion; 00037 delete _smService; 00038 } |
|
Gets the first ServiceProvider which has a Service best matching the given Service name.
Definition at line 152 of file servicemanager.cpp. References registeredService(), and kore::ServiceProvider::service().
00153 { 00154 const Service* srv = registeredService(service); 00155 if( srv ) 00156 return srv->provider(); 00157 else 00158 return 0; 00159 } |
|
Gets the first ServiceProvider which has a Service best matching the given Service.
Definition at line 147 of file servicemanager.cpp. References kore::ServiceProvider::service().
00148 { 00149 return registeredProvider(service->name()); 00150 } |
|
Gets the list of ServiceProviders which have Services registered to this ServiceManager AND matching the given Service name.
Definition at line 166 of file servicemanager.cpp. References registeredServices(), kore::ServiceProvider::service(), kore::ServiceProvider::ServiceProvider(), and sp_set_type.
00167 { 00168 sp_set_type sps; 00169 const Service** srvs = registeredServices(service); 00170 int i = 0; 00171 for(i = 0; srvs[i]; i++) 00172 sps.insert(srvs[i]->provider()); 00173 delete[] srvs; 00174 int n = sps.size(); 00175 ServiceProvider** res = new ServiceProvider*[n+1]; 00176 i = 0; 00177 sp_set_type::const_iterator b,e; 00178 b = sps.begin(); 00179 e = sps.end(); 00180 for( sp_set_type::const_iterator j = b; j != e; ++j, ++i ) 00181 res[i] = *j; 00182 res[i] = 0; 00183 return res; 00184 } |
|
Gets the list of ServiceProviders which have Services registered to this ServiceManager AND matching the given Service.
Definition at line 161 of file servicemanager.cpp. References registeredProviders(), and kore::ServiceProvider::service().
00162 { 00163 return registeredProviders(service->name()); 00164 } |
|
Gets the list of ServiceProviders which have Services registered to this ServiceManager.
Definition at line 186 of file servicemanager.cpp. References registeredServices(), kore::ServiceProvider::ServiceProvider(), and sp_set_type. Referenced by registeredProviders(), and unregisterProviders().
00187 { 00188 sp_set_type sps; 00189 const Service** srvs = registeredServices(); 00190 int i = 0; 00191 for(i = 0; srvs[i]; i++) 00192 sps.insert(srvs[i]->provider()); 00193 delete[] srvs; 00194 int n = sps.size(); 00195 ServiceProvider** res = new ServiceProvider*[n+1]; 00196 i = 0; 00197 sp_set_type::const_iterator b,e; 00198 b = sps.begin(); 00199 e = sps.end(); 00200 for( sp_set_type::const_iterator j = b; j != e; ++j, ++i ) 00201 res[i] = *j; 00202 res[i] = 0; 00203 return res; 00204 } |
|
Gets the first Service best matching the given Service name.
Definition at line 139 of file servicemanager.cpp. References _services, and kore::ServiceProvider::service().
|
|
Gets the first Service best matching the given Service.
Definition at line 134 of file servicemanager.cpp. References kore::ServiceProvider::service(). Referenced by registeredProvider().
00135 { 00136 return registeredService(service->name()); 00137 } |
|
Gets the list of Services registered to this ServiceManager AND matching the given Service name.
Definition at line 122 of file servicemanager.cpp. References _services, and kore::ServiceProvider::service().
00123 { 00124 int n = _services.count(service); 00125 const Service** srvs = new const Service*[n+1]; 00126 pair<srv_hash_type::const_iterator, srv_hash_type::const_iterator> p = _services.equal_range(service); 00127 int i = 0; 00128 for( srv_hash_type::const_iterator j = p.first; j != p.second; ++j, ++i ) 00129 srvs[i] = j->second; 00130 srvs[i] = 0; 00131 return srvs; 00132 } |
|
Gets the list of Services registered to this ServiceManager AND matching the given Service.
Definition at line 117 of file servicemanager.cpp. References registeredServices(), and kore::ServiceProvider::service().
00118 { 00119 return registeredServices(service->name()); 00120 } |
|
Gets the list of Services provided by the given ServiceProvider AND registered to this ServiceManager.
Definition at line 99 of file servicemanager.cpp. References _services.
00100 { 00101 vector<const Service*> srvs; 00102 srv_hash_type::const_iterator b,e; 00103 b = _services.begin(); 00104 e = _services.end(); 00105 for( srv_hash_type::const_iterator j = b; j != e; ++j ) 00106 if( j->second->provider() == prov ) 00107 srvs.push_back( j->second ); 00108 int n = srvs.size(); 00109 const Service** res = new const Service*[n+1]; 00110 int i; 00111 for( i= 0; i < n; i++ ) 00112 res[i] = srvs[i]; 00113 res[i] = 0; 00114 return res; 00115 } |
|
Gets the list of Services registered to this ServiceManager.
Definition at line 85 of file servicemanager.cpp. References _services. Referenced by registeredProviders(), registeredServices(), and unregisterServices().
00086 { 00087 int n = _services.size(); 00088 const Service** srvs = new const Service*[n+1]; 00089 srv_hash_type::const_iterator b,e; 00090 b = _services.begin(); 00091 e = _services.end(); 00092 int i = 0; 00093 for( srv_hash_type::const_iterator j = b; j != e; ++j, ++i ) 00094 srvs[i] = j->second; 00095 srvs[i] = 0; 00096 return srvs; 00097 } |
|
Registers all the services provided by the given ServiceProvider.
Definition at line 65 of file servicemanager.cpp. References registerService(). Referenced by registerProviders().
00066 { 00067 provider->registeringProvider(this); 00068 const Service** srvs = provider->services(); 00069 for(int i=0; srvs[i]; i++) 00070 registerService(srvs[i]); 00071 delete[] srvs; 00072 provider->providerRegistered(this); 00073 } |
|
Registers all the services provided by the given ServiceProviders.
Definition at line 219 of file servicemanager.cpp. References registerProvider().
00220 { 00221 for( int i = 0; providers[i]; i++ ) 00222 registerProvider(providers[i]); 00223 } |
|
Registers the given Service to this ServiceManager.
Referenced by registerProvider(), and registerServices(). |
|
Registers a list of Services to this ServiceManager.
Definition at line 206 of file servicemanager.cpp. References registerService().
00207 { 00208 for( int i = 0; srvs[i]; i++ ) 00209 registerService(srvs[i]); 00210 } |
|
Unregisters all the services provided by the given ServiceProvider.
Definition at line 75 of file servicemanager.cpp. References unregisterService(). Referenced by unregisterProviders().
00076 { 00077 provider->unregisteringProvider(this); 00078 const Service** srvs = provider->services(); 00079 for(int i=0; srvs[i]; i++) 00080 unregisterService(srvs[i]); 00081 delete[] srvs; 00082 provider->providerUnregistered(this); 00083 } |
|
Unregisters ALL the Services registered to this ServiceManager.
Definition at line 224 of file servicemanager.cpp. References registeredProviders(), kore::ServiceProvider::ServiceProvider(), and unregisterProvider(). Referenced by ~ServiceManager().
00225 { 00226 ServiceProvider** srvs = registeredProviders(); 00227 for(int i = 0; srvs[i]; i++) 00228 unregisterProvider(srvs[i]); 00229 delete[] srvs; 00230 } |
|
Unregisters the given Service from this ServiceManager.
Referenced by unregisterProvider(), and unregisterServices(). |
|
Unregisters ALL the Services registered to this ServiceManager.
Definition at line 211 of file servicemanager.cpp. References registeredServices(), and unregisterService(). Referenced by ~ServiceManager().
00212 { 00213 const Service** srvs = registeredServices(); 00214 for(int i = 0; srvs[i]; i++) 00215 unregisterService(srvs[i]); 00216 delete[] srvs; 00217 } |
|
Reimplemented from kore::ServiceProvider. Definition at line 212 of file servicemanager.h. Referenced by registeredService(), registeredServices(), and ~ServiceManager(). |
|
Definition at line 175 of file servicemanager.h. Referenced by ServiceManager(), and ~ServiceManager(). |
|
Definition at line 177 of file servicemanager.h. Referenced by ServiceManager(), and ~ServiceManager(). |
|
Definition at line 179 of file servicemanager.h. Referenced by ServiceManager(), and ~ServiceManager(). |
|
Definition at line 173 of file servicemanager.h. Referenced by ServiceManager(), and ~ServiceManager(). |