diff -r 000000000000 -r 95b198f216e5 omadrm/drmengine/roap/src/RoapTrigger.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omadrm/drmengine/roap/src/RoapTrigger.cpp Thu Dec 17 08:52:27 2009 +0200 @@ -0,0 +1,307 @@ +/* +* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: ?Description +* +*/ + + + +// INCLUDE FILES + +#include "RoapTrigger.h" + +using namespace Roap; + +// ================= CONSTANTS ======================= +_LIT8( KTriggerHeader, "" ); +_LIT8(KRegistrationStart, ""); +_LIT8(KRegistrationEnd, ""); +_LIT8(KRoAcquisitionStart, ""); +_LIT8(KRoAcquisitionEnd, ""); +_LIT8(KJoinDomianStart, ""); +_LIT8(KJoinDomianEnd, ""); +_LIT8(KLeaveDomianStart, ""); +_LIT8(KLeaveDomianEnd, ""); +#ifdef RD_DRM_METERING +_LIT8(KExtendedTriggerStart, ""); +_LIT8(KExtendedTriggerEnd, ""); +#endif +_LIT8(KRiIdStart, ""); +_LIT8(KRiIdEnd, ""); +_LIT8(KRiAliasStart, ""); +_LIT8(KRiAliasEnd, ""); +_LIT8(KRoapUrlStart, ""); +_LIT8(KRoapUrlEnd, ""); +_LIT8(KDomainIdStart, ""); +_LIT8(KDomainIdEnd, ""); +_LIT8(KDomainAliasStart, ""); +_LIT8(KDomainAliasEnd, ""); +_LIT8(KRoIdStart, ""); +_LIT8(KRoIdEnd, ""); +_LIT8(KContentIdStart, ""); +_LIT8(KContentIdEnd, ""); +_LIT8( KTriggerEnd,""); + + +// FORWARD DECLARATIONS + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------- +// CRoapTrigger::NewL() +// --------------------------------------------------------- +// +EXPORT_C CRoapTrigger* CRoapTrigger::NewL() + { + CRoapTrigger* data = new (ELeave) CRoapTrigger(); + CleanupStack::PushL( data ); + data->ConstructL(); + CleanupStack::Pop( data ); + return data; + } + +// --------------------------------------------------------- +// CRoapTrigger::NewL() +// --------------------------------------------------------- +// +EXPORT_C CRoapTrigger* CRoapTrigger::NewL( const TTriggerType& aTriggerType, + const TDesC8& aRiId, + const TDesC8& aDomainId, + const TDesC8& aRoapUrl, + const RPointerArray& aRoIdList, + const RPointerArray& aContentIdList ) + { + CRoapTrigger* data = new (ELeave) CRoapTrigger(); + CleanupStack::PushL( data ); + data->ConstructL( aTriggerType, aRiId, aDomainId, aRoapUrl, aRoIdList, aContentIdList ); + CleanupStack::Pop( data ); + return data; + } + +// --------------------------------------------------------- +// CRoapTrigger::~CRoapTrigger() +// --------------------------------------------------------- +// +EXPORT_C CRoapTrigger::~CRoapTrigger() + { + delete iId; + delete iDomainId; + delete iRoapUrl; + delete iSignature; + delete iEncKey; + delete iNonce; + delete iDigestValue; + delete iRiAlias; + delete iDomainAlias; + iRoIdList.ResetAndDestroy(); + iContentIdList.ResetAndDestroy(); + } + +// --------------------------------------------------------- +// CRoapTrigger::CRoapTrigger() +// --------------------------------------------------------- +// +CRoapTrigger::CRoapTrigger(): + iId(NULL), + iDomainId(NULL), + iRoapUrl(NULL), + iSignature(NULL), + iEncKey(NULL), + iNonce(NULL), + iDigestValue(NULL), + iRiAlias(NULL) + { + } + +// --------------------------------------------------------- +// CRoapTrigger::ConstructL() +// --------------------------------------------------------- +// +void CRoapTrigger::ConstructL() + { + } + +// --------------------------------------------------------- +// CRoapTrigger::ConstructL() +// --------------------------------------------------------- +// +void CRoapTrigger::ConstructL( const TTriggerType& aTriggerType, + const TDesC8& aRiId, + const TDesC8& aDomainId, + const TDesC8& aRoapUrl, + const RPointerArray& aRoIdList, + const RPointerArray& aContentIdList ) + { + HBufC8* temp = NULL; + + iTriggerType = aTriggerType; + iRiId.Copy( aRiId ); + iDomainId = aDomainId.AllocL(); + iRoapUrl = aRoapUrl.AllocL(); + + for( TInt i = 0; i < aRoIdList.Count(); i++ ) + { + temp = aRoIdList[i]->AllocLC(); + iRoIdList.AppendL( temp ); + CleanupStack::Pop(); //temp + } + + for( TInt i = 0; i < aContentIdList.Count(); i++ ) + { + temp = aContentIdList[i]->AllocLC(); + iContentIdList.AppendL( temp ); + CleanupStack::Pop(); //temp + } + } + +// ----------------------------------------------------------------------------- +// CRoapTrigger::MessageAsXmlL +// ----------------------------------------------------------------------------- +// +EXPORT_C HBufC8* CRoapTrigger::MessageAsXmlL(void) + { + HBufC8* r = NULL; + CBufFlat* b = NULL; + TInt i; + + b = CBufFlat::NewL(128); + CleanupStack::PushL(b); + BufAppendL(b, KTriggerHeader); + + switch ( iTriggerType ) + { + case ERegistrationTrigger: + BufAppendL(b, KRegistrationStart); + break; + case ERoAcquisitionTrigger: + BufAppendL(b, KRoAcquisitionStart); + break; + case EJoinDomainTrigger: + BufAppendL(b, KJoinDomianStart); + break; + case ELeaveDomainTrigger: + BufAppendL(b, KLeaveDomianStart); + break; +#ifdef RD_DRM_METERING + case EExtendedTrigger: + BufAppendL(b, KExtendedTriggerStart); + BufAppendL(b, KIdStart); + BufAppendL(b, *iId ); + BufAppendL(b, KIdEnd); + BufAppendL(b, KMeteringType ); + break; +#endif + } + + if (iRiId.Length() > 0) + { + BufAppendL(b, KRiIdStart); + BufAppendBase64L(b, iRiId); + BufAppendL(b, KRiIdEnd); + } + + if (iRiAlias) + { + BufAppendL(b, KRiAliasStart); + BufAppendBase64L(b, *iRiAlias); + BufAppendL(b, KRiAliasEnd); + } + + if (iDomainId) + { + BufAppendL(b, KDomainIdStart); + BufAppendL(b, *iDomainId); + BufAppendL(b, KDomainIdEnd); + } + + if (iDomainAlias) + { + BufAppendL(b, KDomainAliasStart); + BufAppendBase64L(b, *iDomainAlias); + BufAppendL(b, KDomainAliasEnd); + } + + if (iRoapUrl) + { + BufAppendL(b, KRoapUrlStart); + BufAppendL(b, *iRoapUrl); + BufAppendL(b, KRoapUrlEnd); + } + + for (i = 0; i < iRoIdList.Count(); i++) + { + BufAppendL(b, KRoIdStart); + BufAppendL(b, *iRoIdList[i]); + BufAppendL(b, KRoIdEnd); + } + + for (i = 0; i < iContentIdList.Count(); i++) + { + BufAppendL(b, KContentIdStart); + BufAppendL(b, *iContentIdList[i]); + BufAppendL(b, KContentIdEnd); + } + + switch ( iTriggerType ) + { + case ERegistrationTrigger: + BufAppendL(b, KRegistrationEnd); + break; + case ERoAcquisitionTrigger: + BufAppendL(b, KRoAcquisitionEnd); + break; + case EJoinDomainTrigger: + BufAppendL(b, KJoinDomianEnd); + break; + case ELeaveDomainTrigger: + BufAppendL(b, KLeaveDomianEnd); + break; +#ifdef RD_DRM_METERING + case EExtendedTrigger: + BufAppendL(b, KExtendedTriggerEnd); + break; +#endif + } + + BufAppendL(b, KTriggerEnd); + + r = b->Ptr(0).AllocL(); + CleanupStack::PopAndDestroy(b); + return r; + } + +// --------------------------------------------------------- +// CRoapTrigger::ValidTrigger() +// --------------------------------------------------------- +// +EXPORT_C TBool CRoapTrigger::ValidTrigger() + { + if ( iTriggerType == EJoinDomainTrigger || + iTriggerType == ELeaveDomainTrigger ) + { + if ( !iDomainId ) + { + return EFalse; + } + } + if ( iRiId.Length() > 0 && iRoapUrl ) + { + return ETrue; + } + return EFalse; + } +