version 1.33.2.1, 2009/08/17 13:47:48
|
version 1.36, 2011/10/13 05:21:44
|
|
|
#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.processInstance(localInstance)); | _normalizer.processInstance(localInstance)); |
} | } |
| |
|
void GetInstanceResponseHandler::deliver(const SCMOInstance& cimInstance) |
|
{ |
|
if (cimInstance.isUninitialized()) |
|
{ |
|
MessageLoaderParms message( |
|
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
"The object is not initialized."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
|
|
if (SimpleInstanceResponseHandler::size() != 0) |
|
{ |
|
MessageLoaderParms message( |
|
"Server.OperationResponseHandler.TOO_MANY_OBJECTS_DELIVERED", |
|
"Too many objects delivered."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
|
|
SimpleInstanceResponseHandler::deliver(cimInstance); |
|
} |
|
|
void GetInstanceResponseHandler::complete() | void GetInstanceResponseHandler::complete() |
{ | { |
if (SimpleInstanceResponseHandler::size() == 0) | if (SimpleInstanceResponseHandler::size() == 0) |
|
|
{ | { |
CIMGetInstanceResponseMessage& msg = | CIMGetInstanceResponseMessage& msg = |
*static_cast<CIMGetInstanceResponseMessage*>(getResponse()); | *static_cast<CIMGetInstanceResponseMessage*>(getResponse()); |
|
Array<CIMInstance> cimObjs= getObjects(); |
msg.getResponseData().setCimInstance(getObjects()[0]); |
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
|
if (cimObjs.size() != 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) |
{ | { |
// --rk-> TBD |
if (scmoInstance.isUninitialized()) |
/*if (cimInstance.isUninitialized()) |
|
{ | { |
MessageLoaderParms message( | MessageLoaderParms message( |
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", | "Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
"The object is not initialized."); | "The object is not initialized."); |
| |
throw CIMException(CIM_ERR_FAILED, message); | throw CIMException(CIM_ERR_FAILED, message); |
}*/ |
} |
|
SimpleInstanceResponseHandler::deliver(scmoInstance); |
//fprintf(stderr, "EnumerateInstancesResponseHandler::deliver\n"); |
|
|
|
SimpleInstanceResponseHandler::deliver(cimInstance); |
|
// _normalizer.processInstance(cimInstance)); |
|
} | } |
| |
String EnumerateInstancesResponseHandler::getClass() const | String EnumerateInstancesResponseHandler::getClass() const |
|
|
CIMEnumerateInstancesResponseMessage& msg = | CIMEnumerateInstancesResponseMessage& msg = |
*static_cast<CIMEnumerateInstancesResponseMessage*>(getResponse()); | *static_cast<CIMEnumerateInstancesResponseMessage*>(getResponse()); |
| |
//fprintf(stderr, "EnumerateInstancesResponseHandler::transfer\n"); |
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); |
// _normalizer.processInstanceObjectPath(cimObjectPath)); |
|
} | } |
| |
String EnumerateInstanceNamesResponseHandler::getClass() const | String EnumerateInstanceNamesResponseHandler::getClass() const |
|
|
CIMEnumerateInstanceNamesResponseMessage& msg = | CIMEnumerateInstanceNamesResponseMessage& msg = |
*static_cast<CIMEnumerateInstanceNamesResponseMessage*>(getResponse()); | *static_cast<CIMEnumerateInstanceNamesResponseMessage*>(getResponse()); |
| |
//fprintf(stderr, "EnumerateInstancesResponseHandler::transfer\n"); |
Array<CIMObjectPath> cimObjs= getObjects(); |
msg.getResponseData().setSCMOInstanceNames(getSCMOObjects()); |
Array<SCMOInstance> scmoObjs= getSCMOObjects(); |
// msg.getResponseData().setInstanceNames(getObjects()); |
if (cimObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setInstanceNames(cimObjs); |
|
} |
|
if (scmoObjs.size() != 0) |
|
{ |
|
msg.getResponseData().setSCMO(scmoObjs); |
|
} |
} | } |
| |
// | // |
|
|
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", |
"The object is not initialized."); | "The object is not initialized."); |
| |
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 CIMInstance& cimInstance) |
|
{ |
|
if (cimInstance.isUninitialized()) |
|
{ |
|
MessageLoaderParms message( |
|
"Common.Exception.UNINITIALIZED_OBJECT_EXCEPTION", |
|
"The object is not initialized."); |
|
|
|
throw CIMException(CIM_ERR_FAILED, message); |
|
} |
|
|
|
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 |
{ | { |
return String("AssociatorsResponseHandler"); | return String("AssociatorsResponseHandler"); |
|
|
CIMAssociatorsResponseMessage& msg = | CIMAssociatorsResponseMessage& msg = |
*static_cast<CIMAssociatorsResponseMessage*>(getResponse()); | *static_cast<CIMAssociatorsResponseMessage*>(getResponse()); |
| |
msg.getResponseData().setCIMObjects(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 AssociatorNamesResponseHandler::deliver(const SCMOInstance& scmoObjectPath) |
|
{ |
|
SimpleObjectPathResponseHandler::deliver(scmoObjectPath); |
|
} |
|
|
String AssociatorNamesResponseHandler::getClass() const | String AssociatorNamesResponseHandler::getClass() const |
{ | { |
return String("AssociatorNamesResponseHandler"); | return String("AssociatorNamesResponseHandler"); |
|
|
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& 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 ReferencesResponseHandler::getClass() const | String ReferencesResponseHandler::getClass() const |
{ | { |
return String("ReferencesResponseHandler"); | return String("ReferencesResponseHandler"); |
|
|
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& scmoObjectPath) |
|
{ |
|
SimpleObjectPathResponseHandler::deliver(scmoObjectPath); |
|
} |
|
|
String ReferenceNamesResponseHandler::getClass() const | String ReferenceNamesResponseHandler::getClass() const |
{ | { |
return String("ReferenceNamesResponseHandler"); | return String("ReferenceNamesResponseHandler"); |
|
|
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; |
| |