version 1.23, 2005/04/19 11:11:14
|
version 1.24, 2005/04/29 18:45:50
|
|
|
#include <Pegasus/Common/OperationContextInternal.h> | #include <Pegasus/Common/OperationContextInternal.h> |
#include <Pegasus/Common/CIMMessage.h> | #include <Pegasus/Common/CIMMessage.h> |
#include <Pegasus/Common/Tracer.h> | #include <Pegasus/Common/Tracer.h> |
|
#include <Pegasus/Common/Logger.h> |
#include <Pegasus/Common/FileSystem.h> | #include <Pegasus/Common/FileSystem.h> |
#include <Pegasus/Config/ConfigManager.h> | #include <Pegasus/Config/ConfigManager.h> |
#include <Pegasus/ProviderManager2/OperationResponseHandler.h> | #include <Pegasus/ProviderManager2/OperationResponseHandler.h> |
|
|
_interfaceName = interfaceName; | _interfaceName = interfaceName; |
| |
_module = ProviderManagerModule(_physicalName); | _module = ProviderManagerModule(_physicalName); |
_module.load(); |
Boolean moduleLoaded = _module.load(); |
| |
|
if (moduleLoaded) |
|
{ |
_manager = _module.getProviderManager(_logicalName); | _manager = _module.getProviderManager(_logicalName); |
PEGASUS_ASSERT(_manager != 0); |
} |
|
else |
|
{ |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
|
"ProviderManagerModule load failed."); |
|
} |
|
|
|
if (_manager == 0) |
|
{ |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
|
"Failed to load ProviderManager \"" + _physicalName + "\"."); |
|
|
|
Logger::put_l( |
|
Logger::ERROR_LOG, System::CIMSERVER, Logger::SEVERE, |
|
"ProviderManager.BasicProviderManagerRouter." |
|
"PROVIDERMANAGER_LOAD_FAILED", |
|
"Failed to load the Provider Manager for interface type \"$0\"" |
|
" from library \"$1\".", |
|
_interfaceName, _physicalName); |
|
|
|
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, MessageLoaderParms( |
|
"ProviderManager.BasicProviderManagerRouter." |
|
"PROVIDERMANAGER_LOAD_FAILED", |
|
"Failed to load the Provider Manager for interface type \"$0\"" |
|
" from library \"$1\".", |
|
_interfaceName, _physicalName)); |
|
} |
| |
_manager->setIndicationCallback(indicationCallback); | _manager->setIndicationCallback(indicationCallback); |
| |
|
|
providerModule.findProperty("InterfaceType")).getValue(); | providerModule.findProperty("InterfaceType")).getValue(); |
itValue.get(interfaceType); | itValue.get(interfaceType); |
| |
|
ProviderManager* pm = 0; |
|
Boolean gotError = false; |
|
try |
|
{ |
// Look up the appropriate ProviderManager by InterfaceType | // Look up the appropriate ProviderManager by InterfaceType |
ProviderManager* pm = _lookupProviderManager(interfaceType); |
pm = _lookupProviderManager(interfaceType); |
if (remoteNameSpaceRequest && !pm->supportsRemoteNameSpaces()) { |
} |
|
catch (const CIMException& e) |
|
{ |
|
CIMResponseMessage* cimResponse = request->buildResponse(); |
|
cimResponse->cimException = e; |
|
response = cimResponse; |
|
gotError = true; |
|
} |
|
|
|
if (remoteNameSpaceRequest && !pm->supportsRemoteNameSpaces()) |
|
{ |
CIMResponseMessage* resp = request->buildResponse(); | CIMResponseMessage* resp = request->buildResponse(); |
resp->cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, | resp->cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, |
"Remote Namespace operations not supported for interface type "+interfaceType); |
"Remote Namespace operations not supported for interface type " |
|
+ interfaceType); |
response = resp; | response = resp; |
|
gotError = true; |
|
} |
|
|
|
if (!gotError) |
|
{ |
|
response = pm->processMessage(request); |
} | } |
else response = pm->processMessage(request); |
|
} | } |
| |
// preserve message key | // preserve message key |