contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtadatahandler.cpp
changeset 15 da2ae96f639b
parent 8 35751d3474b7
child 29 ece3df019add
--- a/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtadatahandler.cpp	Fri Oct 02 13:15:59 2009 +0300
+++ b/contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtadatahandler.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -49,6 +49,9 @@
 	{
 	delete iArchive;
 	iFile.Close();
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT          
+    delete iWmdrmContentObject;     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
 	}
 
 void CRtaDataHandler::ServiceL(const RMessage2& aMessage)
@@ -105,7 +108,38 @@
 	case EDataSetProperty:
 	case ENoEnforceDataSetProperty:
 		SetPropertyL(aMessage);
-		break;		
+		break;
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    case EReadWMDRMHeaderData:     
+    case ENoEnforceReadWMDRMHeaderData:     
+        ReadWMDRMHeaderL(aMessage);     
+        break;     
+         
+    case EReadWMDRMDataPacket:     
+    case ENoEnforceReadWMDRMDataPacket:     
+        DecryptWMDRMDataPacketL(aMessage);     
+        break;     
+             
+    case EWMDRMGetAttribute:     
+    case ENoEnforceWMDRMGetAttribute:     
+        GetWMDRMAttributeL(aMessage);     
+        break;     
+             
+    case EWMDRMGetAttributeSet:     
+    case ENoEnforceWMDRMGetAttributeSet:     
+        GetWMDRMAttributeSetL(aMessage);     
+        break;     
+         
+    case EWMDRMGetStringAttribute:     
+    case ENoEnforceWMDRMGetStringAttribute:     
+        GetWMDRMStringAttributeL(aMessage);     
+        break;     
+             
+    case EWMDRMGetStringAttributeSet:     
+    case ENoEnforceWMDRMGetStringAttributeSet:     
+        GetWMDRMStringAttributeSetL(aMessage);     
+        break;     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT        
 	default:
 		CRtaSession::PanicClient(aMessage,EPanicIllegalFunction);
 		break;
@@ -327,3 +361,114 @@
 	{	
 	User::Leave(KErrCANotSupported);
 	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+      
+void CRtaDataHandler::ReadWMDRMHeaderL(const RMessage2& aMessage)     
+    {     
+    HBufC8* headerData = ReadDesC8LC(aMessage, 0);       
+    iWmdrmContentObject = CWmdrmContentParser::NewL(*headerData);     
+         
+    CleanupStack::PopAndDestroy(headerData);     
+    }     
+         
+void CRtaDataHandler::DecryptWMDRMDataPacketL(const RMessage2& aMessage)     
+    {     
+    HBufC8* inputPacket = ReadDesC8LC(aMessage, 0);     
+         
+    HBufC8* decryptedPacket = ReadDes8LC(aMessage, 1);     
+    TPtr8 decryptedPacketPtr = decryptedPacket->Des();     
+         
+    decryptedPacketPtr.Copy(*inputPacket);     
+         
+    WriteL(aMessage, 1, decryptedPacketPtr);     
+         
+    CleanupStack::PopAndDestroy(2, inputPacket);     
+    }     
+         
+void CRtaDataHandler::GetWMDRMAttributeL(const RMessage2& aMessage)     
+    {     
+    TInt attribute = aMessage.Int0();     
+    TInt value;     
+    TPckg <TInt> valuePckg(value);               
+    User::LeaveIfError(iWmdrmContentObject->GetAttribute(attribute, value));     
+         
+    WriteL(aMessage, 1, valuePckg);     
+    }     
+         
+void CRtaDataHandler::GetWMDRMStringAttributeL(const RMessage2& aMessage)     
+    {     
+    TInt attribute = aMessage.Int0();     
+    HBufC* value = ReadDes16LC(aMessage, 1);     
+    TPtr valuePtr = value->Des();     
+         
+    User::LeaveIfError(iWmdrmContentObject->GetStringAttribute(attribute, valuePtr));     
+    WriteL(aMessage, 1, valuePtr);     
+         
+    CleanupStack::PopAndDestroy(value);     
+    }     
+         
+void CRtaDataHandler::GetWMDRMAttributeSetL(const RMessage2& aMessage)     
+    {     
+    RAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+         
+    HBufC8* value = ReadDes8LC(aMessage, 0);     
+    TPtr8 valuePtr = value->Des();     
+    RDesReadStream readStream(valuePtr);     
+    CleanupClosePushL(readStream);     
+         
+    attributeSet.InternalizeL(readStream);     
+    CleanupStack::PopAndDestroy(2, value);     
+         
+    iWmdrmContentObject->GetAttributeSet(attributeSet);     
+      
+    // Write the object out to a buffer, send to client     
+    CBufFlat* buf = CBufFlat::NewL(50);     
+    CleanupStack::PushL(buf);     
+    // create write stream     
+    RBufWriteStream writeStream(*buf);     
+    CleanupClosePushL(writeStream);     
+         
+    // write the directory to the stream     
+    attributeSet.ExternalizeL(writeStream);     
+    CleanupStack::PopAndDestroy(&writeStream);     
+         
+    TPtr8 bufPtr = buf->Ptr(0);     
+    WriteL(aMessage, 0, bufPtr);     
+             
+    CleanupStack::PopAndDestroy(2, &attributeSet); // buf, attributeSet     
+    }     
+         
+void CRtaDataHandler::GetWMDRMStringAttributeSetL(const RMessage2& aMessage)     
+    {     
+    RStringAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+         
+    HBufC8* value = ReadDes8LC(aMessage, 0);     
+    TPtr8 valuePtr = value->Des();     
+    RDesReadStream readStream(valuePtr);     
+    CleanupClosePushL(readStream);     
+         
+    attributeSet.InternalizeL(readStream);     
+    CleanupStack::PopAndDestroy(2, value);     
+         
+    iWmdrmContentObject->GetStringAttributeSet(attributeSet);     
+      
+    // Write the object out to a buffer, send to client     
+    CBufFlat* buf = CBufFlat::NewL(50);     
+    CleanupStack::PushL(buf);     
+    // create write stream     
+    RBufWriteStream writeStream(*buf);     
+    CleanupClosePushL(writeStream);     
+         
+    // write the directory to the stream     
+    attributeSet.ExternalizeL(writeStream);     
+    CleanupStack::PopAndDestroy(&writeStream);     
+         
+    TPtr8 bufPtr = buf->Ptr(0);     
+    WriteL(aMessage, 0, bufPtr);     
+             
+    CleanupStack::PopAndDestroy(2, &attributeSet); // buf, attributeSet     
+    }        
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT