(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.12.2.2 and 1.12.2.4

version 1.12.2.2, 2011/01/16 21:11:31 version 1.12.2.4, 2012/02/15 17:47:06
Line 92 
Line 92 
     OP_DeleteQualifier,     OP_DeleteQualifier,
     OP_EnumerateQualifiers,     OP_EnumerateQualifiers,
     OP_InvokeMethod,     OP_InvokeMethod,
   // EXP_PULL_BEGIN
     OP_OpenEnumerateInstances,     OP_OpenEnumerateInstances,
     OP_OpenEnumerateInstancePaths,     OP_OpenEnumerateInstancePaths,
     OP_OpenReferenceInstances,     OP_OpenReferenceInstances,
Line 102 
Line 103 
     OP_PullInstancePaths,     OP_PullInstancePaths,
     OP_CloseEnumeration,     OP_CloseEnumeration,
     OP_EnumerationCount,     OP_EnumerationCount,
   // EXP_PULL_END
     OP_Count     OP_Count
 }; };
  
Line 122 
Line 124 
                 return OP_CreateInstance;                 return OP_CreateInstance;
             if (_EQUAL(s, "CreateClass"))             if (_EQUAL(s, "CreateClass"))
                 return OP_CreateClass;                 return OP_CreateClass;
   //EXP_PULL_BEGIN
             if (_EQUAL(s, "CloseEnumeration"))             if (_EQUAL(s, "CloseEnumeration"))
                 return OP_CloseEnumeration;                 return OP_CloseEnumeration;
   // EXP_PULL_END
             break;             break;
         case 'D':         case 'D':
             if (_EQUAL(s, "DeleteInstance"))             if (_EQUAL(s, "DeleteInstance"))
Line 169 
Line 173 
             if (_EQUAL(s, "ModifyClass"))             if (_EQUAL(s, "ModifyClass"))
                 return OP_ModifyClass;                 return OP_ModifyClass;
             break;             break;
   // EXP_PULL_BEGIN
         case 'O':         case 'O':
             if (_EQUAL(s, "OpenEnumerateInstances"))             if (_EQUAL(s, "OpenEnumerateInstances"))
                 return OP_OpenEnumerateInstances;                 return OP_OpenEnumerateInstances;
Line 189 
Line 194 
             if (_EQUAL(s, "PullInstancePaths"))             if (_EQUAL(s, "PullInstancePaths"))
                 return OP_PullInstancePaths;                 return OP_PullInstancePaths;
             break;             break;
   // EXP_PULL_END
         case 'R':         case 'R':
             if (_EQUAL(s, "References"))             if (_EQUAL(s, "References"))
                 return OP_References;                 return OP_References;
Line 375 
Line 381 
 static void _encodeEnumerateInstancesResponseBody( static void _encodeEnumerateInstancesResponseBody(
     CIMBuffer& out,     CIMBuffer& out,
     CIMResponseData& data,     CIMResponseData& data,
     CIMName& name)      CIMName& name,
       bool isFirst)
 { {
     /* See ../Server/CIMOperationResponseEncoder.cpp */     /* See ../Server/CIMOperationResponseEncoder.cpp */
  
     static const CIMName NAME("EnumerateInstances");     static const CIMName NAME("EnumerateInstances");
     name = NAME;     name = NAME;
  
       // Only write the property list on the first provider response
       if (isFirst)
       {
           // [PROPERTY-LIST]
           out.putPropertyList(data.getPropertyList());
       }
     data.encodeBinaryResponse(out);     data.encodeBinaryResponse(out);
 } }
  
Line 405 
Line 418 
     // to the binary data and pass this for example to the JNI implementation     // to the binary data and pass this for example to the JNI implementation
     // of the JSR48 CIM Client for Java.     // of the JSR48 CIM Client for Java.
     CIMResponseData& responseData = msg->getResponseData();     CIMResponseData& responseData = msg->getResponseData();
   
       // [PROPERTY-LIST]
       CIMPropertyList propertyList;
       if (!in.getPropertyList(propertyList))
       {
           return 0;
       }
       responseData.setPropertyList(propertyList);
   
     responseData.setRemainingBinaryData(in);     responseData.setRemainingBinaryData(in);
  
     msg->binaryRequest=true;     msg->binaryRequest=true;
Line 3051 
Line 3073 
     msg->binaryRequest = true;     msg->binaryRequest = true;
     return msg;     return msg;
 } }
 // KS_PULL_BEGIN  // EXP_PULL_BEGIN
 //============================================================================== //==============================================================================
 // //
 // OpenEnumerateInstances // OpenEnumerateInstances
Line 3115 
Line 3137 
     Boolean continueOnError = flags & CONTINUE_ON_ERROR;     Boolean continueOnError = flags & CONTINUE_ON_ERROR;
  
     // [NAMESPACE]     // [NAMESPACE]
   
     CIMNamespaceName nameSpace;     CIMNamespaceName nameSpace;
     if (!in.getNamespaceName(nameSpace))     if (!in.getNamespaceName(nameSpace))
         return 0;         return 0;
Line 3165 
Line 3186 
  
     return request.release();     return request.release();
 } }
   
 // For the pull Response messages the interface is the message and the, // For the pull Response messages the interface is the message and the,
 // not just the responseData. // not just the responseData.
 static void _encodeOpenEnumerateInstancesResponseBody( static void _encodeOpenEnumerateInstancesResponseBody(
Line 3229 
Line 3251 
     msg->binaryRequest=true;     msg->binaryRequest=true;
     return msg;     return msg;
 } }
   
 //============================================================================== //==============================================================================
 // //
 // OpenEnumerateInstancesPaths // OpenEnumerateInstancesPaths
Line 3624 
Line 3647 
     Uint32 flags,     Uint32 flags,
     const String& messageId)     const String& messageId)
 { {
     /* See ../Server/CIMOperationRequestDecoder.cpp */      /* See ../
   Server/CIMOperationRequestDecoder.cpp */
  
     STAT_GETSTARTTIME     STAT_GETSTARTTIME
  
Line 4615 
Line 4639 
     return msg;     return msg;
 } }
  
 // KS_PULL_END  // EXP_PULL_END
  
  
 //============================================================================== //==============================================================================
Line 4679 
Line 4703 
 //============================================================================== //==============================================================================
  
 CIMOperationRequestMessage* BinaryCodec::decodeRequest( CIMOperationRequestMessage* BinaryCodec::decodeRequest(
     const Buffer& in,      CIMBuffer& in,
     Uint32 queueId,     Uint32 queueId,
     Uint32 returnQueueId)     Uint32 returnQueueId)
 { {
     CIMBuffer buf((char*)in.getData(), in.size());  
     CIMBufferReleaser buf_(buf);  
  
     // Turn on validation:     // Turn on validation:
 #if defined(ENABLE_VALIDATION) #if defined(ENABLE_VALIDATION)
     buf.setValidate(true);      in.setValidate(true);
 #endif #endif
  
     Uint32 flags;     Uint32 flags;
     String messageId;     String messageId;
     Operation operation;     Operation operation;
  
     if (!_getHeader(buf, flags, messageId, operation))  
       if (!_getHeader(in, flags, messageId, operation))
     {     {
         return 0;         return 0;
     }     }
Line 4704 
Line 4727 
     {     {
         case OP_EnumerateInstances:         case OP_EnumerateInstances:
             return _decodeEnumerateInstancesRequest(             return _decodeEnumerateInstancesRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
         case OP_EnumerateInstanceNames:         case OP_EnumerateInstanceNames:
             return _decodeEnumerateInstanceNamesRequest(             return _decodeEnumerateInstanceNamesRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_GetInstance:         case OP_GetInstance:
             return _decodeGetInstanceRequest(             return _decodeGetInstanceRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
         case OP_CreateInstance:         case OP_CreateInstance:
             return _decodeCreateInstanceRequest(             return _decodeCreateInstanceRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_ModifyInstance:         case OP_ModifyInstance:
             return _decodeModifyInstanceRequest(             return _decodeModifyInstanceRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
         case OP_DeleteInstance:         case OP_DeleteInstance:
             return _decodeDeleteInstanceRequest(             return _decodeDeleteInstanceRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_Associators:         case OP_Associators:
             return _decodeAssociatorsRequest(             return _decodeAssociatorsRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
         case OP_AssociatorNames:         case OP_AssociatorNames:
             return _decodeAssociatorNamesRequest(             return _decodeAssociatorNamesRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_References:         case OP_References:
             return _decodeReferencesRequest(             return _decodeReferencesRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
         case OP_ReferenceNames:         case OP_ReferenceNames:
             return _decodeReferenceNamesRequest(             return _decodeReferenceNamesRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_GetClass:         case OP_GetClass:
             return _decodeGetClassRequest(             return _decodeGetClassRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
         case OP_EnumerateClasses:         case OP_EnumerateClasses:
             return _decodeEnumerateClassesRequest(             return _decodeEnumerateClassesRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
         case OP_EnumerateClassNames:         case OP_EnumerateClassNames:
             return _decodeEnumerateClassNamesRequest(             return _decodeEnumerateClassNamesRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
         case OP_CreateClass:         case OP_CreateClass:
             return _decodeCreateClassRequest(             return _decodeCreateClassRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_DeleteClass:         case OP_DeleteClass:
             return _decodeDeleteClassRequest(             return _decodeDeleteClassRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_ModifyClass:         case OP_ModifyClass:
             return _decodeModifyClassRequest(             return _decodeModifyClassRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_SetQualifier:         case OP_SetQualifier:
             return _decodeSetQualifierRequest(             return _decodeSetQualifierRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_GetQualifier:         case OP_GetQualifier:
             return _decodeGetQualifierRequest(             return _decodeGetQualifierRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_DeleteQualifier:         case OP_DeleteQualifier:
             return _decodeDeleteQualifierRequest(             return _decodeDeleteQualifierRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_EnumerateQualifiers:         case OP_EnumerateQualifiers:
             return _decodeEnumerateQualifiersRequest(             return _decodeEnumerateQualifiersRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_GetProperty:         case OP_GetProperty:
            return _decodeGetPropertyRequest(            return _decodeGetPropertyRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_SetProperty:         case OP_SetProperty:
            return _decodeSetPropertyRequest(            return _decodeSetPropertyRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_InvokeMethod:         case OP_InvokeMethod:
            return _decodeInvokeMethodRequest(            return _decodeInvokeMethodRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
         case OP_ExecQuery:         case OP_ExecQuery:
            return _decodeExecQueryRequest(            return _decodeExecQueryRequest(
                 buf, queueId, returnQueueId, messageId);                  in, queueId, returnQueueId, messageId);
   //EXP_PULL_BEGIN
         case OP_OpenEnumerateInstances:         case OP_OpenEnumerateInstances:
             return _decodeOpenEnumerateInstancesRequest(             return _decodeOpenEnumerateInstancesRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
             break;             break;
         case OP_OpenEnumerateInstancePaths:         case OP_OpenEnumerateInstancePaths:
             return _decodeOpenEnumerateInstancePathsRequest(             return _decodeOpenEnumerateInstancePathsRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
             break;             break;
         case OP_OpenReferenceInstances:         case OP_OpenReferenceInstances:
             return _decodeOpenReferenceInstancesRequest(             return _decodeOpenReferenceInstancesRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
             break;             break;
         case OP_OpenReferenceInstancePaths:         case OP_OpenReferenceInstancePaths:
             return _decodeOpenReferenceInstancePathsRequest(             return _decodeOpenReferenceInstancePathsRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
             break;             break;
         case OP_OpenAssociatorInstances:         case OP_OpenAssociatorInstances:
             return _decodeOpenAssociatorInstancesRequest(             return _decodeOpenAssociatorInstancesRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
             break;             break;
         case OP_OpenAssociatorInstancePaths:         case OP_OpenAssociatorInstancePaths:
             return _decodeOpenAssociatorInstancePathsRequest(             return _decodeOpenAssociatorInstancePathsRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
             break;             break;
         case OP_PullInstancesWithPath:         case OP_PullInstancesWithPath:
             return _decodePullInstancesWithPathRequest(             return _decodePullInstancesWithPathRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
             break;             break;
         case OP_PullInstancePaths:         case OP_PullInstancePaths:
             return _decodePullInstancePathsRequest(             return _decodePullInstancePathsRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
             break;             break;
         case OP_CloseEnumeration:         case OP_CloseEnumeration:
             return _decodeCloseEnumerationRequest(             return _decodeCloseEnumerationRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
             break;             break;
         case OP_EnumerationCount:         case OP_EnumerationCount:
             return _decodeEnumerationCountRequest(             return _decodeEnumerationCountRequest(
                 buf, queueId, returnQueueId, flags, messageId);                  in, queueId, returnQueueId, flags, messageId);
             break;             break;
   //EXP_PULL_END
         default:         default:
             // Unexpected message type             // Unexpected message type
             PEGASUS_ASSERT(0);             PEGASUS_ASSERT(0);
Line 4840 
Line 4864 
 CIMResponseMessage* BinaryCodec::decodeResponse( CIMResponseMessage* BinaryCodec::decodeResponse(
     CIMBuffer& buf)     CIMBuffer& buf)
 { {
     // Turn on validation:      // Turn on validation: This is a debugging tool
 #if defined(ENABLE_VALIDATION) #if defined(ENABLE_VALIDATION)
     buf.setValidate(true);     buf.setValidate(true);
 #endif #endif
   
     Uint32 flags;     Uint32 flags;
     String messageId;     String messageId;
     Operation operation;     Operation operation;
Line 4930 
Line 4955 
         case OP_ExecQuery:         case OP_ExecQuery:
             msg = _decodeExecQueryResponse(buf, messageId);             msg = _decodeExecQueryResponse(buf, messageId);
             break;             break;
   //EXP_PULL_BEGIN
         case OP_OpenEnumerateInstances:         case OP_OpenEnumerateInstances:
             msg = _decodeOpenEnumerateInstancesResponse(buf, messageId);             msg = _decodeOpenEnumerateInstancesResponse(buf, messageId);
             break;             break;
Line 4957 
Line 4983 
         case OP_CloseEnumeration:         case OP_CloseEnumeration:
             msg = _decodeCloseEnumerationResponse(buf, messageId);             msg = _decodeCloseEnumerationResponse(buf, messageId);
             break;             break;
   //EXP_PULL_END
         default:         default:
             // Unexpected message type             // Unexpected message type
             PEGASUS_ASSERT(0);             PEGASUS_ASSERT(0);
Line 4965 
Line 4991 
     }     }
  
     if (!msg)     if (!msg)
         throw CIMException(CIM_ERR_FAILED,          throw CIMException(CIM_ERR_FAILED, "Received corrupted binary message");
             "Received corrupted binary message");  
  
     return msg;     return msg;
 } }
Line 4989 
Line 5014 
     Boolean isLast)     Boolean isLast)
 { {
     Buffer out;     Buffer out;
   
     if (isFirst == true)     if (isFirst == true)
     {     {
         // Write HTTP header:         // Write HTTP header:
         XmlWriter::appendMethodResponseHeader(out, httpMethod,         XmlWriter::appendMethodResponseHeader(out, httpMethod,
             httpContentLanguages, 0, serverResponseTime, true);             httpContentLanguages, 0, serverResponseTime, true);
  
           for (size_t i=out.size(), k=CIMBuffer::round(i); i<k;i++)
           {
               out.append('\0');
           }
         // Binary message header:         // Binary message header:
         CIMBuffer cb(128);         CIMBuffer cb(128);
         _putHeader(cb, 0, messageId, _NameToOp(iMethodName));         _putHeader(cb, 0, messageId, _NameToOp(iMethodName));
Line 5204 
Line 5234 
                 (CIMExecQueryRequestMessage*)msg, name);                 (CIMExecQueryRequestMessage*)msg, name);
             break;             break;
         }         }
   
   //EXP_PULL_BEGIN
         case CIM_OPEN_ENUMERATE_INSTANCES_REQUEST_MESSAGE:         case CIM_OPEN_ENUMERATE_INSTANCES_REQUEST_MESSAGE:
         {         {
             _encodeOpenEnumerateInstancesRequest(buf,             _encodeOpenEnumerateInstancesRequest(buf,
Line 5265 
Line 5297 
                 (CIMEnumerationCountRequestMessage*)msg, name);                 (CIMEnumerationCountRequestMessage*)msg, name);
             break;             break;
         }         }
   //EXP_PULL_END
  
         default:         default:
             // Unexpected message type             // Unexpected message type
Line 5288 
Line 5321 
         true, /* binaryRequest */         true, /* binaryRequest */
         binaryResponse);         binaryResponse);
  
       // Need to pad the Buffer to the 64bit border since CIMBuffer is 64bit
       // aligned, but Buffer only 8bit
       Uint32 extraAlignBytes = CIMBuffer::round(out.size()) - out.size();
       for (Uint32 i=0; i < extraAlignBytes;i++)
       {
           out.append('\0');
       }
       // Need fix-up Content-length value...
       char * contentLengthValueStart =
           (char*) strstr(out.getData(), "content-length");
       contentLengthValueStart += sizeof("content-length: ")-1;
       // using sprintf to stay equal to the macro OUTPUT_CONTENTLENGTH definition
       // defined in XMLGenerator.h
       char contentLengthP[11];
       sprintf(contentLengthP,"%.10u", (unsigned int)buf.size()+extraAlignBytes);
       memcpy(contentLengthValueStart,contentLengthP,10);
   
     out.append(buf.getData(), buf.size());     out.append(buf.getData(), buf.size());
  
     return true;     return true;
Line 5313 
Line 5363 
             _encodeEnumerateInstancesResponseBody(             _encodeEnumerateInstancesResponseBody(
                 buf,                 buf,
                 ((CIMEnumerateInstancesResponseMessage*)msg)->getResponseData(),                 ((CIMEnumerateInstancesResponseMessage*)msg)->getResponseData(),
                 name);                  name,
                   (msg->getIndex() == 0));
             break;             break;
         }         }
  
Line 5477 
Line 5528 
  
         case CIM_EXEC_QUERY_RESPONSE_MESSAGE:         case CIM_EXEC_QUERY_RESPONSE_MESSAGE:
         {         {
             _encodeExecQueryResponseBody(buf,              _encodeExecQueryResponseBody(
                   buf,
                 ((CIMExecQueryResponseMessage*)msg)->getResponseData(),                 ((CIMExecQueryResponseMessage*)msg)->getResponseData(),
                 name);                 name);
             break;             break;
         }         }
  
   //EXP_PULL_BEGIN
         case CIM_OPEN_ENUMERATE_INSTANCES_RESPONSE_MESSAGE:         case CIM_OPEN_ENUMERATE_INSTANCES_RESPONSE_MESSAGE:
         {         {
             _encodeOpenEnumerateInstancesResponseBody(buf,             _encodeOpenEnumerateInstancesResponseBody(buf,
Line 5575 
Line 5628 
                 name);                 name);
             break;             break;
         }         }
   //EXP_PULL_END
  
         default:         default:
             // Unexpected message type             // Unexpected message type


Legend:
Removed from v.1.12.2.2  
changed lines
  Added in v.1.12.2.4

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2