version 1.2.2.9, 2009/10/15 15:19:25
|
version 1.2.2.10, 2009/10/20 13:21:19
|
|
|
// Binary data is just a data stream | // Binary data is just a data stream |
Array<Uint8>& CIMResponseData::getBinary() | Array<Uint8>& CIMResponseData::getBinary() |
{ | { |
// TODO: Check if the following condition might come true |
PEGASUS_DEBUG_ASSERT(_encoding == RESP_ENC_BINARY); |
// One actually should resolve everything down to binary in here ... |
|
return _binaryData; | return _binaryData; |
} | } |
| |
|
|
| |
void CIMResponseData::encodeXmlResponse(Buffer& out) | void CIMResponseData::encodeXmlResponse(Buffer& out) |
{ | { |
PEG_METHOD_ENTER(TRC_DISPATCHER, |
PEG_TRACE((TRC_XML, Tracer::LEVEL3, |
"CIMResponseData::encodeXmlResponse"); |
"CIMResponseData::encodeXmlResponse(encoding=%X,content=%X)\n", |
|
|
/* TODO: Transform into a trace statement |
|
fprintf( |
|
stderr, |
|
"encodeXmlResponse(encoding=%X,content=%X)\n", |
|
_encoding, | _encoding, |
_dataType); |
_dataType)); |
fflush(stderr); |
|
*/ |
|
| |
if (RESP_ENC_XML == (_encoding & RESP_ENC_XML)) | if (RESP_ENC_XML == (_encoding & RESP_ENC_XML)) |
{ | { |
|
|
| |
if (RESP_ENC_CIM == (_encoding & RESP_ENC_CIM)) | if (RESP_ENC_CIM == (_encoding & RESP_ENC_CIM)) |
{ | { |
// TODO: Set Marker for C++ data |
|
switch (_dataType) | switch (_dataType) |
{ | { |
case RESP_INSTNAMES: | case RESP_INSTNAMES: |
|
|
} | } |
if (RESP_ENC_SCMO == (_encoding & RESP_ENC_SCMO)) | if (RESP_ENC_SCMO == (_encoding & RESP_ENC_SCMO)) |
{ | { |
/*SCMODump dmp; |
|
dmp.dumpSCMOInstanceKeyBindings(_scmoInstances[i]); |
|
dmp.dumpInstanceProperties(_scmoInstances[i]);*/ |
|
|
|
switch (_dataType) | switch (_dataType) |
{ | { |
case RESP_INSTNAMES: | case RESP_INSTNAMES: |
|
|
} | } |
} | } |
} | } |
/* TODO: Transform into a trace statement |
|
fprintf( |
|
stderr, |
|
"After XmlWrite()\n%s", |
|
out.getData()); |
|
fflush(stderr); |
|
*/ |
|
} | } |
| |
// contrary to encodeXmlResponse this function encodes the Xml in a format | // contrary to encodeXmlResponse this function encodes the Xml in a format |
|
|
| |
void CIMResponseData::_resolveToCIM() | void CIMResponseData::_resolveToCIM() |
{ | { |
/* TODO: Transform into warning trace statement |
PEG_TRACE((TRC_XML, Tracer::LEVEL2, |
fprintf( |
"CIMResponseData::_resolveToCIM(encoding=%X,content=%X)\n", |
stderr, |
|
"_resolveToCIM(encoding=%X,content=%X)\n", |
|
_encoding, | _encoding, |
_dataType); |
_dataType)); |
fflush(stderr); |
|
*/ |
|
if (RESP_ENC_XML == (_encoding & RESP_ENC_XML)) | if (RESP_ENC_XML == (_encoding & RESP_ENC_XML)) |
{ | { |
_resolveXmlToCIM(); | _resolveXmlToCIM(); |
|
|
| |
void CIMResponseData::_resolveToSCMO() | void CIMResponseData::_resolveToSCMO() |
{ | { |
/* TODO: Transform into warning trace statement |
PEG_TRACE((TRC_XML, Tracer::LEVEL2, |
fprintf( |
"CIMResponseData::_resolveToSCMO(encoding=%X,content=%X)\n", |
stderr, |
|
"_resolveToSCMO(encoding=%X,content=%X)\n", |
|
_encoding, | _encoding, |
_dataType); |
_dataType)); |
fflush(stderr); |
|
*/ |
|
if (RESP_ENC_XML == (_encoding & RESP_ENC_XML)) | if (RESP_ENC_XML == (_encoding & RESP_ENC_XML)) |
{ | { |
_resolveXmlToSCMO(); | _resolveXmlToSCMO(); |
|
|
{ | { |
switch (_dataType) | switch (_dataType) |
{ | { |
|
// same encoding for instance names and object paths |
|
case RESP_OBJECTPATHS: |
case RESP_INSTNAMES: | case RESP_INSTNAMES: |
{ | { |
for (Uint32 i = 0; i < _referencesData.size(); i++) | for (Uint32 i = 0; i < _referencesData.size(); i++) |
|
|
} | } |
break; | break; |
} | } |
case RESP_OBJECTPATHS: |
|
{ |
|
// TODO: ???? |
|
} |
|
default: | default: |
{ | { |
PEGASUS_DEBUG_ASSERT(false); | PEGASUS_DEBUG_ASSERT(false); |
|
|
SCMOInstance CIMResponseData::_getSCMOFromCIMInstance( | SCMOInstance CIMResponseData::_getSCMOFromCIMInstance( |
const CIMInstance& cimInst) | const CIMInstance& cimInst) |
{ | { |
|
bool isDirty=false; |
const CIMObjectPath& cimPath = cimInst.getPath(); | const CIMObjectPath& cimPath = cimInst.getPath(); |
| |
const CString nameSpace = cimPath.getNameSpace().getString().getCString(); | const CString nameSpace = cimPath.getNameSpace().getString().getCString(); |
const CString className = cimPath.getClassName().getString().getCString(); | const CString className = cimPath.getClassName().getString().getCString(); |
// TODO: What do when either or both are 0 ? |
|
| |
SCMOClass * scmoClass = _getSCMOClass( | SCMOClass * scmoClass = _getSCMOClass( |
(const char*)nameSpace, | (const char*)nameSpace, |
(const char*)className); | (const char*)className); |
// TODO: What do when there is no such class ? |
// if class cannot be found we get 0 back from class cache |
|
if (0 == scmoClass) |
|
{ |
|
PEG_TRACE((TRC_XML, Tracer::LEVEL2, |
|
"In _getSCMOFromCIMInstance() could not resolve class for " |
|
"nameSpace=\"%s\", className=\"%s\"\n", |
|
(const char*) nameSpace, |
|
(const char*) className)); |
| |
|
isDirty=true; |
|
scmoClass = new SCMOClass("",""); |
|
} |
SCMOInstance scmoInst = SCMOInstance(*scmoClass, cimInst); | SCMOInstance scmoInst = SCMOInstance(*scmoClass, cimInst); |
| |
|
if (isDirty) |
|
{ |
|
scmoInst.markAsCompromised(); |
|
} |
return scmoInst; | return scmoInst; |
} | } |
| |
|
|
SCMOInstance CIMResponseData::_getSCMOFromCIMObjectPath( | SCMOInstance CIMResponseData::_getSCMOFromCIMObjectPath( |
const CIMObjectPath& cimPath) | const CIMObjectPath& cimPath) |
{ | { |
|
bool isDirty=false; |
CString nameSpace = cimPath.getNameSpace().getString().getCString(); | CString nameSpace = cimPath.getNameSpace().getString().getCString(); |
CString className = cimPath.getClassName().getString().getCString(); | CString className = cimPath.getClassName().getString().getCString(); |
| |
// TODO: What do when either or both are 0 ? |
|
|
|
SCMOClass * scmoClass = _getSCMOClass( | SCMOClass * scmoClass = _getSCMOClass( |
(const char*)nameSpace, | (const char*)nameSpace, |
(const char*)className); | (const char*)className); |
| |
// TODO: What do when there is no such class ? |
// if class cannot be found we get 0 back from class cache |
|
if (0 == scmoClass) |
|
{ |
|
PEG_TRACE((TRC_XML, Tracer::LEVEL2, |
|
"In _getSCMOFromCIMObjectPath() could not resolve class for " |
|
"nameSpace=\"%s\", className=\"%s\"\n", |
|
(const char*) nameSpace, |
|
(const char*) className)); |
| |
// TODO: Interrogate Thilo about need to call new |
isDirty=true; |
|
scmoClass = new SCMOClass("",""); |
|
} |
SCMOInstance scmoRef = SCMOInstance(*scmoClass, cimPath); | SCMOInstance scmoRef = SCMOInstance(*scmoClass, cimPath); |
|
if (isDirty) |
|
{ |
|
scmoRef.markAsCompromised(); |
|
} |
return scmoRef; | return scmoRef; |
} | } |
| |