version 1.25, 2009/03/23 07:44:25
|
version 1.26, 2009/11/16 09:42:17
|
|
|
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
|
class ProviderKey |
|
{ |
|
public: |
|
ProviderKey( |
|
const String &providerName, |
|
const String &providerModuleName): |
|
_providerName(providerName.getCString()), |
|
_providerModuleName(providerModuleName.getCString()) |
|
{ |
|
_providerNameLen = strlen((const char*)_providerName); |
|
_providerModuleNameLen = strlen((const char*)_providerModuleName); |
|
} |
|
|
|
ProviderKey( const ProviderKey& key) |
|
{ |
|
_providerName = key._providerName; |
|
_providerModuleName = key._providerModuleName; |
|
_providerNameLen = key._providerNameLen; |
|
_providerModuleNameLen = key._providerModuleNameLen; |
|
} |
|
|
|
~ProviderKey() |
|
{ |
|
} |
|
|
|
static Boolean equal(const ProviderKey& key1, const ProviderKey& key2) |
|
{ |
|
return key1._providerNameLen == key2._providerNameLen && |
|
key1._providerModuleNameLen == key2._providerModuleNameLen && |
|
!System::strcasecmp( |
|
key1._providerName, |
|
key2._providerName) && |
|
!System::strcasecmp( |
|
key1._providerModuleName, |
|
key2._providerModuleName); |
|
} |
|
|
|
static Uint32 hash(const ProviderKey& key) |
|
{ |
|
return (key._providerNameLen << 4) + key._providerModuleNameLen; |
|
} |
|
|
|
private: |
|
ProviderKey& operator =( const ProviderKey& key); |
|
|
|
CString _providerName; |
|
CString _providerModuleName; |
|
Uint32 _providerNameLen; |
|
Uint32 _providerModuleNameLen; |
|
}; |
|
|
class PEGASUS_CMPIPM_LINKAGE CMPILocalProviderManager | class PEGASUS_CMPIPM_LINKAGE CMPILocalProviderManager |
{ | { |
| |
|
|
public: | public: |
OpProviderHolder getProvider( | OpProviderHolder getProvider( |
const String & fileName, | const String & fileName, |
const String & providerName); |
const String & providerName, |
|
const String & providerModuleName); |
| |
OpProviderHolder getRemoteProvider( | OpProviderHolder getRemoteProvider( |
const String & fileName, | const String & fileName, |
const String & providerName); |
const String & providerName, |
|
const String & providerModuleName); |
| |
Boolean unloadProvider( | Boolean unloadProvider( |
const String & fileName, | const String & fileName, |
const String & providerName); |
const String & providerName, |
|
const String & providerModuleName); |
| |
void shutdownAllProviders(); | void shutdownAllProviders(); |
| |
Boolean hasActiveProviders(); | Boolean hasActiveProviders(); |
void unloadIdleProviders(); | void unloadIdleProviders(); |
Boolean isProviderActive(const String &providerName); |
|
|
Boolean isProviderActive( |
|
const String &providerName, |
|
const String &providerModuleName); |
| |
/** | /** |
Gets list of indication providers to be enabled. | Gets list of indication providers to be enabled. |
|
|
private: | private: |
enum CTRL | enum CTRL |
{ | { |
INSERT_PROVIDER, |
|
INSERT_MODULE, |
|
LOOKUP_PROVIDER, |
|
LOOKUP_MODULE, |
|
GET_PROVIDER, | GET_PROVIDER, |
UNLOAD_PROVIDER, | UNLOAD_PROVIDER, |
UNLOAD_ALL_PROVIDERS, | UNLOAD_ALL_PROVIDERS, |
|
|
typedef HashTable<String, CMPIProvider *, | typedef HashTable<String, CMPIProvider *, |
EqualFunc<String>, HashFunc<String> > ResolverTable; | EqualFunc<String>, HashFunc<String> > ResolverTable; |
| |
typedef HashTable<String, CMPIProvider *, |
typedef HashTable<ProviderKey, CMPIProvider *, |
EqualFunc<String>, HashFunc<String> > ProviderTable; |
ProviderKey, ProviderKey > ProviderTable; |
| |
typedef HashTable<String, CMPIProviderModule *, | typedef HashTable<String, CMPIProviderModule *, |
EqualFunc<String>, HashFunc<String> > ModuleTable; | EqualFunc<String>, HashFunc<String> > ModuleTable; |
|
|
typedef struct | typedef struct |
{ | { |
const String *providerName; | const String *providerName; |
|
const String *providerModuleName; |
const String *fileName; | const String *fileName; |
const String *location; | const String *location; |
} CTRL_STRINGS; | } CTRL_STRINGS; |
|
|
| |
void _unloadProvider(CMPIProvider * provider, Boolean forceUnload = false); | void _unloadProvider(CMPIProvider * provider, Boolean forceUnload = false); |
| |
CMPIProvider * _lookupProvider(const String & providerName); |
CMPIProvider * _lookupProvider( |
|
const String & providerName, |
|
const String & providerModuleName); |
|
|
|
Boolean _removeProvider( |
|
const String & providerName, |
|
const String & providerModuleName); |
| |
CMPIProviderModule * _lookupModule(const String & moduleFileName); | CMPIProviderModule * _lookupModule(const String & moduleFileName); |
Mutex _providerTableMutex; | Mutex _providerTableMutex; |