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;
+ }
+