version 1.2, 2006/09/01 17:51:30
|
version 1.3, 2006/09/05 17:37:12
|
|
|
#include <Pegasus/ProviderManager2/OperationResponseHandler.h> | #include <Pegasus/ProviderManager2/OperationResponseHandler.h> |
#include <Pegasus/ProviderManager2/AutoPThreadSecurity.h> | #include <Pegasus/ProviderManager2/AutoPThreadSecurity.h> |
| |
#define HandleCatch(handler) \ |
#define HANDLE_PROVIDER_EXCEPTION(providerCall, handler) \ |
|
try \ |
|
{ \ |
|
providerCall; \ |
|
} \ |
catch (CIMException& e) \ | catch (CIMException& e) \ |
{ \ | { \ |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ |
"Exception: " + e.getMessage()); \ |
"Provider Exception: " + e.getMessage()); \ |
handler.setStatus(e.getCode(), e.getContentLanguages(), e.getMessage()); \ |
handler.setStatus( \ |
|
e.getCode(), e.getContentLanguages(), e.getMessage()); \ |
} \ | } \ |
catch (Exception& e) \ | catch (Exception& e) \ |
{ \ | { \ |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ |
"Exception: " + e.getMessage()); \ |
"Provider Exception: " + e.getMessage()); \ |
handler.setStatus(CIM_ERR_FAILED, e.getContentLanguages(), e.getMessage());\ |
handler.setStatus( \ |
|
CIM_ERR_FAILED, e.getContentLanguages(), e.getMessage()); \ |
} \ | } \ |
catch (...) \ | catch (...) \ |
{ \ | { \ |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \ |
"Exception: Unknown"); \ |
"Provider Exception: Unknown"); \ |
handler.setStatus(CIM_ERR_FAILED, "Unknown error."); \ | handler.setStatus(CIM_ERR_FAILED, "Unknown error."); \ |
} | } |
| |
|
|
| |
CIMResponseMessage* response = 0; | CIMResponseMessage* response = 0; |
| |
|
try |
|
{ |
// pass the request message to a handler method based on message type | // pass the request message to a handler method based on message type |
switch(request->getType()) | switch(request->getType()) |
{ | { |
|
|
PEGASUS_ASSERT(0); | PEGASUS_ASSERT(0); |
break; | break; |
} | } |
|
} |
|
catch (CIMException& e) |
|
{ |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
|
"CIMException: " + e.getMessage()); |
|
response = request->buildResponse(); |
|
response->cimException = PEGASUS_CIM_EXCEPTION_LANG( |
|
e.getContentLanguages(), e.getCode(), e.getMessage()); |
|
} |
|
catch (Exception& e) |
|
{ |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
|
"Exception: " + e.getMessage()); |
|
response = request->buildResponse(); |
|
response->cimException = PEGASUS_CIM_EXCEPTION_LANG( |
|
e.getContentLanguages(), CIM_ERR_FAILED, e.getMessage()); |
|
} |
|
catch (...) |
|
{ |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2, |
|
"Exception: Unknown"); |
|
response = request->buildResponse(); |
|
response->cimException = PEGASUS_CIM_EXCEPTION( |
|
CIM_ERR_FAILED, "Unknown error."); |
|
} |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
| |
return response; | return response; |
} | } |
| |
|
OperationContext ProviderMessageHandler::_createProviderOperationContext( |
|
const OperationContext& context) |
|
{ |
|
OperationContext providerContext; |
|
|
|
providerContext.insert(context.get(IdentityContainer::NAME)); |
|
providerContext.insert(context.get(AcceptLanguageListContainer::NAME)); |
|
providerContext.insert(context.get(ContentLanguageListContainer::NAME)); |
|
|
|
return providerContext; |
|
} |
|
|
CIMResponseMessage* ProviderMessageHandler::_handleGetInstanceRequest( | CIMResponseMessage* ProviderMessageHandler::_handleGetInstanceRequest( |
CIMRequestMessage* message) | CIMRequestMessage* message) |
{ | { |
|
|
dynamic_cast<CIMGetInstanceRequestMessage*>(message); | dynamic_cast<CIMGetInstanceRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
CIMGetInstanceResponseMessage* response = |
AutoPtr<CIMGetInstanceResponseMessage> response( |
dynamic_cast<CIMGetInstanceResponseMessage*>( | dynamic_cast<CIMGetInstanceResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
// create a handler for this request | // create a handler for this request |
GetInstanceResponseHandler handler( | GetInstanceResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
|
|
try |
|
{ |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
|
Logger::TRACE, |
|
"ProviderMessageHandler::_handleGetInstanceRequest - " |
|
"Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->instanceName.getClassName().getString())); |
|
| |
// make target object path | // make target object path |
CIMObjectPath objectPath( | CIMObjectPath objectPath( |
|
|
request->instanceName.getClassName(), | request->instanceName.getClassName(), |
request->instanceName.getKeyBindings()); | request->instanceName.getKeyBindings()); |
| |
// convert arguments |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
OperationContext context; |
"ProviderMessageHandler::_handleGetInstanceRequest - " |
|
"Object path: $0", |
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
objectPath.toString())); |
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
|
|
// forward request |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.getInstance: " + _name); |
|
| |
AutoPThreadSecurity threadLevelSecurity(context); |
OperationContext providerContext( |
|
_createProviderOperationContext(request->operationContext)); |
| |
StatProviderTimeMeasurement providerTime(response); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.getInstance: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->getInstance( | provider->getInstance( |
context, |
providerContext, |
objectPath, | objectPath, |
request->includeQualifiers, | request->includeQualifiers, |
request->includeClassOrigin, | request->includeClassOrigin, |
request->propertyList, | request->propertyList, |
handler); |
handler), |
} |
handler) |
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return(response); |
return response.release(); |
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleEnumerateInstancesRequest( | CIMResponseMessage* ProviderMessageHandler::_handleEnumerateInstancesRequest( |
|
|
dynamic_cast<CIMEnumerateInstancesRequestMessage*>(message); | dynamic_cast<CIMEnumerateInstancesRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
CIMEnumerateInstancesResponseMessage* response = |
AutoPtr<CIMEnumerateInstancesResponseMessage> response( |
dynamic_cast<CIMEnumerateInstancesResponseMessage*>( | dynamic_cast<CIMEnumerateInstancesResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
// create a handler for this request | // create a handler for this request |
EnumerateInstancesResponseHandler handler( | EnumerateInstancesResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
|
|
try |
|
{ |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
|
Logger::TRACE, |
|
"ProviderMessageHandler::_handleEnumerateInstancesRequest - " |
|
"Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->className.getString())); |
|
| |
// make target object path | // make target object path |
CIMObjectPath objectPath( | CIMObjectPath objectPath( |
|
|
request->nameSpace, | request->nameSpace, |
request->className); | request->className); |
| |
// convert arguments |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
OperationContext context; |
"ProviderMessageHandler::_handleEnumerateInstancesRequest - " |
|
"Object path: $0", |
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
objectPath.toString())); |
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
|
|
// forward request |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.enumerateInstances: " + _name); |
|
| |
AutoPThreadSecurity threadLevelSecurity(context); |
OperationContext providerContext( |
|
_createProviderOperationContext(request->operationContext)); |
| |
StatProviderTimeMeasurement providerTime(response); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.enumerateInstances: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->enumerateInstances( | provider->enumerateInstances( |
context, |
providerContext, |
objectPath, | objectPath, |
request->includeQualifiers, | request->includeQualifiers, |
request->includeClassOrigin, | request->includeClassOrigin, |
request->propertyList, | request->propertyList, |
handler); |
handler), |
|
handler) |
} |
|
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
|
return response.release(); |
return(response); |
|
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleEnumerateInstanceNamesRequest( | CIMResponseMessage* ProviderMessageHandler::_handleEnumerateInstanceNamesRequest( |
|
|
dynamic_cast<CIMEnumerateInstanceNamesRequestMessage*>(message); | dynamic_cast<CIMEnumerateInstanceNamesRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
CIMEnumerateInstanceNamesResponseMessage* response = |
AutoPtr<CIMEnumerateInstanceNamesResponseMessage> response( |
dynamic_cast<CIMEnumerateInstanceNamesResponseMessage*>( | dynamic_cast<CIMEnumerateInstanceNamesResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
// create a handler for this request | // create a handler for this request |
EnumerateInstanceNamesResponseHandler handler( | EnumerateInstanceNamesResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
|
|
// process the request |
|
try |
|
{ |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
|
Logger::TRACE, |
|
"ProviderMessageHandler::_handleEnumerateInstanceNamesRequest - " |
|
"Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->className.getString())); |
|
| |
// make target object path | // make target object path |
CIMObjectPath objectPath( | CIMObjectPath objectPath( |
|
|
request->nameSpace, | request->nameSpace, |
request->className); | request->className); |
| |
// convert arguments |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
OperationContext context; |
"ProviderMessageHandler::_handleEnumerateInstanceNamesRequest - " |
|
"Object path: $0", |
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
objectPath.toString())); |
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
|
|
// forward request |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.enumerateInstanceNames: " + _name); |
|
| |
AutoPThreadSecurity threadLevelSecurity(context); |
OperationContext providerContext( |
|
_createProviderOperationContext(request->operationContext)); |
| |
StatProviderTimeMeasurement providerTime(response); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.enumerateInstanceNames: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->enumerateInstanceNames( | provider->enumerateInstanceNames( |
context, |
providerContext, |
objectPath, | objectPath, |
handler); |
handler), |
|
handler) |
} |
|
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
|
return response.release(); |
return(response); |
|
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleCreateInstanceRequest( | CIMResponseMessage* ProviderMessageHandler::_handleCreateInstanceRequest( |
|
|
dynamic_cast<CIMCreateInstanceRequestMessage*>(message); | dynamic_cast<CIMCreateInstanceRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
// create response message |
AutoPtr<CIMCreateInstanceResponseMessage> response( |
CIMCreateInstanceResponseMessage* response = |
|
dynamic_cast<CIMCreateInstanceResponseMessage*>( | dynamic_cast<CIMCreateInstanceResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
// create a handler for this request | // create a handler for this request |
CreateInstanceResponseHandler handler( | CreateInstanceResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
|
|
try |
|
{ |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
|
Logger::TRACE, |
|
"ProviderMessageHandler::_handleCreateInstanceRequest - " |
|
"Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->newInstance.getPath().getClassName().getString())); |
|
| |
// make target object path | // make target object path |
CIMObjectPath objectPath( | CIMObjectPath objectPath( |
|
|
request->newInstance.getPath().getClassName(), | request->newInstance.getPath().getClassName(), |
request->newInstance.getPath().getKeyBindings()); | request->newInstance.getPath().getKeyBindings()); |
| |
// convert arguments |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
OperationContext context; |
"ProviderMessageHandler::_handleCreateInstanceRequest - " |
|
"Object path: $0", |
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
objectPath.toString())); |
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
|
|
// forward request |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.createInstance: " + _name); |
|
| |
AutoPThreadSecurity threadLevelSecurity(context); |
OperationContext providerContext( |
|
_createProviderOperationContext(request->operationContext)); |
| |
StatProviderTimeMeasurement providerTime(response); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.createInstance: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->createInstance( | provider->createInstance( |
context, |
providerContext, |
objectPath, | objectPath, |
request->newInstance, | request->newInstance, |
handler); |
handler), |
|
handler) |
} |
|
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
|
return response.release(); |
return(response); |
|
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleModifyInstanceRequest( | CIMResponseMessage* ProviderMessageHandler::_handleModifyInstanceRequest( |
|
|
dynamic_cast<CIMModifyInstanceRequestMessage*>(message); | dynamic_cast<CIMModifyInstanceRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
// create response message |
AutoPtr<CIMModifyInstanceResponseMessage> response( |
CIMModifyInstanceResponseMessage* response = |
|
dynamic_cast<CIMModifyInstanceResponseMessage*>( | dynamic_cast<CIMModifyInstanceResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
// create a handler for this request | // create a handler for this request |
ModifyInstanceResponseHandler handler( | ModifyInstanceResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
|
|
try |
|
{ |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
|
Logger::TRACE, |
|
"ProviderMessageHandler::_handleModifyInstanceRequest - " |
|
"Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->modifiedInstance.getPath().getClassName().getString())); |
|
| |
// make target object path | // make target object path |
CIMObjectPath objectPath( | CIMObjectPath objectPath( |
|
|
request->modifiedInstance.getPath ().getClassName(), | request->modifiedInstance.getPath ().getClassName(), |
request->modifiedInstance.getPath ().getKeyBindings()); | request->modifiedInstance.getPath ().getKeyBindings()); |
| |
// convert arguments |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
OperationContext context; |
"ProviderMessageHandler::_handleModifyInstanceRequest - " |
|
"Object path: $0", |
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
objectPath.toString())); |
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
|
|
// forward request |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.modifyInstance: " + _name); |
|
| |
AutoPThreadSecurity threadLevelSecurity(context); |
OperationContext providerContext( |
|
_createProviderOperationContext(request->operationContext)); |
| |
StatProviderTimeMeasurement providerTime(response); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.modifyInstance: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->modifyInstance( | provider->modifyInstance( |
context, |
providerContext, |
objectPath, | objectPath, |
request->modifiedInstance, | request->modifiedInstance, |
request->includeQualifiers, | request->includeQualifiers, |
request->propertyList, | request->propertyList, |
handler); |
handler), |
|
handler) |
} |
|
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
|
return response.release(); |
return(response); |
|
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleDeleteInstanceRequest( | CIMResponseMessage* ProviderMessageHandler::_handleDeleteInstanceRequest( |
|
|
dynamic_cast<CIMDeleteInstanceRequestMessage*>(message); | dynamic_cast<CIMDeleteInstanceRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
// create response message |
AutoPtr<CIMDeleteInstanceResponseMessage> response( |
CIMDeleteInstanceResponseMessage* response = |
|
dynamic_cast<CIMDeleteInstanceResponseMessage*>( | dynamic_cast<CIMDeleteInstanceResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
// create a handler for this request | // create a handler for this request |
DeleteInstanceResponseHandler handler( | DeleteInstanceResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
|
|
try |
|
{ |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
|
Logger::TRACE, |
|
"ProviderMessageHandler::_handleDeleteInstanceRequest - " |
|
"Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->instanceName.getClassName().getString())); |
|
| |
// make target object path | // make target object path |
CIMObjectPath objectPath( | CIMObjectPath objectPath( |
|
|
request->instanceName.getClassName(), | request->instanceName.getClassName(), |
request->instanceName.getKeyBindings()); | request->instanceName.getKeyBindings()); |
| |
// convert arguments |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
OperationContext context; |
"ProviderMessageHandler::_handleDeleteInstanceRequest - " |
|
"Object path: $0", |
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
objectPath.toString())); |
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
|
|
// forward request |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.deleteInstance: " + _name); |
|
| |
AutoPThreadSecurity threadLevelSecurity(context); |
OperationContext providerContext( |
|
_createProviderOperationContext(request->operationContext)); |
| |
StatProviderTimeMeasurement providerTime(response); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.deleteInstance: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->deleteInstance( | provider->deleteInstance( |
context, |
providerContext, |
objectPath, | objectPath, |
handler); |
handler), |
|
handler) |
} |
|
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
|
return response.release(); |
return(response); |
|
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleExecQueryRequest( | CIMResponseMessage* ProviderMessageHandler::_handleExecQueryRequest( |
|
|
dynamic_cast<CIMExecQueryRequestMessage*>(message); | dynamic_cast<CIMExecQueryRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
CIMExecQueryResponseMessage* response = |
AutoPtr<CIMExecQueryResponseMessage> response( |
dynamic_cast<CIMExecQueryResponseMessage*>( | dynamic_cast<CIMExecQueryResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
// create a handler for this request | // create a handler for this request |
ExecQueryResponseHandler handler( | ExecQueryResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
|
|
try |
|
{ |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
|
Logger::TRACE, |
|
"ProviderMessageHandler::_handleExecQueryRequest - " |
|
"Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->className.getString())); |
|
| |
// make target object path | // make target object path |
CIMObjectPath objectPath( | CIMObjectPath objectPath( |
|
|
request->nameSpace, | request->nameSpace, |
request->className); | request->className); |
| |
// convert arguments |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
OperationContext context; |
"ProviderMessageHandler::_handleExecQueryRequest - " |
|
"Object path: $0", |
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
objectPath.toString())); |
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
| |
QueryExpression qx(request->queryLanguage,request->query); | QueryExpression qx(request->queryLanguage,request->query); |
| |
// forward request |
OperationContext providerContext( |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
_createProviderOperationContext(request->operationContext)); |
"Calling provider.execQuery: " + _name); |
|
|
|
AutoPThreadSecurity threadLevelSecurity(context); |
|
| |
StatProviderTimeMeasurement providerTime(response); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
| |
CIMInstanceQueryProvider* provider = | CIMInstanceQueryProvider* provider = |
getProviderInterface<CIMInstanceQueryProvider>(_provider); | getProviderInterface<CIMInstanceQueryProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.execQuery: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->execQuery( | provider->execQuery( |
context, |
providerContext, |
objectPath, | objectPath, |
qx, | qx, |
handler); |
handler), |
|
handler) |
} |
|
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
|
return response.release(); |
return(response); |
|
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleAssociatorsRequest( | CIMResponseMessage* ProviderMessageHandler::_handleAssociatorsRequest( |
|
|
dynamic_cast<CIMAssociatorsRequestMessage*>(message); | dynamic_cast<CIMAssociatorsRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
CIMAssociatorsResponseMessage* response = |
AutoPtr<CIMAssociatorsResponseMessage> response( |
dynamic_cast<CIMAssociatorsResponseMessage*>( | dynamic_cast<CIMAssociatorsResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
// create a handler for this request | // create a handler for this request |
AssociatorsResponseHandler handler( | AssociatorsResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
|
|
// process the request |
|
try |
|
{ |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
|
Logger::TRACE, |
|
"ProviderMessageHandler::_handleAssociatorsRequest - " |
|
"Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->objectName.getClassName().getString())); |
|
| |
// make target object path | // make target object path |
CIMObjectPath objectPath( | CIMObjectPath objectPath( |
|
|
| |
objectPath.setKeyBindings(request->objectName.getKeyBindings()); | objectPath.setKeyBindings(request->objectName.getKeyBindings()); |
| |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
"ProviderMessageHandler::_handleAssociatorsRequest - " |
|
"Object path: $0", |
|
objectPath.toString())); |
|
|
CIMObjectPath assocPath( | CIMObjectPath assocPath( |
System::getHostName(), | System::getHostName(), |
request->nameSpace, | request->nameSpace, |
request->assocClass.getString()); | request->assocClass.getString()); |
| |
// convert arguments |
OperationContext providerContext( |
OperationContext context; |
_createProviderOperationContext(request->operationContext)); |
| |
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
|
|
AutoPThreadSecurity threadLevelSecurity(context); |
|
|
|
StatProviderTimeMeasurement providerTime(response); |
|
| |
CIMAssociationProvider* provider = | CIMAssociationProvider* provider = |
getProviderInterface<CIMAssociationProvider>(_provider); | getProviderInterface<CIMAssociationProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.associators: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->associators( | provider->associators( |
context, |
providerContext, |
objectPath, | objectPath, |
request->assocClass, | request->assocClass, |
request->resultClass, | request->resultClass, |
|
|
request->includeQualifiers, | request->includeQualifiers, |
request->includeClassOrigin, | request->includeClassOrigin, |
request->propertyList, | request->propertyList, |
handler); |
handler), |
|
handler) |
} |
|
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
|
return response.release(); |
return(response); |
|
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleAssociatorNamesRequest( | CIMResponseMessage* ProviderMessageHandler::_handleAssociatorNamesRequest( |
|
|
dynamic_cast<CIMAssociatorNamesRequestMessage*>(message); | dynamic_cast<CIMAssociatorNamesRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
CIMAssociatorNamesResponseMessage* response = |
AutoPtr<CIMAssociatorNamesResponseMessage> response( |
dynamic_cast<CIMAssociatorNamesResponseMessage*>( | dynamic_cast<CIMAssociatorNamesResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
// create a handler for this request | // create a handler for this request |
AssociatorNamesResponseHandler handler( | AssociatorNamesResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
|
|
// process the request |
|
try |
|
{ |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
|
Logger::TRACE, |
|
"ProviderMessageHandler::_handleAssociationNamesRequest - " |
|
"Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->objectName.getClassName().getString())); |
|
| |
// make target object path | // make target object path |
CIMObjectPath objectPath( | CIMObjectPath objectPath( |
|
|
| |
objectPath.setKeyBindings(request->objectName.getKeyBindings()); | objectPath.setKeyBindings(request->objectName.getKeyBindings()); |
| |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
"ProviderMessageHandler::_handleAssociationNamesRequest - " |
|
"Object path: $0", |
|
objectPath.toString())); |
|
|
CIMObjectPath assocPath( | CIMObjectPath assocPath( |
System::getHostName(), | System::getHostName(), |
request->nameSpace, | request->nameSpace, |
request->assocClass.getString()); | request->assocClass.getString()); |
| |
// convert arguments |
OperationContext providerContext( |
OperationContext context; |
_createProviderOperationContext(request->operationContext)); |
|
|
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
|
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
|
|
AutoPThreadSecurity threadLevelSecurity(context); |
|
| |
StatProviderTimeMeasurement providerTime(response); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
| |
CIMAssociationProvider* provider = | CIMAssociationProvider* provider = |
getProviderInterface<CIMAssociationProvider>(_provider); | getProviderInterface<CIMAssociationProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.associatorNames: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->associatorNames( | provider->associatorNames( |
context, |
providerContext, |
objectPath, | objectPath, |
request->assocClass, | request->assocClass, |
request->resultClass, | request->resultClass, |
request->role, | request->role, |
request->resultRole, | request->resultRole, |
handler); |
handler), |
|
handler) |
} |
|
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
|
return response.release(); |
return(response); |
|
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleReferencesRequest( | CIMResponseMessage* ProviderMessageHandler::_handleReferencesRequest( |
|
|
dynamic_cast<CIMReferencesRequestMessage*>(message); | dynamic_cast<CIMReferencesRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
CIMReferencesResponseMessage* response = |
AutoPtr<CIMReferencesResponseMessage> response( |
dynamic_cast<CIMReferencesResponseMessage*>( | dynamic_cast<CIMReferencesResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
// create a handler for this request | // create a handler for this request |
ReferencesResponseHandler handler( | ReferencesResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
|
|
// process the request |
|
try |
|
{ |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
|
Logger::TRACE, |
|
"ProviderMessageHandler::_handleReferencesRequest - " |
|
"Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->objectName.getClassName().getString())); |
|
| |
// make target object path | // make target object path |
CIMObjectPath objectPath( | CIMObjectPath objectPath( |
|
|
| |
objectPath.setKeyBindings(request->objectName.getKeyBindings()); | objectPath.setKeyBindings(request->objectName.getKeyBindings()); |
| |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
"ProviderMessageHandler::_handleReferencesRequest - " |
|
"Object path: $0", |
|
objectPath.toString())); |
|
|
CIMObjectPath resultPath( | CIMObjectPath resultPath( |
System::getHostName(), | System::getHostName(), |
request->nameSpace, | request->nameSpace, |
request->resultClass.getString()); | request->resultClass.getString()); |
| |
// convert arguments |
OperationContext providerContext( |
OperationContext context; |
_createProviderOperationContext(request->operationContext)); |
| |
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
CIMAssociationProvider* provider = |
|
getProviderInterface<CIMAssociationProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
"Calling provider.references: " + _name); | "Calling provider.references: " + _name); |
| |
AutoPThreadSecurity threadLevelSecurity(context); |
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
StatProviderTimeMeasurement providerTime(response); |
|
|
|
CIMAssociationProvider* provider = |
|
getProviderInterface<CIMAssociationProvider>(_provider); |
|
| |
|
HANDLE_PROVIDER_EXCEPTION( |
provider->references( | provider->references( |
context, |
providerContext, |
objectPath, | objectPath, |
request->resultClass, | request->resultClass, |
request->role, | request->role, |
request->includeQualifiers, | request->includeQualifiers, |
request->includeClassOrigin, | request->includeClassOrigin, |
request->propertyList, | request->propertyList, |
handler); |
handler), |
|
handler) |
} |
|
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
|
return response.release(); |
return(response); |
|
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleReferenceNamesRequest( | CIMResponseMessage* ProviderMessageHandler::_handleReferenceNamesRequest( |
|
|
dynamic_cast<CIMReferenceNamesRequestMessage*>(message); | dynamic_cast<CIMReferenceNamesRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
CIMReferenceNamesResponseMessage* response = |
AutoPtr<CIMReferenceNamesResponseMessage> response( |
dynamic_cast<CIMReferenceNamesResponseMessage*>( | dynamic_cast<CIMReferenceNamesResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
// create a handler for this request | // create a handler for this request |
ReferenceNamesResponseHandler handler( | ReferenceNamesResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
|
|
// process the request |
|
try |
|
{ |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
|
Logger::TRACE, |
|
"ProviderMessageHandler::_handleReferenceNamesRequest - " |
|
"Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->objectName.getClassName().getString())); |
|
| |
// make target object path | // make target object path |
CIMObjectPath objectPath( | CIMObjectPath objectPath( |
|
|
| |
objectPath.setKeyBindings(request->objectName.getKeyBindings()); | objectPath.setKeyBindings(request->objectName.getKeyBindings()); |
| |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
"ProviderMessageHandler::_handleReferenceNamesRequest - " |
|
"Object path: $0", |
|
objectPath.toString())); |
|
|
CIMObjectPath resultPath( | CIMObjectPath resultPath( |
System::getHostName(), | System::getHostName(), |
request->nameSpace, | request->nameSpace, |
request->resultClass.getString()); | request->resultClass.getString()); |
| |
// convert arguments |
OperationContext providerContext( |
OperationContext context; |
_createProviderOperationContext(request->operationContext)); |
| |
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
CIMAssociationProvider* provider = |
|
getProviderInterface<CIMAssociationProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
"Calling provider.referenceNames: " + _name); | "Calling provider.referenceNames: " + _name); |
| |
AutoPThreadSecurity threadLevelSecurity(context); |
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
StatProviderTimeMeasurement providerTime(response); |
|
|
|
CIMAssociationProvider* provider = |
|
getProviderInterface<CIMAssociationProvider>(_provider); |
|
| |
|
HANDLE_PROVIDER_EXCEPTION( |
provider->referenceNames( | provider->referenceNames( |
context, |
providerContext, |
objectPath, | objectPath, |
request->resultClass, | request->resultClass, |
request->role, | request->role, |
handler); |
handler), |
|
handler) |
} |
|
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
|
return response.release(); |
return(response); |
|
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleGetPropertyRequest( | CIMResponseMessage* ProviderMessageHandler::_handleGetPropertyRequest( |
|
|
dynamic_cast<CIMGetPropertyRequestMessage*>(message); | dynamic_cast<CIMGetPropertyRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
CIMGetPropertyResponseMessage* response = |
AutoPtr<CIMGetPropertyResponseMessage> response( |
dynamic_cast<CIMGetPropertyResponseMessage*>( | dynamic_cast<CIMGetPropertyResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
// create a handler for this request |
// |
SimpleInstanceResponseHandler handler; |
// Translate the GetProperty request to a GetInstance request message |
|
// |
| |
try |
Array<CIMName> propertyList; |
{ |
propertyList.append(request->propertyName); |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
|
Logger::TRACE, |
|
"ProviderMessageHandler::_handleGetPropertyRequest - " |
|
"Host name: $0 Name space: $1 Class name: $2 Property: $3", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->instanceName.getClassName().getString(), |
|
request->propertyName.getString())); |
|
| |
// make target object path |
CIMGetInstanceRequestMessage getInstanceRequest( |
CIMObjectPath objectPath( |
request->messageId, |
System::getHostName(), |
|
request->nameSpace, | request->nameSpace, |
request->instanceName.getClassName(), |
request->instanceName, |
request->instanceName.getKeyBindings()); |
false, // localOnly |
|
false, // includeQualifiers |
|
false, // includeClassOrigin |
|
propertyList, |
|
request->queueIds); |
| |
Array<CIMName> propertyList; |
getInstanceRequest.operationContext = request->operationContext; |
propertyList.append(request->propertyName); |
|
| |
// convert arguments |
AutoPtr<CIMGetInstanceResponseMessage> getInstanceResponse( |
OperationContext context; |
dynamic_cast<CIMGetInstanceResponseMessage*>( |
|
getInstanceRequest.buildResponse())); |
|
PEGASUS_ASSERT(getInstanceResponse.get() != 0); |
| |
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
// |
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
// Process the GetInstance operation |
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
// |
| |
// forward request |
// create a handler for this request (with chunking disabled) |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
GetInstanceResponseHandler handler( |
"Calling provider.getInstance: " + _name); |
&getInstanceRequest, getInstanceResponse.get(), 0); |
|
|
|
// make target object path |
|
CIMObjectPath objectPath( |
|
System::getHostName(), |
|
getInstanceRequest.nameSpace, |
|
getInstanceRequest.instanceName.getClassName(), |
|
getInstanceRequest.instanceName.getKeyBindings()); |
|
|
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
"ProviderMessageHandler::_handleGetPropertyRequest - " |
|
"Object path: $0, Property: $1", |
|
objectPath.toString(), request->propertyName.getString())); |
| |
AutoPThreadSecurity threadLevelSecurity(context); |
OperationContext providerContext( |
|
_createProviderOperationContext(getInstanceRequest.operationContext)); |
| |
StatProviderTimeMeasurement providerTime(response); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.getInstance: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->getInstance( | provider->getInstance( |
context, |
providerContext, |
objectPath, | objectPath, |
false, // includeQualifiers |
getInstanceRequest.includeQualifiers, |
false, // includeClassOrigin |
getInstanceRequest.includeClassOrigin, |
propertyList, |
getInstanceRequest.propertyList, |
handler); |
handler), |
|
handler) |
|
|
|
// |
|
// Copy the GetInstance response into the GetProperty response message |
|
// |
| |
if (handler.getObjects().size()) |
response->cimException = getInstanceResponse->cimException; |
|
|
|
if (response->cimException.getCode() == CIM_ERR_SUCCESS) |
{ | { |
CIMInstance instance = handler.getObjects()[0]; |
CIMInstance instance = getInstanceResponse->cimInstance; |
| |
Uint32 pos = instance.findProperty(request->propertyName); | Uint32 pos = instance.findProperty(request->propertyName); |
| |
|
|
} | } |
} | } |
| |
response->operationContext.set( |
response->operationContext = getInstanceResponse->operationContext; |
ContentLanguageListContainer(handler.getLanguages())); |
|
} |
|
catch (CIMException& e) |
|
{ |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Exception: " + e.getMessage()); |
|
response->cimException = PEGASUS_CIM_EXCEPTION_LANG( |
|
e.getContentLanguages(), e.getCode(), e.getMessage()); |
|
} |
|
catch (Exception& e) |
|
{ |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Exception: " + e.getMessage()); |
|
response->cimException = PEGASUS_CIM_EXCEPTION_LANG( |
|
e.getContentLanguages(), CIM_ERR_FAILED, e.getMessage()); |
|
} |
|
catch (...) |
|
{ |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Exception: Unknown"); |
|
response->cimException = PEGASUS_CIM_EXCEPTION( |
|
CIM_ERR_FAILED, "Unknown error."); |
|
} |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return(response); |
return response.release(); |
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleSetPropertyRequest( | CIMResponseMessage* ProviderMessageHandler::_handleSetPropertyRequest( |
|
|
dynamic_cast<CIMSetPropertyRequestMessage*>(message); | dynamic_cast<CIMSetPropertyRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
CIMSetPropertyResponseMessage* response = |
AutoPtr<CIMSetPropertyResponseMessage> response( |
dynamic_cast<CIMSetPropertyResponseMessage*>( | dynamic_cast<CIMSetPropertyResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
|
|
// create a handler for this request |
|
SimpleInstanceResponseHandler handler; |
|
| |
try |
// |
{ |
// Translate the SetProperty request to a ModifyInstance request message |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
// |
Logger::TRACE, |
|
"ProviderMessageHandler::_handleSetPropertyRequest - " |
|
"Host name: $0 Name space: $1 Class name: $2 Property: $3", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->instanceName.getClassName().getString(), |
|
request->propertyName.getString())); |
|
| |
// make target object path | // make target object path |
CIMObjectPath objectPath( | CIMObjectPath objectPath( |
|
|
CIMInstance instance(request->instanceName.getClassName()); | CIMInstance instance(request->instanceName.getClassName()); |
instance.addProperty(CIMProperty( | instance.addProperty(CIMProperty( |
request->propertyName, request->newValue)); | request->propertyName, request->newValue)); |
|
instance.setPath(objectPath); |
| |
Array<CIMName> propertyList; | Array<CIMName> propertyList; |
propertyList.append(request->propertyName); | propertyList.append(request->propertyName); |
| |
// convert arguments |
CIMModifyInstanceRequestMessage modifyInstanceRequest( |
OperationContext context; |
request->messageId, |
|
request->nameSpace, |
|
instance, |
|
false, // includeQualifiers |
|
propertyList, |
|
request->queueIds); |
| |
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
modifyInstanceRequest.operationContext = request->operationContext; |
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
| |
// forward request |
AutoPtr<CIMModifyInstanceResponseMessage> modifyInstanceResponse( |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
dynamic_cast<CIMModifyInstanceResponseMessage*>( |
"Calling provider.modifyInstance: " + _name); |
modifyInstanceRequest.buildResponse())); |
|
PEGASUS_ASSERT(modifyInstanceResponse.get() != 0); |
| |
AutoPThreadSecurity threadLevelSecurity(context); |
// |
|
// Process the ModifyInstance operation |
|
// |
|
|
|
// create a handler for this request (with chunking disabled) |
|
ModifyInstanceResponseHandler handler( |
|
&modifyInstanceRequest, modifyInstanceResponse.get(), 0); |
| |
StatProviderTimeMeasurement providerTime(response); |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
|
"ProviderMessageHandler::_handleSetPropertyRequest - " |
|
"Object path: $0, Property: $1", |
|
objectPath.toString(), request->propertyName.getString())); |
|
|
|
OperationContext providerContext( |
|
_createProviderOperationContext(request->operationContext)); |
|
|
|
AutoPThreadSecurity threadLevelSecurity(providerContext); |
| |
CIMInstanceProvider* provider = | CIMInstanceProvider* provider = |
getProviderInterface<CIMInstanceProvider>(_provider); | getProviderInterface<CIMInstanceProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.modifyInstance: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->modifyInstance( | provider->modifyInstance( |
context, |
providerContext, |
objectPath, | objectPath, |
instance, |
modifyInstanceRequest.modifiedInstance, |
false, // includeQualifiers |
modifyInstanceRequest.includeQualifiers, |
propertyList, |
modifyInstanceRequest.propertyList, |
handler); |
handler), |
|
handler) |
| |
response->operationContext.set( |
// |
ContentLanguageListContainer(handler.getLanguages())); |
// Copy the ModifyInstance response into the GetProperty response message |
} |
// |
catch (CIMException& e) |
|
{ |
response->cimException = modifyInstanceResponse->cimException; |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
response->operationContext = modifyInstanceResponse->operationContext; |
"Exception: " + e.getMessage()); |
|
response->cimException = PEGASUS_CIM_EXCEPTION_LANG( |
|
e.getContentLanguages(), e.getCode(), e.getMessage()); |
|
} |
|
catch (Exception& e) |
|
{ |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Exception: " + e.getMessage()); |
|
response->cimException = PEGASUS_CIM_EXCEPTION_LANG( |
|
e.getContentLanguages(), CIM_ERR_FAILED, e.getMessage()); |
|
} |
|
catch (...) |
|
{ |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Exception: Unknown"); |
|
response->cimException = PEGASUS_CIM_EXCEPTION( |
|
CIM_ERR_FAILED, "Unknown error."); |
|
} |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return(response); |
return response.release(); |
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleInvokeMethodRequest( | CIMResponseMessage* ProviderMessageHandler::_handleInvokeMethodRequest( |
|
|
dynamic_cast<CIMInvokeMethodRequestMessage*>(message); | dynamic_cast<CIMInvokeMethodRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
// create response message |
AutoPtr<CIMInvokeMethodResponseMessage> response( |
CIMInvokeMethodResponseMessage* response = |
|
dynamic_cast<CIMInvokeMethodResponseMessage*>( | dynamic_cast<CIMInvokeMethodResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
// create a handler for this request | // create a handler for this request |
InvokeMethodResponseHandler handler( | InvokeMethodResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
|
|
try |
|
{ |
|
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, |
|
Logger::TRACE, |
|
"ProviderMessageHandler::_handleInvokeMethodRequest - " |
|
"Host name: $0 Name space: $1 Class name: $2", |
|
System::getHostName(), |
|
request->nameSpace.getString(), |
|
request->instanceName.getClassName().getString())); |
|
| |
// make target object path | // make target object path |
CIMObjectPath objectPath( | CIMObjectPath objectPath( |
|
|
request->instanceName.getClassName(), | request->instanceName.getClassName(), |
request->instanceName.getKeyBindings()); | request->instanceName.getKeyBindings()); |
| |
// convert arguments |
PEG_LOGGER_TRACE((Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE, |
OperationContext context; |
"ProviderMessageHandler::_handleInvokeMethodRequest - " |
|
"Object path: $0, Method: $1", |
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
objectPath.toString(), request->methodName.getString())); |
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
| |
CIMObjectPath instanceReference(request->instanceName); | CIMObjectPath instanceReference(request->instanceName); |
instanceReference.setNameSpace(request->nameSpace); | instanceReference.setNameSpace(request->nameSpace); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
OperationContext providerContext( |
"Calling provider.invokeMethod: " + _name); |
_createProviderOperationContext(request->operationContext)); |
| |
AutoPThreadSecurity threadLevelSecurity(context); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
|
|
StatProviderTimeMeasurement providerTime(response); |
|
| |
CIMMethodProvider* provider = | CIMMethodProvider* provider = |
getProviderInterface<CIMMethodProvider>(_provider); | getProviderInterface<CIMMethodProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.invokeMethod: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->invokeMethod( | provider->invokeMethod( |
context, |
providerContext, |
instanceReference, | instanceReference, |
request->methodName, | request->methodName, |
request->inParameters, | request->inParameters, |
handler); |
handler), |
|
handler) |
} |
|
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
|
return response.release(); |
return(response); |
|
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleCreateSubscriptionRequest( | CIMResponseMessage* ProviderMessageHandler::_handleCreateSubscriptionRequest( |
|
|
dynamic_cast<CIMCreateSubscriptionRequestMessage*>(message); | dynamic_cast<CIMCreateSubscriptionRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
CIMCreateSubscriptionResponseMessage* response = |
AutoPtr<CIMCreateSubscriptionResponseMessage> response( |
dynamic_cast<CIMCreateSubscriptionResponseMessage*>( | dynamic_cast<CIMCreateSubscriptionResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
OperationResponseHandler handler( | OperationResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
| |
try |
|
{ |
|
String temp; | String temp; |
| |
for (Uint32 i = 0, n = request->classNames.size(); i < n; i++) | for (Uint32 i = 0, n = request->classNames.size(); i < n; i++) |
|
|
status.setProviderInstance(pidc.getProvider()); | status.setProviderInstance(pidc.getProvider()); |
| |
// convert arguments | // convert arguments |
OperationContext context; |
|
|
|
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
|
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(SubscriptionInstanceContainer::NAME)); |
|
context.insert(request->operationContext.get(SubscriptionFilterConditionContainer::NAME)); |
|
context.insert(request->operationContext.get(SubscriptionFilterQueryContainer::NAME)); |
|
| |
Array<CIMObjectPath> classNames; | Array<CIMObjectPath> classNames; |
| |
|
|
classNames.append(className); | classNames.append(className); |
} | } |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
OperationContext providerContext( |
"Calling provider.createSubscription: " + _name); |
_createProviderOperationContext(request->operationContext)); |
|
providerContext.insert(request->operationContext.get( |
|
SubscriptionInstanceContainer::NAME)); |
|
providerContext.insert(request->operationContext.get( |
|
SubscriptionFilterConditionContainer::NAME)); |
|
providerContext.insert(request->operationContext.get( |
|
SubscriptionFilterQueryContainer::NAME)); |
| |
AutoPThreadSecurity threadLevelSecurity(context); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
| |
CIMIndicationProvider* provider = | CIMIndicationProvider* provider = |
getProviderInterface<CIMIndicationProvider>(_provider); | getProviderInterface<CIMIndicationProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.createSubscription: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->createSubscription( | provider->createSubscription( |
context, |
providerContext, |
request->subscriptionInstance.getPath(), | request->subscriptionInstance.getPath(), |
classNames, | classNames, |
request->propertyList, | request->propertyList, |
request->repeatNotificationPolicy); |
request->repeatNotificationPolicy), |
|
handler) |
| |
// | // |
// Increment count of current subscriptions for this provider | // Increment count of current subscriptions for this provider |
|
|
_enableIndications(); | _enableIndications(); |
} | } |
} | } |
} |
|
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return(response); |
return response.release(); |
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleModifySubscriptionRequest( | CIMResponseMessage* ProviderMessageHandler::_handleModifySubscriptionRequest( |
|
|
dynamic_cast<CIMModifySubscriptionRequestMessage*>(message); | dynamic_cast<CIMModifySubscriptionRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
CIMModifySubscriptionResponseMessage* response = |
AutoPtr<CIMModifySubscriptionResponseMessage> response( |
dynamic_cast<CIMModifySubscriptionResponseMessage*>( | dynamic_cast<CIMModifySubscriptionResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
OperationResponseHandler handler( | OperationResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
| |
try |
|
{ |
|
String temp; | String temp; |
| |
for (Uint32 i = 0, n = request->classNames.size(); i < n; i++) | for (Uint32 i = 0, n = request->classNames.size(); i < n; i++) |
|
|
temp)); | temp)); |
| |
// convert arguments | // convert arguments |
OperationContext context; |
|
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
|
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(SubscriptionInstanceContainer::NAME)); |
|
context.insert(request->operationContext.get(SubscriptionFilterConditionContainer::NAME)); |
|
context.insert(request->operationContext.get(SubscriptionFilterQueryContainer::NAME)); |
|
| |
Array<CIMObjectPath> classNames; | Array<CIMObjectPath> classNames; |
| |
|
|
classNames.append(className); | classNames.append(className); |
} | } |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
OperationContext providerContext( |
"Calling provider.modifySubscription: " + _name); |
_createProviderOperationContext(request->operationContext)); |
|
providerContext.insert(request->operationContext.get( |
|
SubscriptionInstanceContainer::NAME)); |
|
providerContext.insert(request->operationContext.get( |
|
SubscriptionFilterConditionContainer::NAME)); |
|
providerContext.insert(request->operationContext.get( |
|
SubscriptionFilterQueryContainer::NAME)); |
| |
AutoPThreadSecurity threadLevelSecurity(context); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
| |
CIMIndicationProvider* provider = | CIMIndicationProvider* provider = |
getProviderInterface<CIMIndicationProvider>(_provider); | getProviderInterface<CIMIndicationProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.modifySubscription: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->modifySubscription( | provider->modifySubscription( |
context, |
providerContext, |
request->subscriptionInstance.getPath(), | request->subscriptionInstance.getPath(), |
classNames, | classNames, |
request->propertyList, | request->propertyList, |
request->repeatNotificationPolicy); |
request->repeatNotificationPolicy), |
|
handler) |
} |
|
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return(response); |
return response.release(); |
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleDeleteSubscriptionRequest( | CIMResponseMessage* ProviderMessageHandler::_handleDeleteSubscriptionRequest( |
|
|
dynamic_cast<CIMDeleteSubscriptionRequestMessage*>(message); | dynamic_cast<CIMDeleteSubscriptionRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
CIMDeleteSubscriptionResponseMessage* response = |
AutoPtr<CIMDeleteSubscriptionResponseMessage> response( |
dynamic_cast<CIMDeleteSubscriptionResponseMessage*>( | dynamic_cast<CIMDeleteSubscriptionResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
OperationResponseHandler handler( | OperationResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
| |
try |
|
{ |
|
String temp; | String temp; |
| |
for (Uint32 i = 0, n = request->classNames.size(); i < n; i++) | for (Uint32 i = 0, n = request->classNames.size(); i < n; i++) |
|
|
request->nameSpace.getString(), | request->nameSpace.getString(), |
temp)); | temp)); |
| |
// convert arguments |
|
OperationContext context; |
|
|
|
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
|
context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
context.insert(request->operationContext.get(SubscriptionInstanceContainer::NAME)); |
|
|
|
Array<CIMObjectPath> classNames; | Array<CIMObjectPath> classNames; |
| |
for (Uint32 i = 0, n = request->classNames.size(); i < n; i++) | for (Uint32 i = 0, n = request->classNames.size(); i < n; i++) |
|
|
classNames.append(className); | classNames.append(className); |
} | } |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
OperationContext providerContext( |
"Calling provider.deleteSubscription: " + _name); |
_createProviderOperationContext(request->operationContext)); |
|
providerContext.insert(request->operationContext.get( |
|
SubscriptionInstanceContainer::NAME)); |
| |
AutoPThreadSecurity threadLevelSecurity(context); |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
| |
CIMIndicationProvider* provider = | CIMIndicationProvider* provider = |
getProviderInterface<CIMIndicationProvider>(_provider); | getProviderInterface<CIMIndicationProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.deleteSubscription: " + _name); |
|
|
|
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
|
HANDLE_PROVIDER_EXCEPTION( |
provider->deleteSubscription( | provider->deleteSubscription( |
context, |
providerContext, |
request->subscriptionInstance.getPath(), | request->subscriptionInstance.getPath(), |
classNames); |
classNames), |
|
handler) |
| |
// | // |
// Decrement count of current subscriptions for this provider | // Decrement count of current subscriptions for this provider |
|
|
_disableIndications(); | _disableIndications(); |
} | } |
} | } |
} |
|
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return(response); |
return response.release(); |
} | } |
| |
CIMResponseMessage* ProviderMessageHandler::_handleExportIndicationRequest( | CIMResponseMessage* ProviderMessageHandler::_handleExportIndicationRequest( |
|
|
dynamic_cast<CIMExportIndicationRequestMessage*>(message); | dynamic_cast<CIMExportIndicationRequestMessage*>(message); |
PEGASUS_ASSERT(request != 0); | PEGASUS_ASSERT(request != 0); |
| |
CIMExportIndicationResponseMessage* response = |
AutoPtr<CIMExportIndicationResponseMessage> response( |
dynamic_cast<CIMExportIndicationResponseMessage*>( | dynamic_cast<CIMExportIndicationResponseMessage*>( |
request->buildResponse()); |
request->buildResponse())); |
PEGASUS_ASSERT(response != 0); |
PEGASUS_ASSERT(response.get() != 0); |
| |
OperationResponseHandler handler( | OperationResponseHandler handler( |
request, response, _responseChunkCallback); |
request, response.get(), _responseChunkCallback); |
|
|
try |
|
{ |
|
OperationContext context; |
|
|
|
context.insert(request->operationContext.get(IdentityContainer::NAME)); |
|
| |
|
// NOTE: Accept-Languages do not need to be set in the consume msg. |
|
OperationContext providerContext; |
|
providerContext.insert(request->operationContext.get( |
|
IdentityContainer::NAME)); |
//L10N_TODO | //L10N_TODO |
// ATTN-CEC 06/04/03 NOTE: I can't find where the consume msg is sent. This | // ATTN-CEC 06/04/03 NOTE: I can't find where the consume msg is sent. This |
// does not appear to be hooked up. When it is added, need to | // does not appear to be hooked up. When it is added, need to |
// make sure that Content-Language is set in the consume msg. | // make sure that Content-Language is set in the consume msg. |
// NOTE: A-L is not needed to be set in the consume msg. |
providerContext.insert(request->operationContext.get( |
|
ContentLanguageListContainer::NAME)); |
| |
// add the langs to the context |
AutoPThreadSecurity threadLevelSecurity(providerContext); |
context.insert(request->operationContext.get(ContentLanguageListContainer::NAME)); |
|
|
CIMIndicationConsumerProvider* provider = |
|
getProviderInterface<CIMIndicationConsumerProvider>(_provider); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, | PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
"Calling provider.consumeIndication: " + _name); | "Calling provider.consumeIndication: " + _name); |
| |
StatProviderTimeMeasurement providerTime(response); |
StatProviderTimeMeasurement providerTime(response.get()); |
|
|
CIMIndicationConsumerProvider* provider = |
|
getProviderInterface<CIMIndicationConsumerProvider>(_provider); |
|
| |
|
HANDLE_PROVIDER_EXCEPTION( |
provider->consumeIndication( | provider->consumeIndication( |
context, |
providerContext, |
request->destinationPath, | request->destinationPath, |
request->indicationInstance); |
request->indicationInstance), |
} |
handler) |
HandleCatch(handler); |
|
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return(response); |
return response.release(); |
} | } |
| |
void ProviderMessageHandler::_enableIndications() | void ProviderMessageHandler::_enableIndications() |
|
|
_indicationCallback, | _indicationCallback, |
_responseChunkCallback); | _responseChunkCallback); |
| |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
_indicationResponseHandler = indicationResponseHandler; |
"Calling provider.enableIndications: " + _name); |
|
| |
status.setIndicationsEnabled(true); | status.setIndicationsEnabled(true); |
| |
CIMIndicationProvider* provider = | CIMIndicationProvider* provider = |
getProviderInterface<CIMIndicationProvider>(_provider); | getProviderInterface<CIMIndicationProvider>(_provider); |
| |
provider->enableIndications(*indicationResponseHandler); |
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.enableIndications: " + _name); |
| |
_indicationResponseHandler = indicationResponseHandler; |
provider->enableIndications(*indicationResponseHandler); |
} | } |
catch (Exception& e) | catch (Exception& e) |
{ | { |
|
|
CIMIndicationProvider* provider = | CIMIndicationProvider* provider = |
getProviderInterface<CIMIndicationProvider>(_provider); | getProviderInterface<CIMIndicationProvider>(_provider); |
| |
|
PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, |
|
"Calling provider.disableIndications: " + _name); |
|
|
try | try |
{ | { |
provider->disableIndications(); | provider->disableIndications(); |
|
|
{ | { |
PEG_TRACE_STRING(TRC_DISCARDED_DATA, Tracer::LEVEL2, | PEG_TRACE_STRING(TRC_DISCARDED_DATA, Tracer::LEVEL2, |
"Caught exception from provider " + _name + | "Caught exception from provider " + _name + |
" terminate() method."); |
" disableIndications() method."); |
} | } |
| |
status.setIndicationsEnabled(false); | status.setIndicationsEnabled(false); |