version 1.33.2.2, 2009/10/01 09:33:41
|
version 1.35.4.1, 2012/02/15 17:47:16
|
|
|
#include <Pegasus/Common/SharedPtr.h> | #include <Pegasus/Common/SharedPtr.h> |
#include <Pegasus/Provider/CIMOMHandle.h> | #include <Pegasus/Provider/CIMOMHandle.h> |
#include <Pegasus/Config/ConfigManager.h> | #include <Pegasus/Config/ConfigManager.h> |
|
#include <Pegasus/Common/SCMOClassCache.h> |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
|
|
_normalizer); | _normalizer); |
} | } |
| |
void GetInstanceResponseHandler::deliver(const SCMOInstance& cimInstance) |
void GetInstanceResponseHandler::deliver(const CIMInstance& cimInstance) |
{ | { |
if (cimInstance.isUninitialized()) | if (cimInstance.isUninitialized()) |
{ | { |
|
|
throw CIMException(CIM_ERR_FAILED, message); | throw CIMException(CIM_ERR_FAILED, message); |
} | } |
| |
SCMOInstance localInstance(cimInstance); |
CIMInstance localInstance(cimInstance); |
#ifdef PEGASUS_ENABLE_OBJECT_NORMALIZATION | #ifdef PEGASUS_ENABLE_OBJECT_NORMALIZATION |
// The normalizer expects an object path embedded in instances even | // The normalizer expects an object path embedded in instances even |
// though it is not required by this operation. Use the requested | // though it is not required by this operation. Use the requested |
|
|
getRequest())->instanceName); | getRequest())->instanceName); |
} | } |
#endif | #endif |
SimpleInstanceResponseHandler::deliver(localInstance); |
SimpleInstanceResponseHandler::deliver( |
// TBD |
_normalizer.processInstance(localInstance)); |
//_normalizer.processInstance(localInstance)); |
|
} | } |
| |
void GetInstanceResponseHandler::deliver(const CIMInstance& cimInstance) |
void GetInstanceResponseHandler::deliver(const SCMOInstance& cimInstance) |
{ | { |
if (cimInstance.isUninitialized()) | if (cimInstance.isUninitialized()) |
{ | { |
|
|
throw CIMException(CIM_ERR_FAILED, message); | throw CIMException(CIM_ERR_FAILED, message); |
} | } |
| |
CIMInstance localInstance(cimInstance); |
SimpleInstanceResponseHandler::deliver(cimInstance); |
#ifdef PEGASUS_ENABLE_OBJECT_NORMALIZATION |
|
// The normalizer expects an object path embedded in instances even |
|
// though it is not required by this operation. Use the requested |
|
// object path is missing from the instance. |
|
if (localInstance.getPath().getKeyBindings().size() == 0) |
|
{ |
|
// ATTN: should clone before modification |
|
localInstance.setPath(static_cast<CIMGetInstanceRequestMessage*>( |
|
getRequest())->instanceName); |
|
} |
|
#endif |
|
SimpleInstanceResponseHandler::deliver( |
|
_normalizer.processInstance(localInstance)); |
|
} | } |
| |
void GetInstanceResponseHandler::complete() | void GetInstanceResponseHandler::complete() |
|
|
{ | { |
CIMGetInstanceResponseMessage& msg = | CIMGetInstanceResponseMessage& msg = |
*static_cast<CIMGetInstanceResponseMessage*>(getResponse()); | *static_cast<CIMGetInstanceResponseMessage*>(getResponse()); |
|
Array<CIMInstance> cimObjs= getObjects(); |
msg.getResponseData().setSCMOInstance(getSCMOObjects()[0]); |
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
// TODO --RK--> enable for C++ Providers again |
if (cimObjs.size() != 0) |
// msg.getResponseData().setCimInstance(getObjects()[0]); |
{ |
|
msg.getResponseData().setInstance(cimObjs[0]); |
|
} |
|
else |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
} | } |
| |
|
|
_normalizer.processInstance(cimInstance)); | _normalizer.processInstance(cimInstance)); |
} | } |
| |
void EnumerateInstancesResponseHandler::deliver(const SCMOInstance& cimInstance) |
void EnumerateInstancesResponseHandler::deliver( |
|
const SCMOInstance& scmoInstance) |
{ | { |
if (cimInstance.isUninitialized()) |
if (scmoInstance.isUninitialized()) |
{ | { |
MessageLoaderParms message( | MessageLoaderParms message( |
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", | "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
|
| |
throw CIMException(CIM_ERR_FAILED, message); | throw CIMException(CIM_ERR_FAILED, message); |
} | } |
|
SimpleInstanceResponseHandler::deliver(scmoInstance); |
SimpleInstanceResponseHandler::deliver(cimInstance); |
|
// TBD |
|
// _normalizer.processInstance(cimInstance)); |
|
} | } |
| |
String EnumerateInstancesResponseHandler::getClass() const | String EnumerateInstancesResponseHandler::getClass() const |
|
|
CIMEnumerateInstancesResponseMessage& msg = | CIMEnumerateInstancesResponseMessage& msg = |
*static_cast<CIMEnumerateInstancesResponseMessage*>(getResponse()); | *static_cast<CIMEnumerateInstancesResponseMessage*>(getResponse()); |
| |
// TBD --RK--> enable for C++ Providers again |
Array<CIMInstance> cimObjs= getObjects(); |
msg.getResponseData().setSCMOInstances(getSCMOObjects()); |
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setInstances(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
// | // |
|
|
} | } |
| |
SimpleObjectPathResponseHandler::deliver(scmoObjectPath); | SimpleObjectPathResponseHandler::deliver(scmoObjectPath); |
// TBD |
|
// _normalizer.processInstanceObjectPath(cimObjectPath)); |
|
} | } |
| |
String EnumerateInstanceNamesResponseHandler::getClass() const | String EnumerateInstanceNamesResponseHandler::getClass() const |
|
|
CIMEnumerateInstanceNamesResponseMessage& msg = | CIMEnumerateInstanceNamesResponseMessage& msg = |
*static_cast<CIMEnumerateInstanceNamesResponseMessage*>(getResponse()); | *static_cast<CIMEnumerateInstanceNamesResponseMessage*>(getResponse()); |
| |
// TODO --RK--> enable for C++ Providers again |
Array<CIMObjectPath> cimObjs= getObjects(); |
msg.getResponseData().setSCMOInstanceNames(getSCMOObjects()); |
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setInstanceNames(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
// | // |
|
|
SimpleObjectPathResponseHandler::deliver(cimObjectPath); | SimpleObjectPathResponseHandler::deliver(cimObjectPath); |
} | } |
| |
void CreateInstanceResponseHandler::deliver(const SCMOInstance& cimObjectPath) |
|
{ |
|
if (cimObjectPath.getClassName() == 0) |
|
{ |
|
MessageLoaderParms message( |
|
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
"The object is not initialized."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
|
|
if (SimpleObjectPathResponseHandler::size() != 0) |
|
{ |
|
MessageLoaderParms message( |
|
"Server.OperationResponseHandler.TOO_MANY_OBJECTS_DELIVERED", |
|
"Too many objects delivered."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
|
|
SimpleObjectPathResponseHandler::deliver(cimObjectPath); |
|
} |
|
|
|
void CreateInstanceResponseHandler::complete() | void CreateInstanceResponseHandler::complete() |
{ | { |
if (SimpleObjectPathResponseHandler::size() == 0) | if (SimpleObjectPathResponseHandler::size() == 0) |
|
|
CIMCreateInstanceResponseMessage& msg = | CIMCreateInstanceResponseMessage& msg = |
*static_cast<CIMCreateInstanceResponseMessage*>(getResponse()); | *static_cast<CIMCreateInstanceResponseMessage*>(getResponse()); |
| |
msg.instanceName = getObjects()[0]; |
Array<CIMObjectPath> cimObjs= getObjects(); |
|
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.instanceName = cimObjs[0]; |
|
} |
|
else |
|
{ |
|
scmoObjs[0].getCIMObjectPath(msg.instanceName); |
|
} |
} | } |
} | } |
| |
|
|
SimpleInstance2ObjectResponseHandler::deliver(cimInstance); | SimpleInstance2ObjectResponseHandler::deliver(cimInstance); |
} | } |
| |
void ExecQueryResponseHandler::deliver(const SCMOInstance& cimInstance) |
void ExecQueryResponseHandler::deliver(const SCMOInstance& scmoInstance) |
{ | { |
if (cimInstance.isUninitialized()) |
if (scmoInstance.isUninitialized()) |
{ | { |
MessageLoaderParms message( | MessageLoaderParms message( |
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", | "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
|
throw CIMException(CIM_ERR_FAILED, message); | throw CIMException(CIM_ERR_FAILED, message); |
} | } |
| |
SimpleInstance2ObjectResponseHandler::deliver(cimInstance); |
SimpleInstance2ObjectResponseHandler::deliver(scmoInstance); |
} | } |
| |
String ExecQueryResponseHandler::getClass() const | String ExecQueryResponseHandler::getClass() const |
|
|
CIMExecQueryResponseMessage& msg = | CIMExecQueryResponseMessage& msg = |
*static_cast<CIMExecQueryResponseMessage*>(getResponse()); | *static_cast<CIMExecQueryResponseMessage*>(getResponse()); |
| |
msg.getResponseData().setCIMObjects(getObjects()); |
Array<CIMObject> cimObjs= getObjects(); |
|
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
// complete keybindings based on set property values |
|
CIMOperationRequestMessage * reqMsg = |
|
(CIMOperationRequestMessage*) _request; |
|
|
|
Boolean clsRead=false; |
|
for (Uint32 j = 0, m = cimObjs.size(); j < m; j++) |
|
{ |
|
CIMObject & co=cimObjs[j]; |
|
CIMObjectPath op=co.getPath(); |
|
const Array<CIMKeyBinding>& kbs=op.getKeyBindings(); |
|
if (kbs.size()==0) |
|
{ // no path set why ? |
|
if (clsRead==false || _cimClass.isUninitialized()) |
|
{ |
|
SCMOClassCache * classCache = SCMOClassCache::getInstance(); |
|
CString nsName = reqMsg->nameSpace.getString().getCString(); |
|
CString clName = reqMsg->className.getString().getCString(); |
|
SCMOClass theClass = classCache->getSCMOClass( |
|
nsName, |
|
strlen(nsName), |
|
clName, |
|
strlen(clName)); |
|
theClass.getCIMClass(_cimClass); |
|
clsRead=true; |
|
} |
|
op = CIMInstance(co).buildPath(_cimClass); |
|
} |
|
op.setNameSpace(reqMsg->nameSpace); |
|
op.setHost(System::getHostName()); |
|
co.setPath(op); |
|
} |
|
msg.getResponseData().setObjects(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
Boolean ExecQueryResponseHandler::isAsync() const | Boolean ExecQueryResponseHandler::isAsync() const |
|
|
SimpleObjectResponseHandler::deliver(cimObject); | SimpleObjectResponseHandler::deliver(cimObject); |
} | } |
| |
void AssociatorsResponseHandler::deliver(const SCMOInstance& cimObject) |
void AssociatorsResponseHandler::deliver(const CIMInstance& cimInstance) |
{ | { |
if (cimObject.isUninitialized()) |
if (cimInstance.isUninitialized()) |
{ | { |
MessageLoaderParms message( | MessageLoaderParms message( |
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", | "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
|
throw CIMException(CIM_ERR_FAILED, message); | throw CIMException(CIM_ERR_FAILED, message); |
} | } |
| |
SimpleObjectResponseHandler::deliver(cimObject); |
SimpleObjectResponseHandler::deliver(cimInstance); |
|
} |
|
|
|
void AssociatorsResponseHandler::deliver(const SCMOInstance& scmoObject) |
|
{ |
|
if (scmoObject.isUninitialized()) |
|
{ |
|
MessageLoaderParms message( |
|
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
"The object is not initialized."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
SimpleObjectResponseHandler::deliver(scmoObject); |
} | } |
| |
String AssociatorsResponseHandler::getClass() const | String AssociatorsResponseHandler::getClass() const |
|
|
CIMAssociatorsResponseMessage& msg = | CIMAssociatorsResponseMessage& msg = |
*static_cast<CIMAssociatorsResponseMessage*>(getResponse()); | *static_cast<CIMAssociatorsResponseMessage*>(getResponse()); |
| |
// TODO --RK--> enable for C++ Providers again |
Array<CIMObject> cimObjs= getObjects(); |
msg.getResponseData().setCIMObjects(getObjects()); |
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setObjects(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
// | // |
|
|
SimpleObjectPathResponseHandler::deliver(cimObjectPath); | SimpleObjectPathResponseHandler::deliver(cimObjectPath); |
} | } |
| |
void AssociatorNamesResponseHandler::deliver(const SCMOInstance& cimObjectPath) |
void AssociatorNamesResponseHandler::deliver(const SCMOInstance& scmoObjectPath) |
{ |
|
if (cimObjectPath.getClassName() == 0) |
|
{ | { |
MessageLoaderParms message( |
SimpleObjectPathResponseHandler::deliver(scmoObjectPath); |
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
"The object is not initialized."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
|
|
SimpleObjectPathResponseHandler::deliver(cimObjectPath); |
|
} | } |
| |
String AssociatorNamesResponseHandler::getClass() const | String AssociatorNamesResponseHandler::getClass() const |
|
|
CIMAssociatorNamesResponseMessage& msg = | CIMAssociatorNamesResponseMessage& msg = |
*static_cast<CIMAssociatorNamesResponseMessage*>(getResponse()); | *static_cast<CIMAssociatorNamesResponseMessage*>(getResponse()); |
| |
msg.objectNames = getObjects(); |
Array<CIMObjectPath> cimObjs= getObjects(); |
|
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setInstanceNames(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
// | // |
|
|
SimpleObjectResponseHandler::deliver(cimObject); | SimpleObjectResponseHandler::deliver(cimObject); |
} | } |
| |
void ReferencesResponseHandler::deliver(const SCMOInstance& cimObject) |
void ReferencesResponseHandler::deliver(const SCMOInstance& scmoObject) |
{ | { |
if (cimObject.isUninitialized()) |
if (scmoObject.isUninitialized()) |
{ | { |
MessageLoaderParms message( | MessageLoaderParms message( |
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", | "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
|
| |
throw CIMException(CIM_ERR_FAILED, message); | throw CIMException(CIM_ERR_FAILED, message); |
} | } |
|
SimpleObjectResponseHandler::deliver(scmoObject); |
SimpleObjectResponseHandler::deliver(cimObject); |
|
} | } |
| |
String ReferencesResponseHandler::getClass() const | String ReferencesResponseHandler::getClass() const |
|
|
CIMReferencesResponseMessage& msg = | CIMReferencesResponseMessage& msg = |
*static_cast<CIMReferencesResponseMessage*>(getResponse()); | *static_cast<CIMReferencesResponseMessage*>(getResponse()); |
| |
msg.cimObjects = getObjects(); |
Array<CIMObject> cimObjs= getObjects(); |
|
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setObjects(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
// | // |
|
|
SimpleObjectPathResponseHandler::deliver(cimObjectPath); | SimpleObjectPathResponseHandler::deliver(cimObjectPath); |
} | } |
| |
void ReferenceNamesResponseHandler::deliver(const SCMOInstance& cimObjectPath) |
void ReferenceNamesResponseHandler::deliver(const SCMOInstance& scmoObjectPath) |
{ | { |
if (cimObjectPath.getClassName() == 0) |
SimpleObjectPathResponseHandler::deliver(scmoObjectPath); |
{ |
|
MessageLoaderParms message( |
|
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
"The object is not initialized."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
|
|
SimpleObjectPathResponseHandler::deliver(cimObjectPath); |
|
} | } |
| |
String ReferenceNamesResponseHandler::getClass() const | String ReferenceNamesResponseHandler::getClass() const |
|
|
CIMReferenceNamesResponseMessage& msg = | CIMReferenceNamesResponseMessage& msg = |
*static_cast<CIMReferenceNamesResponseMessage*>(getResponse()); | *static_cast<CIMReferenceNamesResponseMessage*>(getResponse()); |
| |
msg.objectNames = getObjects(); |
Array<CIMObjectPath> cimObjs= getObjects(); |
|
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setInstanceNames(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
// | // |
|
|
contentLangs = getLanguages(); | contentLangs = getLanguages(); |
} | } |
| |
|
Uint32 timeoutMilliSec = 0; |
|
if (context.contains(TimeoutContainer::NAME)) |
|
{ |
|
TimeoutContainer timeoutContainer = |
|
context.get(TimeoutContainer::NAME); |
|
timeoutMilliSec = timeoutContainer.getTimeOut(); |
|
} |
|
|
// create message | // create message |
CIMProcessIndicationRequestMessage* request = | CIMProcessIndicationRequestMessage* request = |
new CIMProcessIndicationRequestMessage( | new CIMProcessIndicationRequestMessage( |
|
|
cimInstance, | cimInstance, |
subscriptionInstanceNames, | subscriptionInstanceNames, |
_provider, | _provider, |
QueueIdStack()); // Must be filled in by the callback function |
QueueIdStack(), // Must be filled in by the callback function |
|
timeoutMilliSec); |
| |
request->operationContext = context; | request->operationContext = context; |
| |