version 1.11.8.4, 2006/03/10 14:30:39
|
version 1.11.10.1, 2006/01/18 17:38:03
|
|
|
//%2006//////////////////////////////////////////////////////////////////////// |
//%2005//////////////////////////////////////////////////////////////////////// |
// | // |
// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development | // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development |
// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. | // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. |
|
|
// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. | // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. |
// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; | // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
// EMC Corporation; VERITAS Software Corporation; The Open Group. | // EMC Corporation; VERITAS Software Corporation; The Open Group. |
// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
|
// EMC Corporation; Symantec Corporation; The Open Group. |
|
// | // |
// Permission is hereby granted, free of charge, to any person obtaining a copy | // Permission is hereby granted, free of charge, to any person obtaining a copy |
// of this software and associated documentation files (the "Software"), to | // of this software and associated documentation files (the "Software"), to |
|
|
// | // |
// Modified By: | // Modified By: |
// Brian G. Campbell, EMC (campbell_brian@emc.com) - PEP140/phase2 | // Brian G. Campbell, EMC (campbell_brian@emc.com) - PEP140/phase2 |
// Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com) |
|
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
#include "OperationResponseHandler.h" | #include "OperationResponseHandler.h" |
| |
#include <Pegasus/Common/Logger.h> | #include <Pegasus/Common/Logger.h> |
#include <Pegasus/Provider/CIMOMHandle.h> |
|
| |
PEGASUS_NAMESPACE_BEGIN |
#include <Pegasus/ProviderManager2/ProviderManagerService.h> |
|
|
/********************************************************** |
|
* Define CIMOMHandleContext class |
|
**********************************************************/ |
|
class CIMOMHandleContext : public NormalizerContext |
|
{ |
|
public: |
|
CIMOMHandleContext() {} |
|
virtual ~CIMOMHandleContext() {} |
|
|
|
virtual CIMClass getClass( |
|
const CIMNamespaceName& nameSpace, |
|
const CIMName& name); |
|
|
|
virtual Array<CIMName> enumerateClassNames( |
|
const CIMNamespaceName& nameSpace, const CIMName& className, |
|
bool deepInheritance); |
|
|
|
virtual AutoPtr<NormalizerContext> clone(); |
|
| |
protected: |
PEGASUS_NAMESPACE_BEGIN |
CIMOMHandleContext(CIMOMHandle & hndl) : handle(hndl) {} |
|
private: |
|
CIMOMHandle handle; |
|
OperationContext emptyContext; |
|
}; |
|
|
|
CIMClass CIMOMHandleContext::getClass( |
|
const CIMNamespaceName& nameSpace, |
|
const CIMName& name) |
|
{ |
|
// Get the whole class definition |
|
return handle.getClass(emptyContext, nameSpace, name, false, true, true, |
|
CIMPropertyList()); |
|
} |
|
|
|
Array<CIMName> CIMOMHandleContext::enumerateClassNames( |
|
const CIMNamespaceName& nameSpace, const CIMName& className, |
|
bool deepInheritance) |
|
{ |
|
return handle.enumerateClassNames(emptyContext, nameSpace, className, |
|
deepInheritance); |
|
} |
|
|
|
AutoPtr<NormalizerContext> CIMOMHandleContext::clone() |
|
{ |
|
AutoPtr<NormalizerContext> tmpPtr(new CIMOMHandleContext(handle)); |
|
return tmpPtr; |
|
} |
|
|
|
/********************************************************** |
|
* End CIMOMHandleContext class |
|
**********************************************************/ |
|
| |
// | // |
// OperationResponseHandler | // OperationResponseHandler |
|
|
| |
OperationResponseHandler::OperationResponseHandler( | OperationResponseHandler::OperationResponseHandler( |
CIMRequestMessage *request, | CIMRequestMessage *request, |
CIMResponseMessage *response, |
CIMResponseMessage *response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
|
: _request(request), | : _request(request), |
_response(response), | _response(response), |
_responseChunkCallback(responseChunkCallback), |
|
_responseObjectTotal(0), | _responseObjectTotal(0), |
_responseMessageTotal(0), | _responseMessageTotal(0), |
_responseObjectThreshold(0) | _responseObjectThreshold(0) |
|
|
#define PEGASUS_RESPONSE_OBJECT_COUNT_THRESHOLD ~0 | #define PEGASUS_RESPONSE_OBJECT_COUNT_THRESHOLD ~0 |
#endif | #endif |
| |
if (!request) |
if (!request || (request->requestIsOOP == true)) |
{ | { |
_responseObjectThreshold = ~0; | _responseObjectThreshold = ~0; |
} | } |
|
|
| |
if (isComplete == false) | if (isComplete == false) |
{ | { |
_responseChunkCallback(_request, _response); |
ProviderManagerService::handleCimResponse(*_request, *_response); |
} | } |
| |
// put caller's allocated response back in place. Note that _response | // put caller's allocated response back in place. Note that _response |
|
|
| |
GetInstanceResponseHandler::GetInstanceResponseHandler( | GetInstanceResponseHandler::GetInstanceResponseHandler( |
CIMGetInstanceRequestMessage* request, | CIMGetInstanceRequestMessage* request, |
CIMGetInstanceResponseMessage* response, |
CIMGetInstanceResponseMessage * response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response) |
: OperationResponseHandler(request, response, responseChunkCallback) |
|
{ | { |
#ifdef PEGASUS_ENABLE_OBJECT_NORMALIZATION | #ifdef PEGASUS_ENABLE_OBJECT_NORMALIZATION |
// Attempt to get the cached class definition used to validate results of this | // Attempt to get the cached class definition used to validate results of this |
|
|
request->operationContext.get(CachedClassDefinitionContainer::NAME); | request->operationContext.get(CachedClassDefinitionContainer::NAME); |
| |
cimClass = container.getClass(); | cimClass = container.getClass(); |
|
|
} | } |
catch(Exception &) | catch(Exception &) |
{ | { |
|
|
// for this operation. | // for this operation. |
} | } |
| |
AutoPtr<NormalizerContext> tmpContext(new CIMOMHandleContext()); |
_normalizer = |
ObjectNormalizer tmpNormalizer( |
ObjectNormalizer( |
cimClass, | cimClass, |
request->includeQualifiers, | request->includeQualifiers, |
request->includeClassOrigin, |
request->includeClassOrigin); |
request->nameSpace, |
|
tmpContext); |
|
_normalizer = tmpNormalizer; |
|
#endif | #endif |
} | } |
| |
|
|
| |
EnumerateInstancesResponseHandler::EnumerateInstancesResponseHandler( | EnumerateInstancesResponseHandler::EnumerateInstancesResponseHandler( |
CIMEnumerateInstancesRequestMessage* request, | CIMEnumerateInstancesRequestMessage* request, |
CIMEnumerateInstancesResponseMessage* response, |
CIMEnumerateInstancesResponseMessage * response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response) |
: OperationResponseHandler(request, response, responseChunkCallback) |
|
{ | { |
#ifdef PEGASUS_ENABLE_OBJECT_NORMALIZATION | #ifdef PEGASUS_ENABLE_OBJECT_NORMALIZATION |
// Attempt to get the cached class definition used to validate results of this | // Attempt to get the cached class definition used to validate results of this |
|
|
// for this operation. | // for this operation. |
} | } |
| |
AutoPtr<NormalizerContext> tmpContext(new CIMOMHandleContext()); |
_normalizer = |
ObjectNormalizer tmpNormalizer( |
ObjectNormalizer( |
cimClass, | cimClass, |
request->includeQualifiers, | request->includeQualifiers, |
request->includeClassOrigin, |
request->includeClassOrigin); |
request->nameSpace, |
|
tmpContext); |
|
_normalizer = tmpNormalizer; |
|
#endif | #endif |
} | } |
| |
|
|
| |
EnumerateInstanceNamesResponseHandler::EnumerateInstanceNamesResponseHandler( | EnumerateInstanceNamesResponseHandler::EnumerateInstanceNamesResponseHandler( |
CIMEnumerateInstanceNamesRequestMessage* request, | CIMEnumerateInstanceNamesRequestMessage* request, |
CIMEnumerateInstanceNamesResponseMessage* response, |
CIMEnumerateInstanceNamesResponseMessage * response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response) |
: OperationResponseHandler(request, response, responseChunkCallback) |
|
{ | { |
#ifdef PEGASUS_ENABLE_OBJECT_NORMALIZATION | #ifdef PEGASUS_ENABLE_OBJECT_NORMALIZATION |
// Attempt to get the cached class definition used to validate results of this | // Attempt to get the cached class definition used to validate results of this |
|
|
// for this operation. | // for this operation. |
} | } |
| |
AutoPtr<NormalizerContext> tmpContext(new CIMOMHandleContext()); |
_normalizer = |
ObjectNormalizer tmpNormalizer( |
ObjectNormalizer( |
cimClass, | cimClass, |
false, | false, |
false, |
false); |
request->nameSpace, |
|
tmpContext); |
|
_normalizer = tmpNormalizer; |
|
#endif | #endif |
} | } |
| |
|
|
| |
CreateInstanceResponseHandler::CreateInstanceResponseHandler( | CreateInstanceResponseHandler::CreateInstanceResponseHandler( |
CIMCreateInstanceRequestMessage* request, | CIMCreateInstanceRequestMessage* request, |
CIMCreateInstanceResponseMessage* response, |
CIMCreateInstanceResponseMessage * response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response) |
: OperationResponseHandler(request, response, responseChunkCallback) |
|
{ | { |
} | } |
| |
|
|
| |
ModifyInstanceResponseHandler::ModifyInstanceResponseHandler( | ModifyInstanceResponseHandler::ModifyInstanceResponseHandler( |
CIMModifyInstanceRequestMessage* request, | CIMModifyInstanceRequestMessage* request, |
CIMModifyInstanceResponseMessage* response, |
CIMModifyInstanceResponseMessage * response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response) |
: OperationResponseHandler(request, response, responseChunkCallback) |
|
{ | { |
} | } |
| |
|
|
| |
DeleteInstanceResponseHandler::DeleteInstanceResponseHandler( | DeleteInstanceResponseHandler::DeleteInstanceResponseHandler( |
CIMDeleteInstanceRequestMessage* request, | CIMDeleteInstanceRequestMessage* request, |
CIMDeleteInstanceResponseMessage* response, |
CIMDeleteInstanceResponseMessage * response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response) |
: OperationResponseHandler(request, response, responseChunkCallback) |
|
{ | { |
} | } |
| |
|
|
| |
GetPropertyResponseHandler::GetPropertyResponseHandler( | GetPropertyResponseHandler::GetPropertyResponseHandler( |
CIMGetPropertyRequestMessage* request, | CIMGetPropertyRequestMessage* request, |
CIMGetPropertyResponseMessage* response, |
CIMGetPropertyResponseMessage * response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response) |
: OperationResponseHandler(request, response, responseChunkCallback) |
|
{ | { |
} | } |
| |
|
|
| |
SetPropertyResponseHandler::SetPropertyResponseHandler( | SetPropertyResponseHandler::SetPropertyResponseHandler( |
CIMSetPropertyRequestMessage* request, | CIMSetPropertyRequestMessage* request, |
CIMSetPropertyResponseMessage* response, |
CIMSetPropertyResponseMessage * response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response) |
: OperationResponseHandler(request, response, responseChunkCallback) |
|
{ | { |
} | } |
| |
|
|
| |
ExecQueryResponseHandler::ExecQueryResponseHandler( | ExecQueryResponseHandler::ExecQueryResponseHandler( |
CIMExecQueryRequestMessage* request, | CIMExecQueryRequestMessage* request, |
CIMExecQueryResponseMessage* response, |
CIMExecQueryResponseMessage * response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response) |
: OperationResponseHandler(request, response, responseChunkCallback) |
|
{ | { |
} | } |
| |
|
|
| |
AssociatorsResponseHandler::AssociatorsResponseHandler( | AssociatorsResponseHandler::AssociatorsResponseHandler( |
CIMAssociatorsRequestMessage* request, | CIMAssociatorsRequestMessage* request, |
CIMAssociatorsResponseMessage* response, |
CIMAssociatorsResponseMessage * response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response) |
: OperationResponseHandler(request, response, responseChunkCallback) |
|
{ | { |
} | } |
| |
|
|
| |
AssociatorNamesResponseHandler::AssociatorNamesResponseHandler( | AssociatorNamesResponseHandler::AssociatorNamesResponseHandler( |
CIMAssociatorNamesRequestMessage* request, | CIMAssociatorNamesRequestMessage* request, |
CIMAssociatorNamesResponseMessage* response, |
CIMAssociatorNamesResponseMessage * response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response) |
: OperationResponseHandler(request, response, responseChunkCallback) |
|
{ | { |
} | } |
| |
|
|
| |
ReferencesResponseHandler::ReferencesResponseHandler( | ReferencesResponseHandler::ReferencesResponseHandler( |
CIMReferencesRequestMessage* request, | CIMReferencesRequestMessage* request, |
CIMReferencesResponseMessage* response, |
CIMReferencesResponseMessage * response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response) |
: OperationResponseHandler(request, response, responseChunkCallback) |
|
{ | { |
} | } |
| |
|
|
| |
ReferenceNamesResponseHandler::ReferenceNamesResponseHandler( | ReferenceNamesResponseHandler::ReferenceNamesResponseHandler( |
CIMReferenceNamesRequestMessage* request, | CIMReferenceNamesRequestMessage* request, |
CIMReferenceNamesResponseMessage* response, |
CIMReferenceNamesResponseMessage * response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response) |
: OperationResponseHandler(request, response, responseChunkCallback) |
|
{ | { |
} | } |
| |
|
|
| |
InvokeMethodResponseHandler::InvokeMethodResponseHandler( | InvokeMethodResponseHandler::InvokeMethodResponseHandler( |
CIMInvokeMethodRequestMessage* request, | CIMInvokeMethodRequestMessage* request, |
CIMInvokeMethodResponseMessage* response, |
CIMInvokeMethodResponseMessage * response) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response) |
: OperationResponseHandler(request, response, responseChunkCallback) |
|
{ | { |
} | } |
| |
|
|
// EnableIndicationsResponseHandler | // EnableIndicationsResponseHandler |
// | // |
| |
|
typedef void (*PEGASUS_INDICATION_CALLBACK)(CIMProcessIndicationRequestMessage*); |
|
|
EnableIndicationsResponseHandler::EnableIndicationsResponseHandler( | EnableIndicationsResponseHandler::EnableIndicationsResponseHandler( |
CIMRequestMessage* request, | CIMRequestMessage* request, |
CIMResponseMessage* response, | CIMResponseMessage* response, |
CIMInstance& provider, | CIMInstance& provider, |
PEGASUS_INDICATION_CALLBACK_T indicationCallback, |
PEGASUS_INDICATION_CALLBACK indicationCallback) |
PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback) |
: OperationResponseHandler(request, response), |
: OperationResponseHandler(request, response, responseChunkCallback), |
|
_indicationCallback(indicationCallback) | _indicationCallback(indicationCallback) |
{ | { |
_provider = provider; | _provider = provider; |