version 1.6, 2004/06/16 17:18:21
|
version 1.9, 2004/06/22 10:05:18
|
|
|
// Author: Chip Vincent (cvincent@us.ibm.com) | // Author: Chip Vincent (cvincent@us.ibm.com) |
// Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com) | // Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com) |
// | // |
// Modified By: |
// Modified By: Seema Gupta(gseema@in.ibm.com) for PEP135 |
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
#include "BasicProviderManagerRouter.h" | #include "BasicProviderManagerRouter.h" |
| |
#include <Pegasus/Common/Config.h> | #include <Pegasus/Common/Config.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/ProviderManager2/OperationResponseHandler.h> | #include <Pegasus/ProviderManager2/OperationResponseHandler.h> |
|
|
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
Message* response = 0; | Message* response = 0; |
|
Boolean remoteNameSpaceRequest=false; |
| |
// | // |
// Retrieve the ProviderManager routing information | // Retrieve the ProviderManager routing information |
|
|
ProviderIdContainer pidc = (ProviderIdContainer) | ProviderIdContainer pidc = (ProviderIdContainer) |
request->operationContext.get(ProviderIdContainer::NAME); | request->operationContext.get(ProviderIdContainer::NAME); |
providerModule = pidc.getModule(); | providerModule = pidc.getModule(); |
|
remoteNameSpaceRequest=pidc.isRemoteNameSpace(); |
} | } |
else if (dynamic_cast<CIMIndicationRequestMessage*>(request) != 0) | else if (dynamic_cast<CIMIndicationRequestMessage*>(request) != 0) |
{ | { |
// Provider information is in CIMIndicationRequestMessage | // Provider information is in CIMIndicationRequestMessage |
CIMIndicationRequestMessage* indReq = | CIMIndicationRequestMessage* indReq = |
dynamic_cast<CIMIndicationRequestMessage*>(request); | dynamic_cast<CIMIndicationRequestMessage*>(request); |
providerModule = indReq->providerModule; |
ProviderIdContainer pidc = indReq->operationContext.get(ProviderIdContainer::NAME); |
|
providerModule = pidc.getModule(); |
} | } |
else if (request->getType() == CIM_ENABLE_MODULE_REQUEST_MESSAGE) | else if (request->getType() == CIM_ENABLE_MODULE_REQUEST_MESSAGE) |
{ | { |
|
|
| |
// Look up the appropriate ProviderManager by InterfaceType | // Look up the appropriate ProviderManager by InterfaceType |
ProviderManager* pm = _lookupProviderManager(interfaceType); | ProviderManager* pm = _lookupProviderManager(interfaceType); |
response = pm->processMessage(request); |
if (remoteNameSpaceRequest && !pm->supportsRemoteNameSpaces()) { |
|
CIMResponseMessage* resp = request->buildResponse(); |
|
resp->cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, |
|
"Remote Namespace operations not supported for interface type "+interfaceType); |
|
response = resp; |
|
} |
|
else response = pm->processMessage(request); |
} | } |
| |
// preserve message key | // preserve message key |