diff -r 000000000000 -r 95b198f216e5 commondrm/drmutility/inc/DrmRightsInfoImpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commondrm/drmutility/inc/DrmRightsInfoImpl.h Thu Dec 17 08:52:27 2009 +0200 @@ -0,0 +1,158 @@ +/* +* Copyright (c) 2006-2007 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: Implementation class of DRM Rights Info API +* +*/ + + +#ifndef CDRMRIGHTSINFOIMPL_H +#define CDRMRIGHTSINFOIMPL_H + +//*** system include files go here: +#include +#include +#include +#include +#include + +namespace DRM +{ + //*** Forward declarations + class CDrmRightsInfoData; + class MDrmAsyncObserver; + class CDrmUtilityCommon; + + /** + * Utility class for DRM related rights information handling + * + * @lib drmrightsinfoimpl.lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS( CDrmRightsInfoImpl ) : public CActive + { + +public: + + IMPORT_C static CDrmRightsInfoImpl* NewL(); + + IMPORT_C static CDrmRightsInfoImpl* NewLC(); + + virtual ~CDrmRightsInfoImpl(); + + + /** + * Checks the rights and their status for a specific unique id + * + * @param[in] aUniqueId : The unique identifier or the content + * @param[in] aIntent : The intent for the rights to check + * @param[out] aDetails : Details of the rights status + * @return none + * @leave System wide error code + */ + IMPORT_C void CheckRightsL( + const TDesC& aUniqueId, + ContentAccess::TIntent aIntent, + TDrmRightsInfo& aDetails ); + + /** + * Checks the rights and their status for a specific unique id + * + * @param[in] aUniqueId The unique identifier or the content + * @param[in] aIntent The intent for the rights to check + * @param[out] aDetails Details of the rights status + * @param[in] aObserver Observer which gets reported of + * the async operation + * + * @return Operation identifier + * + * @leave System wide error code + */ + IMPORT_C TInt CheckRightsAsyncL( + const TDesC& aUniqueId, + ContentAccess::TIntent aIntent, + TDrmRightsInfo& aDetails, + MDrmAsyncObserver& aObserver ); + + + /** + * Cancel an asyncronous operation + * + * @since S60 v5.0 + * @param[in] aOperationId identifier of the async operation + * to be cancelled + * @return KErrNotFound if the operation has already been executed + * or it does not exist + */ + IMPORT_C TInt CancelOperation( TInt aOperationId ); + + +public: // From base classes + + +protected: // Functions from base classes + + /** + * From CActive Cancels async request. + */ + void DoCancel(); + + /** + * From CActive Called when async request completes. + */ + void RunL(); + + /** + * From CActive Called when RunL leaves + */ + TInt RunError( TInt aError ); + +private: + + CDrmRightsInfoImpl(); + + void ConstructL(); + + void PerformCheckRightsL( CDrmRightsInfoData& aData ); + + void AppendToQueue( CDrmRightsInfoData* aData ); + + CDrmRightsInfoData* PopFront(); + + +private: // Data members + + // DrmUtilityCommon + CDrmUtilityCommon* iDrmUtilityCommon; + + // Oma Drm client + RDRMRightsClient iOmaClient; + + // WM Drm Client + // RWMDrmClient iWmClient; + + // current request status: + MDrmAsyncObserver* iObserver; + TInt iOperationId; + + // Operation Queue: + CDrmRightsInfoData* iFirst; + CDrmRightsInfoData* iLast; + + // To prevent queue handling from being messed up by threads + RSemaphore iSemaphore; + }; + +} + +#endif // CDRMRIGHTSINFOIMPL_H