--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/omadrm/drmengine/server/inc/DRMRightsData.h Thu Dec 17 08:52:27 2009 +0200
@@ -0,0 +1,364 @@
+/*
+* Copyright (c) 2003 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: Datatype for Rights Constraint
+*
+*/
+
+
+#ifndef DRMRIGHTSDATA_H
+#define DRMRIGHTSDATA_H
+
+// INCLUDES
+
+#include <e32base.h>
+#include "DRMTypes.h"
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FORWARD DECLARATIONS
+class CDRMPermission;
+class CDRMCommonData;
+class CPermanentFileStore;
+class RWriteStream;
+class TStreamId;
+
+// TYPE DEFINITIONS
+
+// FUNCTION PROTOTYPES
+
+// CLASS DECLARATION
+
+/**
+* CDRMRightsData implements the rights database required by DRM Engine
+*
+* @lib RightsServer.dll
+* @since 3.0
+*/
+
+NONSHARABLE_CLASS( CDRMRightsData ) : public CBase
+ {
+public: // Constructors and destructor
+ /**
+ * NewLC
+ *
+ * Creates an instance of the CDRMRightsData class and returns a pointer
+ * to it. The function leaves the object into the cleanup stack
+ *
+ * @since 3.0
+ * @param aData : The common data to store takes possession of the data
+ * @param aKey : Key of the content
+ * @param aRightsFile : Full pathname of the rights store
+ * @param aFileServer : File server instance to use
+ * @return Functional CDRMRightsData object, Function leaves if an error
+ * occurs.
+ */
+ static CDRMRightsData* NewLC( CDRMCommonData* aData,
+ const TDesC8& aKey,
+ const TFileName& aRightsFile,
+ RFs& aFileServer );
+
+ /**
+ * NewL
+ *
+ * Creates an instance of the CDRMRightsData class and returns a pointer
+ * to it.
+ *
+ * @since 3.0
+ * @param aData : The common data to store takes possession of the data
+ * @param aKey : Key of the content
+ * @param aRightsFile : Full pathname of the rights store
+ * @param aFileServer : File server instance to use
+ * @return Functional CDRMRightsData object, Function leaves if an error
+ * occurs.
+ */
+ static CDRMRightsData* NewL( CDRMCommonData* aData,
+ const TDesC8& aKey,
+ const TFileName& aRightsFile,
+ RFs& aFileServer );
+ /**
+ * OpenLC
+ *
+ * Opens the store and creates an instance of the CDRMRightsData class and returns
+ * a pointer to it. The function leaves the object into the cleanup stack
+ *
+ * @since 3.0
+ * @param aRightsFile : Full pathname of the rights store
+ * @param aFileServer : File server instance to use
+ * @return Functional CDRMRightsData object, Function leaves if an error
+ * occurs.
+ */
+ static CDRMRightsData* OpenLC( const TFileName& aRightsFile,
+ RFs& aFileServer );
+ /**
+ * OpenL
+ *
+ * Opens the store and creates an instance of the CDRMRightsData class and returns
+ * a pointer to it.
+ *
+ * @since 3.0
+ * @param aRightsFile : Full pathname of the rights store
+ * @param aFileServer : File server instance to use
+ * @return Functional CDRMRightsData object, Function leaves if an error
+ * occurs.
+ */
+ static CDRMRightsData* OpenL( const TFileName& aRightsFile,
+ RFs& aFileServer );
+
+ /*
+ * Destructor
+ */
+ virtual ~CDRMRightsData();
+
+
+public: // New functions
+
+ /**
+ * GetCommonDataL
+ *
+ * returns a pointer a common data object
+ *
+ * @since 3.0
+ * @return The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ const CDRMCommonData* GetCommonDataL() const;
+
+ /**
+ * UpdateCommonDataL
+ *
+ * Updates the common data part
+ *
+ * @since 3.0
+ * @return The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ void UpdateCommonDataL( CDRMCommonData *aData );
+
+ /**
+ * StoreNewPermissionL
+ *
+ * Writes the data of the permission to the store and returns
+ * the stream id
+ *
+ * @since 3.0
+ * @param aPermission : CDRMPermission class to externalize
+ * @param aStream : the output stream to write to
+ * @return The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ void StoreNewPermissionL( CDRMPermission& aPermission,
+ TDRMUniqueID& aStream );
+
+ /**
+ * UpdatePermissionL
+ *
+ * Writes the data of the object into the stream
+ *
+ * @since 3.0
+ * @param aPermission : CDRMPermission class to externalize
+ * @return The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ void UpdatePermissionL( const CDRMPermission& aPermission );
+
+ /**
+ * FetchPermissionL
+ *
+ * Reads the data of the object from the stream
+ *
+ * @since 3.0
+ * @param aPermission : a CDRMPermission class to internalize to
+ * @param aStream : the stream id to write the permission to
+ * @return The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ void FetchPermissionL( CDRMPermission& aPermission,
+ const TDRMUniqueID& aStream ) const;
+
+ /**
+ * DeletePermissionL
+ *
+ * Deletes the data of the object from the stream
+ *
+ * @since 3.0
+ * @param aStream : the stream id to write the permission to
+ * @return The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ void DeletePermissionL( const TDRMUniqueID& aStream );
+
+ /**
+ * FetchPermissionsL
+ *
+ * Reads all the permissions and puts the data into the pointer array
+ *
+ * @since 3.0
+ * @param aPointerArray : return value pointer array of the permissions
+ * @return The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ void FetchAllPermissionsL( RPointerArray<CDRMPermission>&
+ aPointerArray );
+
+ /**
+ * DeleteAllPermissionsL
+ *
+ * Deletes the data of the object from the stream
+ *
+ * @since 3.0
+ * @return The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ void DeleteAllPermissionsL();
+
+
+ /**
+ * DeleteExpiredPermissionsL
+ *
+ * Deletes the data of the object from the stream
+ *
+ * @since 3.0
+ * @param aTime : Current secure time for checking the expiration
+ * if the time is Time::NullTTime() then only
+ * expired non time based rights are deleted
+ * @param aParents : ETrue if any Ro's have parents otherwise EFalse
+ * @return The amount of permissions left in the file
+ * @leave The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ TInt DeleteExpiredPermissionsL( const TTime& aTime, TBool& aParents );
+
+
+ /**
+ * StoreKeyL
+ *
+ * Writes the key to the store
+ *
+ * @since 3.0
+ * @return The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ void StoreKeyL();
+
+ /**
+ * GetKeyL
+ *
+ * Returns the key
+ *
+ * @since 3.0
+ * @return The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ HBufC8* GetKeyL() const;
+
+
+public:
+
+private:
+
+ /**
+ * CreateAndInitializeStoreL
+ *
+ * Writes the data of index into the store root
+ *
+ * @since 3.0
+ * @param aRightsStore : Full path filename of the rights store
+ * @return The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ void CreateAndInitializeStoreL( const TFileName& aRightsStore );
+
+ /**
+ * ExternalizeIndexL
+ *
+ * Writes the data of index into the store root
+ *
+ * @since 3.0
+ * @return The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ void StoreIndexL( RWriteStream& aStream ) const;
+
+ /**
+ * InternalizeIndexL
+ *
+ * Reads the data of the index from the store root
+ *
+ * @since 3.0
+ * @return The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ void FetchIndexL();
+
+ /**
+ * FetchCommonDataL();
+ *
+ * Reads the common data from the store
+ *
+ */
+ void FetchCommonDataL();
+
+ /**
+ * FetchKeyL
+ *
+ * Reads the key from the store
+ *
+ * @since 3.0
+ * @return The function leaves with Symbian OS error code if an
+ * error occurs
+ */
+ void FetchKeyL();
+
+ /*
+ * Default Constructor
+ */
+ CDRMRightsData( CDRMCommonData* aData, RFs& aFileServer );
+
+ /*
+ * 2nd phase Constructor
+ *
+ * @param aRightsStore : Full path filename of the rights store
+ */
+ void ConstructL( const TFileName& aRightsStore );
+
+ /*
+ * 2nd phase Constructor
+ *
+ * @param aRightsStore : Full path filename of the rights store
+ */
+ void ConstructL( const TFileName& aRightsStore,
+ const TDesC8& aKey );
+
+private:
+ RFs& iFileServer;
+
+ CPermanentFileStore* iStore;
+
+ TBool iKeyExists;
+ TBuf8<16> iKey;
+ RArray<TDRMUniqueID> iArray;
+ CDRMCommonData* iData;
+ TStreamId iCommonId;
+ TStreamId iKeyId;
+
+ // Some index data
+ };
+
+#endif // DRMRIGHTSDATA_H
+
+// End of File