version 1.5, 2004/06/04 02:23:58
|
version 1.8, 2004/06/22 07:22:20
|
|
|
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) |
{ | { |
|
|
dynamic_cast<CIMDisableModuleRequestMessage*>(request); | dynamic_cast<CIMDisableModuleRequestMessage*>(request); |
providerModule = dmReq->providerModule; | providerModule = dmReq->providerModule; |
} | } |
else if (request->getType() == CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE) |
else if ((request->getType() == CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE) || |
|
(request->getType() == CIM_NOTIFY_CONFIG_CHANGE_REQUEST_MESSAGE)) |
{ | { |
// This operation is not provider-specific | // This operation is not provider-specific |
} | } |
|
|
{ | { |
// Error: Unrecognized message type. | // Error: Unrecognized message type. |
PEGASUS_ASSERT(0); | PEGASUS_ASSERT(0); |
CIMResponseMessage* resp = new CIMResponseMessage( |
CIMResponseMessage* resp = request->buildResponse(); |
0, request->messageId, CIMException(), |
resp->cimException = PEGASUS_CIM_EXCEPTION(CIM_ERR_FAILED, |
request->queueIds.copyAndPop()); |
"Unknown message type."); |
resp->synch_response(request); |
|
OperationResponseHandler handler(request, resp); |
|
handler.setStatus(CIM_ERR_FAILED, "Unknown message type."); |
|
response = resp; | response = resp; |
} | } |
| |
|
|
} | } |
} | } |
| |
response = new CIMStopAllProvidersResponseMessage( |
response = request->buildResponse(); |
request->messageId, |
} |
CIMException(), |
else if(request->getType() == CIM_NOTIFY_CONFIG_CHANGE_REQUEST_MESSAGE) |
request->queueIds.copyAndPop()); |
{ |
|
// Do not need to forward this request to in-process provider |
|
// managers |
|
response = request->buildResponse(); |
} | } |
else | else |
{ | { |
|
|
| |
// 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 |