version 1.55, 2008/07/10 17:28:11
|
version 1.55.4.2, 2009/03/24 13:48:33
|
|
|
throw; | throw; |
} | } |
} | } |
|
|
|
// Provider's cleanup method called successfully, if there are still any |
|
// pending operations with provider then we were asked to cleanup forcibly, |
|
// don't uninitialize provider. |
|
if (_current_operations.get() == 0) |
|
{ |
_status = UNINITIALIZED; | _status = UNINITIALIZED; |
|
} |
|
|
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
} | } |
| |
|
|
"CMPIProvider::removeThreadFromWatch()"); | "CMPIProvider::removeThreadFromWatch()"); |
PEGASUS_ASSERT( t != 0 ); | PEGASUS_ASSERT( t != 0 ); |
| |
PEGASUS_ASSERT (_threadWatchList.contains (t)); |
// Note: After MI returned true from cleanup() method , there might be some |
PEGASUS_ASSERT (!_cleanedThreads.contains (t)); |
// threads running in MI. CMPILocalProviderManager::cleanupThread() called |
|
// below will take care of joining the running threads in MI. |
// and remove it from the watched list |
{ |
|
AutoMutex mtx(_removeThreadMutex); |
|
if (_threadWatchList.contains(t)) |
|
{ |
|
// Remove it from the watched list |
_threadWatchList.remove(t); | _threadWatchList.remove(t); |
|
} |
|
else |
|
{ |
|
// This thread already has been removed from watch list. |
|
PEG_METHOD_EXIT(); |
|
return; |
|
} |
|
} |
|
|
|
|
|
PEGASUS_ASSERT (!_cleanedThreads.contains (t)); |
| |
// Add the thread to the CMPIProvider's list. | // Add the thread to the CMPIProvider's list. |
// We use this list to keep track of threads that are | // We use this list to keep track of threads that are |