version 1.8, 2009/05/27 05:56:25
|
version 1.9.2.3, 2009/10/19 15:20:03
|
|
|
msg = _getEnumerateInstancesResponseMessage(in, binaryResponse); | msg = _getEnumerateInstancesResponseMessage(in, binaryResponse); |
break; | break; |
case CIM_ENUMERATE_INSTANCE_NAMES_RESPONSE_MESSAGE: | case CIM_ENUMERATE_INSTANCE_NAMES_RESPONSE_MESSAGE: |
msg = _getEnumerateInstanceNamesResponseMessage(in); |
msg = _getEnumerateInstanceNamesResponseMessage(in, binaryResponse); |
break; | break; |
case CIM_EXEC_QUERY_RESPONSE_MESSAGE: | case CIM_EXEC_QUERY_RESPONSE_MESSAGE: |
msg = _getExecQueryResponseMessage(in); |
msg = _getExecQueryResponseMessage(in, binaryResponse); |
break; | break; |
case CIM_GET_PROPERTY_RESPONSE_MESSAGE: | case CIM_GET_PROPERTY_RESPONSE_MESSAGE: |
msg = _getGetPropertyResponseMessage(in); | msg = _getGetPropertyResponseMessage(in); |
|
|
msg = _getSetPropertyResponseMessage(in); | msg = _getSetPropertyResponseMessage(in); |
break; | break; |
case CIM_ASSOCIATORS_RESPONSE_MESSAGE: | case CIM_ASSOCIATORS_RESPONSE_MESSAGE: |
msg = _getAssociatorsResponseMessage(in); |
msg = _getAssociatorsResponseMessage(in, binaryResponse); |
break; | break; |
case CIM_ASSOCIATOR_NAMES_RESPONSE_MESSAGE: | case CIM_ASSOCIATOR_NAMES_RESPONSE_MESSAGE: |
msg = _getAssociatorNamesResponseMessage(in); |
msg = _getAssociatorNamesResponseMessage(in, binaryResponse); |
break; | break; |
case CIM_REFERENCES_RESPONSE_MESSAGE: | case CIM_REFERENCES_RESPONSE_MESSAGE: |
msg = _getReferencesResponseMessage(in); |
msg = _getReferencesResponseMessage(in, binaryResponse); |
break; | break; |
case CIM_REFERENCE_NAMES_RESPONSE_MESSAGE: | case CIM_REFERENCE_NAMES_RESPONSE_MESSAGE: |
msg = _getReferenceNamesResponseMessage(in); |
msg = _getReferenceNamesResponseMessage(in, binaryResponse); |
break; | break; |
case CIM_INVOKE_METHOD_RESPONSE_MESSAGE: | case CIM_INVOKE_METHOD_RESPONSE_MESSAGE: |
msg = _getInvokeMethodResponseMessage(in); | msg = _getInvokeMethodResponseMessage(in); |
|
|
QueueIdStack()); | QueueIdStack()); |
} | } |
| |
static Boolean _resolveXMLInstance( |
|
CIMGetInstanceResponseMessage* msg, |
|
CIMInstance& cimInstance) |
|
{ |
|
// Deserialize instance: |
|
{ |
|
XmlParser parser((char*)msg->instanceData.getData()); |
|
|
|
if (!XmlReader::getInstanceElement(parser, cimInstance)) |
|
{ |
|
cimInstance = CIMInstance(); |
|
return false; |
|
} |
|
} |
|
|
|
// Deserialize path: |
|
{ |
|
XmlParser parser((char*)msg->referenceData.getData()); |
|
CIMObjectPath cimObjectPath; |
|
|
|
if (XmlReader::getValueReferenceElement(parser, cimObjectPath)) |
|
{ |
|
if (msg->hostData.size()) |
|
cimObjectPath.setHost(msg->hostData); |
|
|
|
if (!msg->nameSpaceData.isNull()) |
|
cimObjectPath.setNameSpace(msg->nameSpaceData); |
|
|
|
cimInstance.setPath(cimObjectPath); |
|
} |
|
} |
|
|
|
return true; |
|
} |
|
|
|
static Boolean _resolveXMLInstances( |
|
CIMEnumerateInstancesResponseMessage* msg, |
|
Array<CIMInstance>& instances) |
|
{ |
|
instances.clear(); |
|
|
|
for (Uint32 i = 0; i < msg->instancesData.size(); i++) |
|
{ |
|
CIMInstance cimInstance; |
|
|
|
// Deserialize instance: |
|
{ |
|
XmlParser parser((char*)msg->instancesData[i].getData()); |
|
|
|
if (!XmlReader::getInstanceElement(parser, cimInstance)) |
|
{ |
|
cimInstance = CIMInstance(); |
|
} |
|
} |
|
|
|
// Deserialize path: |
|
{ |
|
XmlParser parser((char*)msg->referencesData[i].getData()); |
|
CIMObjectPath cimObjectPath; |
|
|
|
if (XmlReader::getInstanceNameElement(parser, cimObjectPath)) |
|
{ |
|
if (!msg->nameSpacesData[i].isNull()) |
|
cimObjectPath.setNameSpace(msg->nameSpacesData[i]); |
|
|
|
if (msg->hostsData[i].size()) |
|
cimObjectPath.setHost(msg->hostsData[i]); |
|
|
|
cimInstance.setPath(cimObjectPath); |
|
} |
|
} |
|
|
|
instances.append(cimInstance); |
|
} |
|
|
|
return true; |
|
} |
|
|
|
static Boolean _resolveBinaryInstance( |
|
CIMGetInstanceResponseMessage* msg, |
|
CIMInstance& instance) |
|
{ |
|
CIMBuffer in((char*)msg->binaryData.getData(), msg->binaryData.size()); |
|
|
|
if (!in.getInstance(instance)) |
|
{ |
|
instance = CIMInstance(); |
|
in.release(); |
|
return false; |
|
} |
|
|
|
in.release(); |
|
return true; |
|
} |
|
|
|
static Boolean _resolveBinaryInstances( |
|
CIMEnumerateInstancesResponseMessage* msg, |
|
Array<CIMInstance>& instances) |
|
{ |
|
instances.clear(); |
|
|
|
CIMBuffer in((char*)msg->binaryData.getData(), msg->binaryData.size()); |
|
|
|
if (!in.getInstanceA(instances)) |
|
{ |
|
in.release(); |
|
return false; |
|
} |
|
|
|
in.release(); |
|
return true; |
|
} |
|
|
|
CIMGetInstanceResponseMessage* | CIMGetInstanceResponseMessage* |
CIMBinMsgDeserializer::_getGetInstanceResponseMessage( | CIMBinMsgDeserializer::_getGetInstanceResponseMessage( |
CIMBuffer& in, | CIMBuffer& in, |
bool binaryResponse) | bool binaryResponse) |
{ | { |
if (binaryResponse) |
|
{ |
|
CIMGetInstanceResponseMessage* msg = new CIMGetInstanceResponseMessage( | CIMGetInstanceResponseMessage* msg = new CIMGetInstanceResponseMessage( |
String::EMPTY, | String::EMPTY, |
CIMException(), | CIMException(), |
QueueIdStack()); | QueueIdStack()); |
| |
if (!in.getUint8A(msg->binaryData)) |
CIMResponseData& responseData = msg->getResponseData(); |
return 0; |
|
|
|
msg->resolveCallback = _resolveBinaryInstance; |
|
msg->binaryEncoding = true; |
|
| |
return msg; |
if (binaryResponse) |
|
{ |
|
if (!responseData.setBinary(in)) |
|
{ |
|
delete(msg); |
|
return 0; |
|
} |
} | } |
else | else |
{ | { |
Array<Sint8> instanceData; |
if (!responseData.setXml(in)) |
Array<Sint8> referenceData; |
{ |
String hostData; |
delete(msg); |
CIMNamespaceName nameSpaceData; |
return 0; |
|
} |
if (!in.getSint8A(instanceData)) |
} |
return NULL; |
|
|
|
if (!in.getSint8A(referenceData)) |
|
return NULL; |
|
|
|
if (!in.getString(hostData)) |
|
return NULL; |
|
|
|
if (!in.getNamespaceName(nameSpaceData)) |
|
return NULL; |
|
|
|
CIMGetInstanceResponseMessage* msg = new CIMGetInstanceResponseMessage( |
|
String::EMPTY, |
|
CIMException(), |
|
QueueIdStack()); |
|
|
|
msg->resolveCallback = _resolveXMLInstance; |
|
msg->instanceData = instanceData; |
|
msg->referenceData = referenceData; |
|
msg->hostData = hostData; |
|
msg->nameSpaceData = nameSpaceData; |
|
| |
return msg; | return msg; |
} | } |
} |
|
| |
CIMDeleteInstanceResponseMessage* | CIMDeleteInstanceResponseMessage* |
CIMBinMsgDeserializer::_getDeleteInstanceResponseMessage( | CIMBinMsgDeserializer::_getDeleteInstanceResponseMessage( |
|
|
CIMBuffer& in, | CIMBuffer& in, |
bool binaryResponse) | bool binaryResponse) |
{ | { |
if (binaryResponse) |
|
{ |
|
// Inject data into message so that the instances can be deserialized |
|
// on demand later (hopefully never; hopefully it can be written out on |
|
// the wire intact). |
|
|
|
CIMEnumerateInstancesResponseMessage* msg; | CIMEnumerateInstancesResponseMessage* msg; |
| |
msg = new CIMEnumerateInstancesResponseMessage(String::EMPTY, | msg = new CIMEnumerateInstancesResponseMessage(String::EMPTY, |
CIMException(), QueueIdStack()); | CIMException(), QueueIdStack()); |
| |
if (!in.getUint8A(msg->binaryData)) |
CIMResponseData& responseData = msg->getResponseData(); |
return 0; |
|
| |
msg->resolveCallback = _resolveBinaryInstances; |
if (binaryResponse) |
msg->binaryEncoding = true; |
{ |
|
if (!responseData.setBinary(in)) |
|
{ |
|
delete(msg); |
|
return 0; |
|
} |
| |
return msg; | return msg; |
} | } |
else | else |
{ | { |
Uint32 count; |
if (!responseData.setXml(in)) |
|
{ |
if (!in.getUint32(count)) |
delete(msg); |
return 0; | return 0; |
|
} |
| |
Array<ArraySint8> instancesData; |
return msg; |
Array<ArraySint8> referencesData; |
} |
Array<String> hostsData; |
} |
Array<CIMNamespaceName> nameSpacesData; |
|
| |
for (Uint32 i = 0; i < count; i++) |
CIMEnumerateInstanceNamesResponseMessage* |
|
CIMBinMsgDeserializer::_getEnumerateInstanceNamesResponseMessage( |
|
CIMBuffer& in, |
|
bool binaryResponse) |
{ | { |
Array<Sint8> inst; |
CIMEnumerateInstanceNamesResponseMessage* msg; |
Array<Sint8> ref; |
|
CIMNamespaceName ns; |
|
String host; |
|
| |
if (!in.getSint8A(inst)) |
msg = new CIMEnumerateInstanceNamesResponseMessage(String::EMPTY, |
return 0; |
CIMException(), |
|
QueueIdStack()); |
| |
if (!in.getSint8A(ref)) |
CIMResponseData& responseData = msg->getResponseData(); |
return 0; |
|
| |
if (!in.getString(host)) |
if (binaryResponse) |
|
{ |
|
if (!responseData.setBinary(in)) |
|
{ |
|
delete(msg); |
return 0; | return 0; |
|
} |
| |
if (!in.getNamespaceName(ns)) |
return msg; |
|
} |
|
else |
|
{ |
|
if (!responseData.setXml(in)) |
|
{ |
|
delete(msg); |
return 0; | return 0; |
|
|
instancesData.append(inst); |
|
referencesData.append(ref); |
|
hostsData.append(host); |
|
nameSpacesData.append(ns); |
|
} | } |
| |
CIMEnumerateInstancesResponseMessage* msg; |
|
|
|
msg = new CIMEnumerateInstancesResponseMessage( |
|
String::EMPTY, |
|
CIMException(), |
|
QueueIdStack()); |
|
|
|
msg->resolveCallback = _resolveXMLInstances; |
|
msg->instancesData = instancesData; |
|
msg->referencesData = referencesData; |
|
msg->hostsData = hostsData; |
|
msg->nameSpacesData = nameSpacesData; |
|
|
|
return msg; | return msg; |
} | } |
} | } |
| |
CIMEnumerateInstanceNamesResponseMessage* |
CIMExecQueryResponseMessage* |
CIMBinMsgDeserializer::_getEnumerateInstanceNamesResponseMessage( |
CIMBinMsgDeserializer::_getExecQueryResponseMessage( |
CIMBuffer& in) |
CIMBuffer& in, |
|
bool binaryResponse) |
{ | { |
XmlEntry entry; |
CIMExecQueryResponseMessage* msg; |
Array<CIMObjectPath> instanceNames; |
|
| |
if (!in.getObjectPathA(instanceNames)) |
msg = new CIMExecQueryResponseMessage(String::EMPTY, |
return false; |
CIMException(), QueueIdStack()); |
| |
return new CIMEnumerateInstanceNamesResponseMessage( |
CIMResponseData& responseData = msg->getResponseData(); |
String::EMPTY, |
|
CIMException(), |
|
QueueIdStack(), |
|
instanceNames); |
|
} |
|
| |
CIMExecQueryResponseMessage* |
if (binaryResponse) |
CIMBinMsgDeserializer::_getExecQueryResponseMessage( |
|
CIMBuffer& in) |
|
{ | { |
XmlEntry entry; |
if (!responseData.setBinary(in)) |
Array<CIMObject> cimObjects; |
{ |
|
delete(msg); |
if (!in.getObjectA(cimObjects)) |
return 0; |
return false; |
} |
|
} |
|
else |
|
{ |
|
if (!responseData.setXml(in)) |
|
{ |
|
delete(msg); |
|
return 0; |
|
} |
|
} |
| |
return new CIMExecQueryResponseMessage( |
return msg; |
String::EMPTY, |
|
CIMException(), |
|
QueueIdStack(), |
|
cimObjects); |
|
} | } |
| |
CIMAssociatorsResponseMessage* | CIMAssociatorsResponseMessage* |
CIMBinMsgDeserializer::_getAssociatorsResponseMessage( | CIMBinMsgDeserializer::_getAssociatorsResponseMessage( |
CIMBuffer& in) |
CIMBuffer& in, |
|
bool binaryResponse) |
{ | { |
XmlEntry entry; |
CIMAssociatorsResponseMessage* msg; |
Array<CIMObject> cimObjects; |
|
| |
if (!in.getObjectA(cimObjects)) |
msg = new CIMAssociatorsResponseMessage(String::EMPTY, |
return false; |
CIMException(), QueueIdStack()); |
| |
return new CIMAssociatorsResponseMessage( |
CIMResponseData& responseData = msg->getResponseData(); |
String::EMPTY, |
|
CIMException(), |
if (binaryResponse) |
QueueIdStack(), |
{ |
cimObjects); |
if (!responseData.setBinary(in)) |
|
{ |
|
delete(msg); |
|
return 0; |
|
} |
|
} |
|
else |
|
{ |
|
if (!responseData.setXml(in)) |
|
{ |
|
delete(msg); |
|
return 0; |
|
} |
|
} |
|
|
|
return msg; |
} | } |
| |
CIMAssociatorNamesResponseMessage* | CIMAssociatorNamesResponseMessage* |
CIMBinMsgDeserializer::_getAssociatorNamesResponseMessage( | CIMBinMsgDeserializer::_getAssociatorNamesResponseMessage( |
CIMBuffer& in) |
CIMBuffer& in, |
|
bool binaryResponse) |
{ | { |
XmlEntry entry; |
CIMAssociatorNamesResponseMessage* msg; |
Array<CIMObjectPath> objectNames; |
|
| |
if (!in.getObjectPathA(objectNames)) |
msg = new CIMAssociatorNamesResponseMessage(String::EMPTY, |
return false; |
CIMException(), QueueIdStack()); |
| |
return new CIMAssociatorNamesResponseMessage( |
CIMResponseData& responseData = msg->getResponseData(); |
String::EMPTY, |
|
CIMException(), |
if (binaryResponse) |
QueueIdStack(), |
{ |
objectNames); |
if (!responseData.setBinary(in)) |
|
{ |
|
delete(msg); |
|
return 0; |
|
} |
|
} |
|
else |
|
{ |
|
if (!responseData.setXml(in)) |
|
{ |
|
delete(msg); |
|
return 0; |
|
} |
|
} |
|
|
|
return msg; |
} | } |
| |
CIMReferencesResponseMessage* | CIMReferencesResponseMessage* |
CIMBinMsgDeserializer::_getReferencesResponseMessage( | CIMBinMsgDeserializer::_getReferencesResponseMessage( |
CIMBuffer& in) |
CIMBuffer& in, |
|
bool binaryResponse) |
{ | { |
XmlEntry entry; |
CIMReferencesResponseMessage* msg; |
Array<CIMObject> cimObjects; |
|
| |
if (!in.getObjectA(cimObjects)) |
msg = new CIMReferencesResponseMessage(String::EMPTY, |
return false; |
CIMException(), QueueIdStack()); |
| |
return new CIMReferencesResponseMessage( |
CIMResponseData& responseData = msg->getResponseData(); |
String::EMPTY, |
|
CIMException(), |
if (binaryResponse) |
QueueIdStack(), |
{ |
cimObjects); |
if (!responseData.setBinary(in)) |
|
{ |
|
delete(msg); |
|
return 0; |
|
} |
|
} |
|
else |
|
{ |
|
if (!responseData.setXml(in)) |
|
{ |
|
delete(msg); |
|
return 0; |
|
} |
|
} |
|
|
|
return msg; |
} | } |
| |
CIMReferenceNamesResponseMessage* | CIMReferenceNamesResponseMessage* |
CIMBinMsgDeserializer::_getReferenceNamesResponseMessage( | CIMBinMsgDeserializer::_getReferenceNamesResponseMessage( |
CIMBuffer& in) |
CIMBuffer& in, |
|
bool binaryResponse) |
{ | { |
XmlEntry entry; |
CIMReferenceNamesResponseMessage* msg; |
Array<CIMObjectPath> objectNames; |
|
| |
if (!in.getObjectPathA(objectNames)) |
msg = new CIMReferenceNamesResponseMessage(String::EMPTY, |
return false; |
CIMException(), QueueIdStack()); |
| |
return new CIMReferenceNamesResponseMessage( |
CIMResponseData& responseData = msg->getResponseData(); |
String::EMPTY, |
|
CIMException(), |
if (binaryResponse) |
QueueIdStack(), |
{ |
objectNames); |
if (!responseData.setBinary(in)) |
|
{ |
|
delete(msg); |
|
return 0; |
|
} |
|
} |
|
else |
|
{ |
|
if (!responseData.setXml(in)) |
|
{ |
|
delete(msg); |
|
return 0; |
|
} |
|
} |
|
|
|
return msg; |
} | } |
| |
CIMGetPropertyResponseMessage* | CIMGetPropertyResponseMessage* |