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

Diff for /pegasus/src/Pegasus/Common/BinaryCodec.cpp between version 1.3 and 1.9

version 1.3, 2008/12/01 17:49:47 version 1.9, 2009/07/08 13:48:26
Line 94 
Line 94 
     OP_Count     OP_Count
 }; };
  
 struct CIMBufferReleaser  
 {  
     CIMBufferReleaser(CIMBuffer& buf) : _buf(buf)  
     {  
     }  
   
     ~CIMBufferReleaser()  
     {  
         _buf.release();  
     }  
   
 private:  
     CIMBuffer& _buf;  
 };  
   
 static Operation _NameToOp(const CIMName& name) static Operation _NameToOp(const CIMName& name)
 { {
     const String& s = name.getString();     const String& s = name.getString();
Line 278 
Line 263 
  
     Uint32 flags = 0;     Uint32 flags = 0;
  
     if (msg->localOnly)  
         flags |= LOCAL_ONLY;  
   
     if (msg->deepInheritance)     if (msg->deepInheritance)
         flags |= DEEP_INHERITANCE;         flags |= DEEP_INHERITANCE;
  
Line 341 
Line 323 
             nameSpace,             nameSpace,
             className,             className,
             deepInheritance,             deepInheritance,
             false,    // Bug 1985 localOnly is deprecated  
 #ifdef PEGASUS_DISABLE_INSTANCE_QUALIFIERS #ifdef PEGASUS_DISABLE_INSTANCE_QUALIFIERS
             false,             false,
 #else #else
Line 360 
Line 341 
  
 static void _encodeEnumerateInstancesResponseBody( static void _encodeEnumerateInstancesResponseBody(
     CIMBuffer& out,     CIMBuffer& out,
     CIMEnumerateInstancesResponseMessage* msg,      CIMInstancesResponseData& data,
     CIMName& name)     CIMName& name)
 { {
     /* See ../Server/CIMOperationResponseEncoder.cpp */     /* See ../Server/CIMOperationResponseEncoder.cpp */
Line 368 
Line 349 
     static const CIMName NAME("EnumerateInstances");     static const CIMName NAME("EnumerateInstances");
     name = NAME;     name = NAME;
  
     if (msg->resolveCallback && msg->binaryEncoding)      data.encodeBinaryResponse(out);
     {  
         const Array<Uint8>& data = msg->binaryData;  
         out.putBytes((char*)data.getData(), data.size());  
     }  
     else  
     {  
         out.putInstanceA(msg->getNamedInstances(), false);  
     }  
 } }
  
 static CIMEnumerateInstancesResponseMessage* _decodeEnumerateInstancesResponse( static CIMEnumerateInstancesResponseMessage* _decodeEnumerateInstancesResponse(
Line 384 
Line 357 
     Uint32 flags,     Uint32 flags,
     const String& messageId)     const String& messageId)
 { {
     /* See ../Client/CIMOperationResponseDecoder.cpp */  
   
     Array<CIMInstance> instances;  
   
     while (in.more())  
     {  
         Array<CIMInstance> tmp;  
   
         if (!in.getInstanceA(tmp))  
             return 0;  
   
         instances.append(tmp.getData(), tmp.size());  
     }  
   
     CIMEnumerateInstancesResponseMessage* msg;     CIMEnumerateInstancesResponseMessage* msg;
     CIMException cimException;     CIMException cimException;
  
Line 406 
Line 365 
         cimException,         cimException,
         QueueIdStack());         QueueIdStack());
  
     msg->setNamedInstances(instances);      // Instead of resolving the binary data right here, we delegate this
       // to a later point in time when the data is actually retrieved through
       // a call to getNamedInstances, which is going to resolve the binary
       // data when the callback function is registered.
       // This allows an alternate client implementation to gain direct access
       // to the binary data and pass this for example to the JNI implementation
       // of the JSR48 CIM Client for Java.
       CIMInstancesResponseData& responseData = msg->getResponseData();
       responseData.setBinaryCimInstances(in,false);
   
     msg->binaryRequest = true;     msg->binaryRequest = true;
     return msg;     return msg;
 } }
Line 556 
Line 524 
             messageId,             messageId,
             nameSpace,             nameSpace,
             instanceName,             instanceName,
             false,    // Bug 1985 localOnly is deprecated  
 #ifdef PEGASUS_DISABLE_INSTANCE_QUALIFIERS #ifdef PEGASUS_DISABLE_INSTANCE_QUALIFIERS
             false,             false,
 #else #else
Line 578 
Line 545 
     Uint32 flags,     Uint32 flags,
     const String& messageId)     const String& messageId)
 { {
     CIMInstance instance;  
   
     if (!in.getInstance(instance))  
         return 0;  
   
     CIMGetInstanceResponseMessage* msg;     CIMGetInstanceResponseMessage* msg;
     CIMException cimException;     CIMException cimException;
  
Line 591 
Line 553 
         cimException,         cimException,
         QueueIdStack());         QueueIdStack());
  
     msg->setCimInstance(instance);      // Instead of resolving the binary data right here, we delegate this
       // to a later point in time when the data is actually retrieved through
       // a call to getNamedInstances, which is going to resolve the binary
       // data when the callback function is registered.
       // This allows an alternate client implementation to gain direct access
       // to the binary data and pass this for example to the JNI implementation
       // of the JSR48 CIM Client for Java.
       CIMInstanceResponseData& responseData = msg->getResponseData();
       responseData.setBinaryCimInstance(in,false);
   
     msg->binaryRequest = true;     msg->binaryRequest = true;
     return msg;     return msg;
 } }
Line 608 
Line 579 
  
     Uint32 flags = 0;     Uint32 flags = 0;
  
     if (msg->localOnly)  
         flags |= LOCAL_ONLY;  
   
     if (msg->includeQualifiers)     if (msg->includeQualifiers)
         flags |= INCLUDE_QUALIFIERS;         flags |= INCLUDE_QUALIFIERS;
  
Line 631 
Line 599 
  
 static void _encodeGetInstanceResponseBody( static void _encodeGetInstanceResponseBody(
     CIMBuffer& out,     CIMBuffer& out,
     CIMGetInstanceResponseMessage* msg,      CIMInstanceResponseData& data,
     CIMName& name)     CIMName& name)
 { {
     static const CIMName NAME("GetInstance");     static const CIMName NAME("GetInstance");
     name = NAME;     name = NAME;
  
     if (msg->resolveCallback && msg->binaryEncoding)      data.encodeBinaryResponse(out);
     {  
         const Array<Uint8>& data = msg->binaryData;  
         out.putBytes((char*)data.getData(), data.size());  
     }  
     else  
     {  
         out.putInstance(msg->getCimInstance(), false, false);  
     }  
 } }
  
 //============================================================================== //==============================================================================
Line 1096 
Line 1056 
  
 static void _encodeAssociatorsResponseBody( static void _encodeAssociatorsResponseBody(
     CIMBuffer& out,     CIMBuffer& out,
     CIMAssociatorsResponseMessage* msg,      CIMObjectsResponseData& data,
     CIMName& name)     CIMName& name)
 { {
     /* See ../Server/CIMOperationResponseEncoder.cpp */     /* See ../Server/CIMOperationResponseEncoder.cpp */
Line 1104 
Line 1064 
     static const CIMName NAME("Associators");     static const CIMName NAME("Associators");
     name = NAME;     name = NAME;
  
     out.putObjectA(msg->cimObjects);  
       data.encodeBinaryResponse(out);
 } }
  
 static CIMAssociatorsResponseMessage* _decodeAssociatorsResponse( static CIMAssociatorsResponseMessage* _decodeAssociatorsResponse(
Line 1112 
Line 1073 
     Uint32 flags,     Uint32 flags,
     const String& messageId)     const String& messageId)
 { {
     /* See ../Client/CIMOperationResponseDecoder.cpp */  
   
     Array<CIMObject> cimObjects;  
   
     while (in.more())  
     {  
         Array<CIMObject> tmp;  
   
         if (!in.getObjectA(tmp))  
             return 0;  
   
         cimObjects.append(tmp.getData(), tmp.size());  
     }  
   
     CIMAssociatorsResponseMessage* msg;     CIMAssociatorsResponseMessage* msg;
     CIMException cimException;     CIMException cimException;
  
     msg = new CIMAssociatorsResponseMessage(     msg = new CIMAssociatorsResponseMessage(
         messageId,         messageId,
         cimException,         cimException,
         QueueIdStack(),          QueueIdStack());
         cimObjects);  
       // Instead of resolving the binary data right here, we delegate this
       // to a later point in time when the data is actually retrieved through
       // a call to getNamedInstances, which is going to resolve the binary
       // data when the callback function is registered.
       // This allows an alternate client implementation to gain direct access
       // to the binary data and pass this for example to the JNI implementation
       // of the JSR48 CIM Client for Java.
       CIMObjectsResponseData& responseData = msg->getResponseData();
       responseData.setBinaryCimObjects(in,false);
  
     msg->binaryRequest = true;     msg->binaryRequest = true;
     return msg;     return msg;
Line 3107 
Line 3063 
  
 static void _encodeExecQueryResponseBody( static void _encodeExecQueryResponseBody(
     CIMBuffer& out,     CIMBuffer& out,
     CIMExecQueryResponseMessage* msg,      CIMObjectsResponseData& data,
     CIMName& name)     CIMName& name)
 { {
     /* See ../Server/CIMOperationResponseEncoder.cpp */     /* See ../Server/CIMOperationResponseEncoder.cpp */
Line 3115 
Line 3071 
     static const CIMName NAME("ExecQuery");     static const CIMName NAME("ExecQuery");
     name = NAME;     name = NAME;
  
     out.putObjectA(msg->cimObjects, false);      data.encodeBinaryResponse(out);
 } }
  
 static CIMExecQueryResponseMessage* _decodeExecQueryResponse( static CIMExecQueryResponseMessage* _decodeExecQueryResponse(
Line 3123 
Line 3079 
     Uint32 flags,     Uint32 flags,
     const String& messageId)     const String& messageId)
 { {
     /* See ../Client/CIMOperationResponseDecoder.cpp */  
   
     Array<CIMObject> cimObjects;  
   
     while (in.more())  
     {  
         Array<CIMObject> tmp;  
   
         if (!in.getObjectA(tmp))  
             return 0;  
   
         cimObjects.append(tmp.getData(), tmp.size());  
     }  
   
     CIMExecQueryResponseMessage* msg;     CIMExecQueryResponseMessage* msg;
     CIMException cimException;     CIMException cimException;
  
     msg = new CIMExecQueryResponseMessage(     msg = new CIMExecQueryResponseMessage(
         messageId,         messageId,
         cimException,         cimException,
         QueueIdStack(),          QueueIdStack());
         cimObjects);  
       // Instead of resolving the binary data right here, we delegate this
       // to a later point in time when the data is actually retrieved through
       // a call to getNamedInstances, which is going to resolve the binary
       // data when the callback function is registered.
       // This allows an alternate client implementation to gain direct access
       // to the binary data and pass this for example to the JNI implementation
       // of the JSR48 CIM Client for Java.
       CIMObjectsResponseData& responseData = msg->getResponseData();
       responseData.setBinaryCimObjects(in,false);
  
     msg->binaryRequest = true;     msg->binaryRequest = true;
     return msg;     return msg;
Line 3326 
Line 3277 
     CIMBuffer buf((char*)in.getData(), in.size());     CIMBuffer buf((char*)in.getData(), in.size());
     CIMBufferReleaser buf_(buf);     CIMBufferReleaser buf_(buf);
  
       return decodeResponse(buf);
   }
   
   CIMResponseMessage* BinaryCodec::decodeResponse(
       CIMBuffer& buf)
   {
     // Turn on validation:     // Turn on validation:
 #if defined(ENABLE_VALIDATION) #if defined(ENABLE_VALIDATION)
     buf.setValidate(true);     buf.setValidate(true);
Line 3697 
Line 3654 
     {     {
         case CIM_ENUMERATE_INSTANCES_RESPONSE_MESSAGE:         case CIM_ENUMERATE_INSTANCES_RESPONSE_MESSAGE:
         {         {
             _encodeEnumerateInstancesResponseBody(buf,              _encodeEnumerateInstancesResponseBody(
                 (CIMEnumerateInstancesResponseMessage*)msg, name);                  buf,
                   ((CIMEnumerateInstancesResponseMessage*)msg)->getResponseData(),
                   name);
             break;             break;
         }         }
  
Line 3711 
Line 3670 
  
         case CIM_GET_INSTANCE_RESPONSE_MESSAGE:         case CIM_GET_INSTANCE_RESPONSE_MESSAGE:
         {         {
             _encodeGetInstanceResponseBody(buf,              _encodeGetInstanceResponseBody(
                 (CIMGetInstanceResponseMessage*)msg, name);                  buf,
                   ((CIMGetInstanceResponseMessage*)msg)->getResponseData(),
                   name);
             break;             break;
         }         }
  
Line 3739 
Line 3700 
  
         case CIM_ASSOCIATORS_RESPONSE_MESSAGE:         case CIM_ASSOCIATORS_RESPONSE_MESSAGE:
         {         {
             _encodeAssociatorsResponseBody(buf,              _encodeAssociatorsResponseBody(
                 (CIMAssociatorsResponseMessage*)msg, name);                  buf,
                   ((CIMAssociatorsResponseMessage*)msg)->getResponseData(),
                   name);
             break;             break;
         }         }
  
Line 3858 
Line 3821 
  
         case CIM_EXEC_QUERY_RESPONSE_MESSAGE:         case CIM_EXEC_QUERY_RESPONSE_MESSAGE:
         {         {
             _encodeExecQueryResponseBody(buf,              _encodeExecQueryResponseBody(
                 (CIMExecQueryResponseMessage*)msg, name);                  buf,
                   ((CIMExecQueryResponseMessage*)msg)->getResponseData(),
                   name);
             break;             break;
         }         }
  


Legend:
Removed from v.1.3  
changed lines
  Added in v.1.9

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2