(file) Return to CIMBinMsgDeserializer.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/CIMBinMsgDeserializer.cpp between version 1.8 and 1.9.2.5

version 1.8, 2009/05/27 05:56:25 version 1.9.2.5, 2009/11/18 11:30:13
Line 405 
Line 405 
             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);
Line 417 
Line 417 
             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);
Line 1570 
Line 1570 
         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(
Line 1778 
Line 1643 
     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;  
   
         Array<ArraySint8> instancesData;  
         Array<ArraySint8> referencesData;  
         Array<String> hostsData;  
         Array<CIMNamespaceName> nameSpacesData;  
   
         for (Uint32 i = 0; i < count; i++)  
         {  
             Array<Sint8> inst;  
             Array<Sint8> ref;  
             CIMNamespaceName ns;  
             String host;  
   
             if (!in.getSint8A(inst))  
                 return 0;  
   
             if (!in.getSint8A(ref))  
                 return 0;  
   
             if (!in.getString(host))  
                 return 0;  
   
             if (!in.getNamespaceName(ns))  
                 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* CIMEnumerateInstanceNamesResponseMessage*
 CIMBinMsgDeserializer::_getEnumerateInstanceNamesResponseMessage( CIMBinMsgDeserializer::_getEnumerateInstanceNamesResponseMessage(
     CIMBuffer& in)      CIMBuffer& in,
       bool binaryResponse)
 { {
     XmlEntry entry;      CIMEnumerateInstanceNamesResponseMessage* msg;
     Array<CIMObjectPath> instanceNames;  
   
     if (!in.getObjectPathA(instanceNames))  
         return false;  
  
     return new CIMEnumerateInstanceNamesResponseMessage(      msg = new CIMEnumerateInstanceNamesResponseMessage(String::EMPTY,
         String::EMPTY,  
         CIMException(),         CIMException(),
         QueueIdStack(),                                                         QueueIdStack());
         instanceNames);  
       CIMResponseData& responseData = msg->getResponseData();
   
       if (!responseData.setBinary(in))
       {
           delete(msg);
           return 0;
       }
   
       return msg;
 } }
  
 CIMExecQueryResponseMessage* CIMExecQueryResponseMessage*
 CIMBinMsgDeserializer::_getExecQueryResponseMessage( CIMBinMsgDeserializer::_getExecQueryResponseMessage(
     CIMBuffer& in)      CIMBuffer& in,
       bool binaryResponse)
 { {
     XmlEntry entry;      CIMExecQueryResponseMessage* msg;
     Array<CIMObject> cimObjects;  
  
     if (!in.getObjectA(cimObjects))      msg = new CIMExecQueryResponseMessage(String::EMPTY,
         return false;          CIMException(), QueueIdStack());
  
     return new CIMExecQueryResponseMessage(      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;
 } }
  
 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 (!responseData.setBinary(in))
         QueueIdStack(),      {
         objectNames);          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 (!responseData.setBinary(in))
         QueueIdStack(),      {
         cimObjects);          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 (!responseData.setBinary(in))
         QueueIdStack(),      {
         objectNames);          delete(msg);
           return 0;
       }
   
       return msg;
 } }
  
 CIMGetPropertyResponseMessage* CIMGetPropertyResponseMessage*
Line 2063 
Line 1931 
 { {
     XmlEntry entry;     XmlEntry entry;
     CIMValue genericValue;     CIMValue genericValue;
     Uint16 genericUint16;  
     Array<Uint16> operationalStatus;     Array<Uint16> operationalStatus;
  
     if (!in.getUint16A(operationalStatus))     if (!in.getUint16A(operationalStatus))
Line 2082 
Line 1949 
 { {
     XmlEntry entry;     XmlEntry entry;
     CIMValue genericValue;     CIMValue genericValue;
     Uint16 genericUint16;  
     Array<Uint16> operationalStatus;     Array<Uint16> operationalStatus;
  
     if (!in.getUint16A(operationalStatus))     if (!in.getUint16A(operationalStatus))


Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9.2.5

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2