version 1.24, 2005/06/06 03:46:35
|
version 1.25, 2005/06/14 17:35:14
|
|
|
PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2, | PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
"_provider_ctrl::UNLOAD_PROVIDER"); | "_provider_ctrl::UNLOAD_PROVIDER"); |
CMPIProvider *pr = _lookupProvider (*(parms->providerName)); | CMPIProvider *pr = _lookupProvider (*(parms->providerName)); |
|
|
if ((pr->getStatus () == CMPIProvider::INITIALIZED)) | if ((pr->getStatus () == CMPIProvider::INITIALIZED)) |
{ | { |
| |
|
|
PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL4, | PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
"Unloading CMPIProvider" + pr->_name); |
"Unloading CMPIProvider: " + pr->_name); |
| |
AutoMutex lock (_providerTableMutex); | AutoMutex lock (_providerTableMutex); |
// The provider table must be locked before unloading. | // The provider table must be locked before unloading. |
|
|
delete pr; | delete pr; |
| |
} | } |
|
else { |
|
// No need to have a memory leak. |
|
delete pr; |
|
} |
break; | break; |
} | } |
| |
|
|
{ | { |
CTRL_STRINGS strings; | CTRL_STRINGS strings; |
PEG_METHOD_ENTER (TRC_PROVIDERMANAGER, "ProviderManager::unloadProvider"); | PEG_METHOD_ENTER (TRC_PROVIDERMANAGER, "ProviderManager::unloadProvider"); |
|
|
|
String lproviderName ("L"); |
|
String rproviderName ("R"); |
|
lproviderName.append (providerName); |
|
rproviderName.append (providerName); |
|
|
strings.fileName = &fileName; | strings.fileName = &fileName; |
strings.providerName = &providerName; |
strings.providerName = &lproviderName; |
|
strings.location = &String::EMPTY; |
|
|
|
_provider_ctrl (UNLOAD_PROVIDER, &strings, (void *) 0); |
|
|
|
strings.providerName = &rproviderName; |
|
|
_provider_ctrl (UNLOAD_PROVIDER, &strings, (void *) 0); | _provider_ctrl (UNLOAD_PROVIDER, &strings, (void *) 0); |
|
|
PEG_METHOD_EXIT (); | PEG_METHOD_EXIT (); |
} | } |
| |
|
|
CMPILocalProviderManager::_lookupProvider (const String & providerName) | CMPILocalProviderManager::_lookupProvider (const String & providerName) |
{ | { |
PEG_METHOD_ENTER (TRC_PROVIDERMANAGER, "_lookupProvider"); | PEG_METHOD_ENTER (TRC_PROVIDERMANAGER, "_lookupProvider"); |
|
|
// lock the providerTable mutex | // lock the providerTable mutex |
AutoMutex lock (_providerTableMutex); | AutoMutex lock (_providerTableMutex); |
| |