(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 and 1.15

version 1.12, 2011/01/07 02:17:20 version 1.15, 2011/02/23 09:41:09
Line 342 
Line 342 
 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 372 
Line 379 
     // 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 3021 
Line 3037 
  
 //============================================================================== //==============================================================================
 // //
 // BinaryCodec::hexDump()  
 //  
 //==============================================================================  
   
 #if defined(PEGASUS_DEBUG)  
   
 void BinaryCodec::hexDump(const void* data, size_t size)  
 {  
     unsigned char* p = (unsigned char*)data;  
     unsigned char buf[16];  
     size_t n = 0;  
   
     for (size_t i = 0, col = 0; i < size; i++)  
     {  
         unsigned char c = p[i];  
         buf[n++] = c;  
   
         if (col == 0)  
             printf("%06X ", (unsigned int)i);  
   
         printf("%02X ", c);  
   
         if (col + 1 == sizeof(buf) || i + 1 == size)  
         {  
             for (size_t j = col + 1; j < sizeof(buf); j++)  
                 printf("   ");  
   
             for (size_t j = 0; j < n; j++)  
             {  
                 c = buf[j];  
   
                 if (c >= ' ' && c <= '~')  
                     printf("%c", buf[j]);  
                 else  
                     printf(".");  
             }  
   
             printf("\n");  
             n = 0;  
         }  
   
         if (col + 1 == sizeof(buf))  
             col = 0;  
         else  
             col++;  
     }  
   
     printf("\n");  
 }  
   
 #endif /* defined(PEGASUS_DEBUG) */  
   
 //==============================================================================  
 //  
 // BinaryCodec::decodeRequest() // BinaryCodec::decodeRequest()
 // //
 //============================================================================== //==============================================================================
  
 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;
Line 3097 
Line 3057 
     Operation operation;     Operation operation;
  
  
     if (!_getHeader(buf, flags, messageId, operation))      if (!_getHeader(in, flags, messageId, operation))
     {     {
         return 0;         return 0;
     }     }
Line 3106 
Line 3066 
     {     {
         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);
         default:         default:
             // Unexpected message type             // Unexpected message type
             PEGASUS_ASSERT(0);             PEGASUS_ASSERT(0);
Line 3189 
Line 3149 
 // //
 //============================================================================== //==============================================================================
  
 CIMResponseMessage* BinaryCodec::decodeResponse(  
     const Buffer& in)  
 {  
     CIMBuffer buf((char*)in.getData(), in.size());  
     CIMBufferReleaser buf_(buf);  
   
     return decodeResponse(buf);  
 }  
  
 CIMResponseMessage* BinaryCodec::decodeResponse( CIMResponseMessage* BinaryCodec::decodeResponse(
     CIMBuffer& buf)     CIMBuffer& buf)
Line 3328 
Line 3280 
         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 3550 
Line 3506 
         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 3575 
Line 3548 
             _encodeEnumerateInstancesResponseBody(             _encodeEnumerateInstancesResponseBody(
                 buf,                 buf,
                 ((CIMEnumerateInstancesResponseMessage*)msg)->getResponseData(),                 ((CIMEnumerateInstancesResponseMessage*)msg)->getResponseData(),
                 name);                  name,
                   (msg->getIndex() == 0));
             break;             break;
         }         }
  


Legend:
Removed from v.1.12  
changed lines
  Added in v.1.15

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2