contentmgmt/referencedrmagent/RefTestAgent/RTAServer/Server/rtacontenthandler.cpp
changeset 15 da2ae96f639b
parent 8 35751d3474b7
child 29 ece3df019add
equal deleted inserted replaced
10:afc583cfa176 15:da2ae96f639b
    48 	
    48 	
    49 CRtaContentHandler::~CRtaContentHandler()
    49 CRtaContentHandler::~CRtaContentHandler()
    50 	{
    50 	{
    51 	delete iArchive;
    51 	delete iArchive;
    52 	iFile.Close();
    52 	iFile.Close();
       
    53 #ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
       
    54     delete iWmdrmContentObject;     
       
    55 #endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
    53 	}
    56 	}
    54 
    57 
    55 void CRtaContentHandler::ServiceL(const RMessage2& aMessage)
    58 void CRtaContentHandler::ServiceL(const RMessage2& aMessage)
    56 //
    59 //
    57 // Handle a client request.
    60 // Handle a client request.
   125 		break;
   128 		break;
   126 	case EContentSetProperty:
   129 	case EContentSetProperty:
   127 	case ENoEnforceContentSetProperty:
   130 	case ENoEnforceContentSetProperty:
   128 		SetPropertyL(aMessage);
   131 		SetPropertyL(aMessage);
   129 		break;
   132 		break;
       
   133 #ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
       
   134     case EReadWMDRMHeaderData:     
       
   135     case ENoEnforceReadWMDRMHeaderData:     
       
   136         ReadWMDRMHeaderL(aMessage);     
       
   137         break;     
       
   138          
       
   139     case EWMDRMGetAttribute:     
       
   140     case ENoEnforceWMDRMGetAttribute:     
       
   141         GetWMDRMAttributeL(aMessage);     
       
   142         break;     
       
   143              
       
   144     case EWMDRMGetAttributeSet:     
       
   145     case ENoEnforceWMDRMGetAttributeSet:     
       
   146         GetWMDRMAttributeSetL(aMessage);     
       
   147         break;     
       
   148          
       
   149     case EWMDRMGetStringAttribute:     
       
   150     case ENoEnforceWMDRMGetStringAttribute:     
       
   151         GetWMDRMStringAttributeL(aMessage);     
       
   152         break;     
       
   153              
       
   154     case EWMDRMGetStringAttributeSet:     
       
   155     case ENoEnforceWMDRMGetStringAttributeSet:     
       
   156         GetWMDRMStringAttributeSetL(aMessage);     
       
   157         break;     
       
   158 #endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
   130 	default:
   159 	default:
   131 		CRtaSession::PanicClient(aMessage,EPanicIllegalFunction);
   160 		CRtaSession::PanicClient(aMessage,EPanicIllegalFunction);
   132 		break;
   161 		break;
   133 		}
   162 		}
   134 	}
   163 	}
   375 
   404 
   376 void CRtaContentHandler::SetPropertyL(const RMessage2& /*aMessage*/)
   405 void CRtaContentHandler::SetPropertyL(const RMessage2& /*aMessage*/)
   377 	{
   406 	{
   378 	User::Leave(KErrCANotSupported);
   407 	User::Leave(KErrCANotSupported);
   379 	}
   408 	}
       
   409 
       
   410 #ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
       
   411       
       
   412 void CRtaContentHandler::ReadWMDRMHeaderL(const RMessage2& aMessage)     
       
   413     {     
       
   414     HBufC8* headerData = ReadDesC8LC(aMessage, 0);       
       
   415     iWmdrmContentObject = CWmdrmContentParser::NewL(*headerData);     
       
   416          
       
   417     CleanupStack::PopAndDestroy(headerData);     
       
   418     }     
       
   419          
       
   420 void CRtaContentHandler::GetWMDRMAttributeL(const RMessage2& aMessage)     
       
   421     {     
       
   422     TInt attribute = aMessage.Int0();     
       
   423     TInt value;     
       
   424     TPckg<TInt> valuePkg(value);     
       
   425       
       
   426     User::LeaveIfError(iWmdrmContentObject->GetAttribute(attribute, value));     
       
   427     WriteL(aMessage, 1, valuePkg);     
       
   428     }     
       
   429          
       
   430 void CRtaContentHandler::GetWMDRMStringAttributeL(const RMessage2& aMessage)     
       
   431     {     
       
   432     TInt attribute = aMessage.Int0();     
       
   433     HBufC* value = ReadDes16LC(aMessage, 1);     
       
   434     TPtr valuePtr = value->Des();     
       
   435       
       
   436     User::LeaveIfError(iWmdrmContentObject->GetStringAttribute(attribute, valuePtr));     
       
   437     WriteL(aMessage, 1, valuePtr);     
       
   438          
       
   439     CleanupStack::PopAndDestroy(value);     
       
   440     }     
       
   441          
       
   442 void CRtaContentHandler::GetWMDRMAttributeSetL(const RMessage2& aMessage)     
       
   443     {     
       
   444     RAttributeSet attributeSet;     
       
   445     CleanupClosePushL(attributeSet);     
       
   446          
       
   447     HBufC8* value = ReadDes8LC(aMessage, 1);     
       
   448     TPtr8 valuePtr = value->Des();     
       
   449     RDesReadStream readStream(valuePtr);     
       
   450     CleanupClosePushL(readStream);     
       
   451          
       
   452     attributeSet.InternalizeL(readStream);     
       
   453     CleanupStack::PopAndDestroy(2, value);     
       
   454          
       
   455     iWmdrmContentObject->GetAttributeSet(attributeSet);     
       
   456       
       
   457     // Write the object out to a buffer, send to client     
       
   458     CBufFlat* buf = CBufFlat::NewL(50);     
       
   459     CleanupStack::PushL(buf);     
       
   460          
       
   461     // create write stream     
       
   462     RBufWriteStream writeStream(*buf);     
       
   463     CleanupClosePushL(writeStream);     
       
   464          
       
   465     // write the directory to the stream     
       
   466     attributeSet.ExternalizeL(writeStream);     
       
   467     CleanupStack::PopAndDestroy(&writeStream);     
       
   468          
       
   469     TPtr8 bufPtr = buf->Ptr(0);     
       
   470     WriteL(aMessage, 1, bufPtr);     
       
   471              
       
   472     CleanupStack::PopAndDestroy(2, &attributeSet); // buf, attributeSet     
       
   473     }     
       
   474          
       
   475 void CRtaContentHandler::GetWMDRMStringAttributeSetL(const RMessage2& aMessage)     
       
   476     {     
       
   477     RStringAttributeSet attributeSet;     
       
   478     CleanupClosePushL(attributeSet);     
       
   479          
       
   480     HBufC8* value = ReadDes8LC(aMessage, 1);     
       
   481     TPtr8 valuePtr = value->Des();     
       
   482     RDesReadStream readStream(valuePtr);     
       
   483     CleanupClosePushL(readStream);     
       
   484          
       
   485     attributeSet.InternalizeL(readStream);     
       
   486     CleanupStack::PopAndDestroy(2, value);     
       
   487          
       
   488     iWmdrmContentObject->GetStringAttributeSet(attributeSet);     
       
   489       
       
   490     // Write the object out to a buffer, send to client     
       
   491     CBufFlat* buf = CBufFlat::NewL(50);     
       
   492     CleanupStack::PushL(buf);     
       
   493     // create write stream     
       
   494     RBufWriteStream writeStream(*buf);     
       
   495     CleanupClosePushL(writeStream);     
       
   496          
       
   497     // write the directory to the stream     
       
   498     attributeSet.ExternalizeL(writeStream);     
       
   499     CleanupStack::PopAndDestroy(&writeStream);     
       
   500          
       
   501     TPtr8 bufPtr = buf->Ptr(0);     
       
   502     WriteL(aMessage, 1, bufPtr);     
       
   503              
       
   504     CleanupStack::PopAndDestroy(2, &attributeSet); // buf, attributeSet     
       
   505     }     
       
   506       
       
   507 #endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT 
       
   508