version 1.18.12.1, 2007/12/19 14:04:39
|
version 1.21, 2008/03/17 08:45:38
|
|
|
//============================================================================== | //============================================================================== |
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
// NOCHKSRC |
|
#include "JMPILocalProviderManager.h" | #include "JMPILocalProviderManager.h" |
| |
#include <Pegasus/Common/Time.h> | #include <Pegasus/Common/Time.h> |
|
|
PEGASUS_USING_STD; | PEGASUS_USING_STD; |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
int JMPILocalProviderManager::trace=0; |
|
|
|
#ifdef PEGASUS_DEBUG |
|
#define DDD(x) if (JMPILocalProviderManager::trace) x; |
|
#else |
|
#define DDD(x) |
|
#endif |
|
|
|
JMPILocalProviderManager::JMPILocalProviderManager(void) | JMPILocalProviderManager::JMPILocalProviderManager(void) |
: _idle_timeout(PEGASUS_PROVIDER_IDLE_TIMEOUT_SECONDS) | : _idle_timeout(PEGASUS_PROVIDER_IDLE_TIMEOUT_SECONDS) |
{ | { |
#ifdef PEGASUS_DEBUG |
|
if (getenv("PEGASUS_JMPI_TRACE")) |
|
JMPILocalProviderManager::trace=1; |
|
else |
|
JMPILocalProviderManager::trace=0; |
|
#else |
|
JMPILocalProviderManager::trace=0; |
|
#endif |
|
} | } |
| |
JMPILocalProviderManager::~JMPILocalProviderManager(void) | JMPILocalProviderManager::~JMPILocalProviderManager(void) |
|
|
_provider_ctrl(UNLOAD_ALL_PROVIDERS, this, &ccode); | _provider_ctrl(UNLOAD_ALL_PROVIDERS, this, &ccode); |
} | } |
| |
Sint32 JMPILocalProviderManager::_provider_ctrl(CTRL code, void *parm, void *ret) |
Sint32 JMPILocalProviderManager::_provider_ctrl( |
|
CTRL code, |
|
void *parm, |
|
void *ret) |
{ | { |
static Uint32 quantum; | static Uint32 quantum; |
PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "_provider_ctrl"); |
PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, |
|
"JMPILocalProviderManager::_provider_ctrl"); |
| |
Sint32 ccode = 0; | Sint32 ccode = 0; |
CTRL_STRINGS *parms = reinterpret_cast<CTRL_STRINGS *>(parm); | CTRL_STRINGS *parms = reinterpret_cast<CTRL_STRINGS *>(parm); |
|
|
| |
case GET_PROVIDER: | case GET_PROVIDER: |
{ | { |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL2, |
|
"_provider_ctrl::GET_PROVIDER"); |
|
|
|
String providerName = *(parms->providerName); | String providerName = *(parms->providerName); |
String moduleFileName = *(parms->fileName); | String moduleFileName = *(parms->fileName); |
String interfaceName = *(parms->interfaceName); | String interfaceName = *(parms->interfaceName); |
| |
DDD(PEGASUS_STD(cout) |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
<<"--- JMPILocalProviderManager::_provider_ctrl: GET_PROVIDER providerName = " |
"GET_PROVIDER providerName = %s, " |
<<providerName |
"moduleFileName = %s , interfaceName = %s", |
<<", moduleFileName = " |
(const char*)providerName.getCString(), |
<<moduleFileName |
(const char*)moduleFileName.getCString(), |
<<", interfaceName = " |
(const char*)interfaceName.getCString())); |
<<interfaceName |
|
<<PEGASUS_STD(endl)); |
|
| |
if (providerName.size () == 0) | if (providerName.size () == 0) |
{ | { |
|
PEG_METHOD_EXIT(); |
throw NullPointer(); | throw NullPointer(); |
} | } |
| |
|
|
| |
if (true == _providers.lookup(providerName, provider)) | if (true == _providers.lookup(providerName, provider)) |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4, |
Tracer::LEVEL4, |
"Found JMPIProvider %s in JMPIProvider Manager Cache", |
"Found JMPIProvider " |
(const char*)providerName.getCString())); |
+ providerName |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4, |
+ " in JMPIProvider Manager Cache"); |
"SetProvider(%X) at provider holder.", |
DDD(PEGASUS_STD(cout) |
(long)provider)); |
<<"--- JMPILocalProviderManager::_provider_ctrl: Found " |
|
<<providerName |
|
<<" in JMPIProvider Manager Cache" |
|
<<PEGASUS_STD(endl)); |
|
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl:" |
|
" setting provider to " |
|
<<PEGASUS_STD(hex) |
|
<<(long)provider |
|
<<PEGASUS_STD(dec) |
|
<<PEGASUS_STD(endl)); |
|
| |
ph->SetProvider(provider); | ph->SetProvider(provider); |
| |
|
|
break; | break; |
} | } |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
Tracer::LEVEL4, |
"Creating JMPIProvider %s", |
"Creating JMPIProvider " + providerName ); |
(const char*)providerName.getCString())); |
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl: Creating " |
|
<<providerName |
|
<<PEGASUS_STD(endl)); |
|
| |
if (false == _modules.lookup(moduleFileName, module)) | if (false == _modules.lookup(moduleFileName, module)) |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4, |
Tracer::LEVEL4, |
"Creating JMPIProvider Module %s", |
"Creating JMPIProvider Module " |
(const char*)moduleFileName.getCString())); |
+ moduleFileName ); |
|
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl: " |
|
"Creating module " |
|
<<moduleFileName |
|
<<PEGASUS_STD(endl)); |
|
| |
newModule = new JMPIProviderModule(moduleFileName, | newModule = new JMPIProviderModule(moduleFileName, |
interfaceName); | interfaceName); |
|
|
if (0 == newModule) | if (0 == newModule) |
{ | { |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
Tracer::LEVEL4, |
"New JMPIProviderModule is NULL!"); |
"new JMPIProviderModule is NULL!"); |
PEG_METHOD_EXIT(); |
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl:" |
|
" new JMPIProviderModule is NULL!" |
|
<<PEGASUS_STD(endl)); |
|
|
|
throw NullPointer(); | throw NullPointer(); |
} | } |
| |
|
|
} | } |
else | else |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4, |
Tracer::LEVEL4, |
"Using Cached JMPIProvider Module %s", |
"Using Cached JMPIProvider Module " |
(const char*)moduleFileName.getCString())); |
+ moduleFileName); |
|
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl: " |
|
"Using cached " |
|
<<moduleFileName |
|
<<PEGASUS_STD(endl)); |
|
} | } |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4, |
Tracer::LEVEL4, |
"Loading/Linking JMPIProvider Module %s", |
"Loading/Linking JMPIProvider Module " |
(const char*)moduleFileName.getCString())); |
+ moduleFileName ); |
|
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl:" |
|
" Loading/Linking module " |
|
<<moduleFileName |
|
<<PEGASUS_STD(endl)); |
|
| |
try | try |
{ | { |
|
|
} | } |
catch(...) | catch(...) |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
Tracer::LEVEL4, |
|
"Exception caught Loading/Linking" | "Exception caught Loading/Linking" |
" JMPIProvider Module " |
"JMPIProvider Module %s", |
+ moduleFileName ); |
(const char*)moduleFileName.getCString())); |
DDD(PEGASUS_STD(cout) |
PEG_METHOD_EXIT(); |
<<"--- JMPILocalProviderManager::_provider_ctrl: " |
|
"Exception caught Loading/Linking module " |
|
<<moduleFileName |
|
<<PEGASUS_STD(endl)); |
|
|
|
throw; | throw; |
} | } |
| |
|
|
newProvider = new JMPIProvider(providerName, module, &base); | newProvider = new JMPIProvider(providerName, module, &base); |
if (0 == newProvider) | if (0 == newProvider) |
{ | { |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
Tracer::LEVEL4, |
"New JMPIProvider is NULL!"); |
"new JMPIProvider is NULL!"); |
PEG_METHOD_EXIT(); |
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl: " |
|
"new JMPIProvider is NULL!" |
|
<<PEGASUS_STD(endl)); |
|
|
|
throw NullPointer(); | throw NullPointer(); |
} | } |
| |
|
|
| |
if (0 == (provider->_cimom_handle = new CIMOMHandle())) | if (0 == (provider->_cimom_handle = new CIMOMHandle())) |
{ | { |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
Tracer::LEVEL4, |
"CIMOMhandle is NULL!"); |
"_cimom_handle is NULL!"); |
PEG_METHOD_EXIT(); |
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl:" |
|
" _cimom_handle is NULL!" |
|
<<PEGASUS_STD(endl)); |
|
|
|
throw NullPointer(); | throw NullPointer(); |
} | } |
| |
|
|
{ | { |
AutoMutex lock(provider->_statusMutex); | AutoMutex lock(provider->_statusMutex); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
Tracer::LEVEL2, |
"Loading JMPIProvider %s", |
"Loading JMPIProvider " |
(const char*)provider->_name.getCString())); |
+ provider->_name); |
|
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl:" |
|
" Loading " |
|
<<provider->_name |
|
<<PEGASUS_STD(endl)); |
|
try | try |
{ | { |
provider->initialize(*(provider->_cimom_handle)); | provider->initialize(*(provider->_cimom_handle)); |
} | } |
catch(CIMException &cimExcept) | catch(CIMException &cimExcept) |
{ | { |
PEG_TRACE_STRING( |
PEG_TRACE((TRC_DISCARDED_DATA,Tracer::LEVEL2, |
TRC_PROVIDERMANAGER, |
"Calling provider->initialize caused exception: %s", |
Tracer::LEVEL4, |
(const char*)cimExcept.getMessage().getCString())); |
"Calling provider->initialize caused exception:" |
|
+cimExcept.getMessage() |
|
); |
|
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl:" |
|
" Exception caught calling initialize!" |
|
<<PEGASUS_STD(endl)); |
|
throw; | throw; |
} | } |
catch(Exception &except) | catch(Exception &except) |
{ | { |
PEG_TRACE_STRING( |
PEG_TRACE((TRC_DISCARDED_DATA,Tracer::LEVEL2, |
TRC_PROVIDERMANAGER, |
"Calling provider->initialize caused exception: %s", |
Tracer::LEVEL4, |
(const char*)except.getMessage().getCString())); |
"Calling provider->initialize caused exception:" |
|
+except.getMessage() |
|
); |
|
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl:" |
|
" Exception caught calling initialize!" |
|
<<PEGASUS_STD(endl)); |
|
throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, | throw PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, |
except.getMessage()); | except.getMessage()); |
} | } |
catch(...) | catch(...) |
{ | { |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, |
PEG_TRACE_CSTRING(TRC_DISCARDED_DATA,Tracer::LEVEL2, |
Tracer::LEVEL4, |
|
"Exception caught calling initialize!"); | "Exception caught calling initialize!"); |
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl:" |
|
" Exception caught calling initialize!" |
|
<<PEGASUS_STD(endl)); |
|
| |
throw UninitializedObjectException(); | throw UninitializedObjectException(); |
} | } |
|
|
} | } |
| |
delete newProvider; | delete newProvider; |
|
PEG_METHOD_EXIT(); |
throw; | throw; |
} | } |
| |
DDD(PEGASUS_STD(cout) |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4, |
<<"--- JMPILocalProviderManager::_provider_ctrl:" |
"SetProvider(%X) at provider holder.", |
"setting provider to " |
(long)provider)); |
<<PEGASUS_STD(hex) |
|
<<(long)provider |
|
<<PEGASUS_STD(dec) |
|
<<PEGASUS_STD(endl)); |
|
| |
ph->SetProvider( provider ); | ph->SetProvider( provider ); |
break; | break; |
|
|
| |
case UNLOAD_PROVIDER: | case UNLOAD_PROVIDER: |
{ | { |
DDD(PEGASUS_STD(cout) |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
<<"--- JMPILocalProviderManager::_provider_ctrl: " |
"UNLOAD_PROVIDER"); |
"UNLOAD_PROVIDER" |
|
<<PEGASUS_STD(endl)); |
|
break; | break; |
} | } |
| |
case LOOKUP_PROVIDER: | case LOOKUP_PROVIDER: |
{ | { |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
Tracer::LEVEL2, |
"LOOKUP_PROVIDER providerName = %s ", |
"_provider_ctrl::LOOKUP_PROVIDER"); |
(const char*)*(parms->providerName)->getCString())); |
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl: " |
|
"LOOKUP_PROVIDER " |
|
<<*(parms->providerName) |
|
<<PEGASUS_STD(endl)); |
|
| |
AutoMutex lock (_providerTableMutex); | AutoMutex lock (_providerTableMutex); |
| |
if (true == _providers.lookup(*(parms->providerName), | if (true == _providers.lookup(*(parms->providerName), |
*(reinterpret_cast<JMPIProvider * *>(ret)))) | *(reinterpret_cast<JMPIProvider * *>(ret)))) |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4, |
Tracer::LEVEL4, |
"Found JMPIProvider %s in JMPIProvider Manager Cache", |
"Found JMPIProvider in cache: " |
(const char*)*(parms->providerName)->getCString())); |
+ *(parms->providerName)); |
|
|
|
////////////////(*(reinterpret_cast<JMPIProvider * *>(ret)))->update_idle_timer(); |
|
} | } |
else | else |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4, |
Tracer::LEVEL4, |
"Could not find JMPIProvider %s in " |
"Could not find JMPIProvider in cache: " |
"JMPIProvider Manager Cache", |
+ *(parms->providerName)); |
(const char*)*(parms->providerName)->getCString())); |
ccode = -1; | ccode = -1; |
} | } |
| |
|
|
| |
case LOOKUP_MODULE: | case LOOKUP_MODULE: |
{ | { |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
Tracer::LEVEL2, |
"LOOKUP_MODULE moduleName = %s ", |
"_provider_ctrl::LOOKUP_MODULE"); |
(const char*)*(parms->fileName)->getCString())); |
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl: " |
|
"LOOKUP_MODULE " |
|
<<*(parms->fileName) |
|
<<PEGASUS_STD(endl)); |
|
| |
AutoMutex lock (_providerTableMutex); | AutoMutex lock (_providerTableMutex); |
| |
if (false == _modules.lookup(*(parms->fileName), | if (false == _modules.lookup(*(parms->fileName), |
*(reinterpret_cast<JMPIProviderModule * *>(ret)))) | *(reinterpret_cast<JMPIProviderModule * *>(ret)))) |
{ | { |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4, |
"Could not find JMPIProvider Module in cache: " + |
"Could not find JMPIProvider Module %s in " |
*(parms->fileName)); |
"JMPIProvider Manager Cache", |
|
(const char*)*(parms->fileName)->getCString())); |
ccode = -1; | ccode = -1; |
} | } |
| |
|
|
| |
case INSERT_PROVIDER: | case INSERT_PROVIDER: |
{ | { |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
Tracer::LEVEL2, |
"INSERT_PROVIDER providerName = %s ", |
"_provider_ctrl::INSERT_PROVIDER"); |
(const char*)*(parms->providerName)->getCString())); |
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl: " |
|
"INSERT_PROVIDER " |
|
<<*(parms->providerName) |
|
<<PEGASUS_STD(endl)); |
|
| |
AutoMutex lock (_providerTableMutex); | AutoMutex lock (_providerTableMutex); |
| |
if (false == _providers.insert(*(parms->providerName), | if (false == _providers.insert(*(parms->providerName), |
*reinterpret_cast<JMPIProvider * *>(parm))) | *reinterpret_cast<JMPIProvider * *>(parm))) |
|
{ |
|
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4, |
|
"Can not insert JMPIProvider %s into " |
|
"JMPIProvider Manager Cache", |
|
(const char*)*(parms->providerName)->getCString())); |
ccode = -1; | ccode = -1; |
|
} |
break; | break; |
} | } |
| |
case INSERT_MODULE: | case INSERT_MODULE: |
{ | { |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
Tracer::LEVEL2, |
"INSERT_MODULE moduleName = %s ", |
"_provider_ctrl::INSERT_MODULE"); |
(const char*)*(parms->fileName)->getCString())); |
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl: " |
|
"INSERT_MODULE " |
|
<<*(parms->fileName) |
|
<<PEGASUS_STD(endl)); |
|
| |
AutoMutex lock (_providerTableMutex); | AutoMutex lock (_providerTableMutex); |
| |
if(false == _modules.insert(*(parms->fileName), | if(false == _modules.insert(*(parms->fileName), |
*reinterpret_cast<JMPIProviderModule * *>(parm))) | *reinterpret_cast<JMPIProviderModule * *>(parm))) |
|
{ |
|
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4, |
|
"Can not insert JMPIProvider Module %s into " |
|
"JMPIProvider Manager Cache", |
|
(const char*)*(parms->fileName)->getCString())); |
ccode = -1; | ccode = -1; |
|
} |
break; | break; |
} | } |
| |
case REMOVE_PROVIDER: | case REMOVE_PROVIDER: |
{ | { |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
Tracer::LEVEL2, |
"REMOVE_PROVIDER providerName = %s ", |
"_provider_ctrl::REMOVE_PROVIDER"); |
(const char*)*(parms->providerName)->getCString())); |
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl: " |
|
"REMOVE_PROVIDER " |
|
<<*(parms->providerName) |
|
<<PEGASUS_STD(endl)); |
|
| |
AutoMutex lock (_providerTableMutex); | AutoMutex lock (_providerTableMutex); |
| |
if (false == _providers.remove(*(parms->providerName))) | if (false == _providers.remove(*(parms->providerName))) |
|
{ |
|
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4, |
|
"Can not remove JMPIProvider %s from " |
|
"JMPIProvider Manager Cache", |
|
(const char*)*(parms->providerName)->getCString())); |
ccode = -1; | ccode = -1; |
|
} |
|
|
break; | break; |
} | } |
| |
case REMOVE_MODULE: | case REMOVE_MODULE: |
{ | { |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER, |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
Tracer::LEVEL2, |
"REMOVE_MODULE moduleName = %s ", |
"_provider_ctrl::REMOVE_MODULE"); |
(const char*)*(parms->fileName)->getCString())); |
DDD(PEGASUS_STD(cout) |
|
<<"--- JMPILocalProviderManager::_provider_ctrl: REMOVE_MODULE " |
|
<<*(parms->fileName) |
|
<<PEGASUS_STD(endl)); |
|
| |
AutoMutex lock (_providerTableMutex); | AutoMutex lock (_providerTableMutex); |
| |
if (false == _modules.remove(*(parms->fileName))) | if (false == _modules.remove(*(parms->fileName))) |
|
{ |
|
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL4, |
|
"Can not remove JMPIProvider Module %s from " |
|
"JMPIProvider Manager Cache", |
|
(const char*)*(parms->fileName)->getCString())); |
ccode = -1; | ccode = -1; |
|
} |
break; | break; |
} | } |
| |
case UNLOAD_ALL_PROVIDERS: | case UNLOAD_ALL_PROVIDERS: |
{ | { |
DDD(PEGASUS_STD(cout) |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
<<"--- JMPILocalProviderManager::_provider_ctrl: " |
"UNLOAD_ALL_PROVIDERS"); |
"UNLOAD_ALL_PROVIDERS" |
|
<<PEGASUS_STD(endl)); |
|
|
|
JMPIjvm::destroyJVM(); | JMPIjvm::destroyJVM(); |
break; | break; |
} | } |
| |
case UNLOAD_IDLE_PROVIDERS: | case UNLOAD_IDLE_PROVIDERS: |
{ | { |
DDD(PEGASUS_STD(cout) |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
<<"--- JMPILocalProviderManager::_provider_ctrl: " |
"UNLOAD_IDLE_PROVIDERS"); |
"UNLOAD_IDLE_PROVIDERS" |
|
<<PEGASUS_STD(endl)); |
|
break; | break; |
} | } |
| |
case UNLOAD_IDLE_MODULES: | case UNLOAD_IDLE_MODULES: |
{ | { |
DDD(PEGASUS_STD(cout) |
PEG_TRACE_CSTRING(TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
<<"--- JMPILocalProviderManager::_provider_ctrl: " |
"UNLOAD_IDLE_MODULES"); |
"UNLOAD_IDLE_MODULES" |
|
<<PEGASUS_STD(endl)); |
|
break; | break; |
} | } |
| |
default: | default: |
{ | { |
DDD(PEGASUS_STD(cout) |
PEG_TRACE((TRC_PROVIDERMANAGER,Tracer::LEVEL2, |
<<"--- JMPILocalProviderManager::_provider_ctrl: unknown! " |
"Provider Control: Unknown function code %d.", |
<<code |
code)); |
<<PEGASUS_STD(endl)); |
|
ccode = -1; | ccode = -1; |
break; | break; |
} | } |
|
|
try { | try { |
ccode = _provider_ctrl( GET_PROVIDER, &strings, &ph ); | ccode = _provider_ctrl( GET_PROVIDER, &strings, &ph ); |
} | } |
catch (const Exception &e) { |
catch (const Exception &e) |
DDD(PEGASUS_STD(cout) |
{ |
<<"--- JMPILocalProviderManager::getProvider: loading proxy: " |
PEG_TRACE((TRC_DISCARDED_DATA,Tracer::LEVEL2, |
<<e.getMessage() |
"Can not get provider. Caught exception: %s", |
<<PEGASUS_STD(endl)); |
(const char*)e.getMessage().getCString())); |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
throw; | throw; |
} | } |
catch(...) { | catch(...) { |
DDD(PEGASUS_STD(cout) |
PEG_TRACE_CSTRING(TRC_DISCARDED_DATA,Tracer::LEVEL2, |
<<"--- JMPILocalProviderManager::getProvider: catch (...) " |
"Can not get provider. Caught unknown exception,"); |
<<PEGASUS_STD(endl)); |
|
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
throw; | throw; |
} | } |
|
|
| |
void JMPILocalProviderManager::shutdownAllProviders(void) | void JMPILocalProviderManager::shutdownAllProviders(void) |
{ | { |
PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "ProviderManager::shutdownAllProviders"); |
PEG_METHOD_ENTER( |
|
TRC_PROVIDERMANAGER, |
|
"ProviderManager::shutdownAllProviders"); |
_provider_ctrl(UNLOAD_ALL_PROVIDERS, (void *)this, (void *)0); | _provider_ctrl(UNLOAD_ALL_PROVIDERS, (void *)this, (void *)0); |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
} | } |
|
|
| |
Boolean JMPILocalProviderManager::hasActiveProviders() | Boolean JMPILocalProviderManager::hasActiveProviders() |
{ | { |
PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "ProviderManager::hasActiveProviders"); |
PEG_METHOD_ENTER( |
|
TRC_PROVIDERMANAGER, |
|
"ProviderManager::hasActiveProviders"); |
| |
AutoMutex lock (_providerTableMutex); | AutoMutex lock (_providerTableMutex); |
| |
|
|
{ | { |
AutoMutex lock (_providerTableMutex); | AutoMutex lock (_providerTableMutex); |
| |
PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
PEG_TRACE(( |
"Number of providers in _providers table = %d", _providers.size ())); |
TRC_PROVIDERMANAGER, |
|
Tracer::LEVEL4, |
|
"Number of providers in _providers table = %d", |
|
_providers.size ())); |
| |
// | // |
// Iterate through the _providers table | // Iterate through the _providers table |