version 1.96.2.10, 2014/05/29 23:55:34
|
version 1.96.2.11, 2014/06/01 19:26:52
|
|
|
parser, messageId, isEmptyTag); | parser, messageId, isEmptyTag); |
} | } |
else if (System::strcasecmp( | else if (System::strcasecmp( |
|
iMethodResponseName, "OpenQueryInstances") == 0) |
|
{ |
|
response = _decodeOpenQueryInstancesResponse( |
|
parser, messageId, isEmptyTag); |
|
} |
|
else if (System::strcasecmp( |
iMethodResponseName, "PullInstancesWithPath") == 0) | iMethodResponseName, "PullInstancesWithPath") == 0) |
{ | { |
response = _decodePullInstancesWithPathResponse( | response = _decodePullInstancesWithPathResponse( |
|
|
else if (System::strcasecmp( | else if (System::strcasecmp( |
iMethodResponseName, "PullInstances") == 0) | iMethodResponseName, "PullInstances") == 0) |
{ | { |
response = _decodePullInstancesWithPathResponse( |
response = _decodePullInstancesResponse( |
parser, messageId, isEmptyTag); | parser, messageId, isEmptyTag); |
} | } |
else if (System::strcasecmp( | else if (System::strcasecmp( |
|
|
return msg; | return msg; |
} | } |
| |
|
CIMOpenQueryInstancesResponseMessage* |
|
CIMOperationResponseDecoder::_decodeOpenQueryInstancesResponse( |
|
XmlParser& parser, |
|
const String& messageId, |
|
Boolean isEmptyImethodresponseTag) |
|
{ |
|
CIMException cimException; |
|
Array<CIMInstance> instances; |
|
CIMClass queryResultClass; |
|
Boolean endOfSequence = true; |
|
String enumerationContext = String::EMPTY; |
|
|
|
if (XmlReader::getErrorElement(parser, cimException)) |
|
{ |
|
return new CIMOpenQueryInstancesResponseMessage( |
|
messageId, |
|
cimException, |
|
CIMClass(), |
|
QueueIdStack(), |
|
endOfSequence, |
|
enumerationContext); |
|
} |
|
// EXP_PULL error out if response empty because either |
|
// enumerationContext or endOfSequence is required. Create |
|
// missing Parameter error here. |
|
if (isEmptyImethodresponseTag) |
|
{ |
|
throw PEGASUS_CIM_EXCEPTION(CIM_ERR_INVALID_PARAMETER, |
|
"Return Parameters endOfSequence" |
|
"and/or enumerationContext required."); |
|
} |
|
|
|
_decodeGetInstancesElement(parser, instances); |
|
|
|
// Get the OUT parameters (endOfSequence and enumerationContext) |
|
_decodeOpenResponseParamValues(parser, endOfSequence, enumerationContext); |
|
|
|
CIMOpenQueryInstancesResponseMessage* msg = |
|
new CIMOpenQueryInstancesResponseMessage( |
|
messageId, |
|
cimException, |
|
queryResultClass, |
|
QueueIdStack(), |
|
endOfSequence, |
|
enumerationContext); |
|
|
|
msg->getResponseData().setInstances(instances); |
|
return msg; |
|
} |
|
|
CIMPullInstancesWithPathResponseMessage* | CIMPullInstancesWithPathResponseMessage* |
CIMOperationResponseDecoder::_decodePullInstancesWithPathResponse( | CIMOperationResponseDecoder::_decodePullInstancesWithPathResponse( |
XmlParser& parser, | XmlParser& parser, |
|
|
count); | count); |
} | } |
| |
CIMOpenQueryInstancesResponseMessage* |
|
CIMOperationResponseDecoder::_decodeOpenQueryInstancesResponse( |
|
XmlParser& parser, |
|
const String& messageId, |
|
Boolean isEmptyImethodresponseTag) |
|
{ |
|
CIMException cimException; |
|
Array<CIMInstance> instances; |
|
Boolean endOfSequence = true; |
|
String enumerationContext = String::EMPTY; |
|
|
|
if (XmlReader::getErrorElement(parser, cimException)) |
|
{ |
|
return new CIMOpenQueryInstancesResponseMessage( |
|
messageId, |
|
cimException, |
|
CIMClass(), |
|
QueueIdStack(), |
|
endOfSequence, |
|
enumerationContext); |
|
} |
|
|
|
if (isEmptyImethodresponseTag) |
|
{ |
|
throw PEGASUS_CIM_EXCEPTION(CIM_ERR_INVALID_PARAMETER, |
|
"Return Parameters endOfSequence" |
|
"and/or enumerationContext required."); |
|
} |
|
|
|
//// KS_TODO this should be instance without path. We do not have |
|
//// function for that in XmlReader so we are not compliant. |
|
/// KS_TODO modify whole OpenQuery operation for instance w/o path |
|
_decodeGetInstancesWithPathElement(parser, instances); |
|
|
|
// Get the OUT parameters (endOfSequence and enumerationContext) |
|
_decodeOpenResponseParamValues(parser, endOfSequence, enumerationContext); |
|
|
|
CIMOpenQueryInstancesResponseMessage* msg; |
|
|
|
msg = new CIMOpenQueryInstancesResponseMessage( |
|
messageId, |
|
cimException, |
|
CIMClass(), |
|
QueueIdStack(), |
|
endOfSequence, |
|
enumerationContext); |
|
|
|
msg->getResponseData().setInstances(instances); |
|
return msg; |
|
} |
|
//EXP_PULL_END | //EXP_PULL_END |
| |
PEGASUS_NAMESPACE_END | PEGASUS_NAMESPACE_END |