diff -r 1fa9b890f29c -r 9dbc70490d9a brandingserver/BSServer/cbsstoragemanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/brandingserver/BSServer/cbsstoragemanager.h Sun Apr 11 15:33:49 2010 +0530 @@ -0,0 +1,226 @@ +/* +* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Storage handler +* +*/ + + + +#ifndef CBSSTORAGEMANAGER_H +#define CBSSTORAGEMANAGER_H + +#include +#include + +class CBSSession; +class CBSIBYWriter; +class MBSElement; +class CBSStorage; +class RWriteStream; + + +/** + * Storage handler + * + * @lib .exe + * @since S60 v3.2 + */ +class CBSStorageManager : public CBase +{ +public: + + static CBSStorageManager* NewL( CBSSession* aSession, const TDesC& aAppId ); + + static CBSStorageManager* NewLC( CBSSession* aSession, const TDesC& aAppId ); + + ~CBSStorageManager(); + + + /** + * Initializes the transaction to the + * storagemanager + * + * @since S60 3.2 + * @return none + */ + void ConnectTransactionL(const TDesC& aAppId, + const TDesC& aBrandId, + TLanguage aLanguageId, + TBool aAppending = EFalse, + TInt aReserved = 0 ); + + + /** + * Create a new storage and set it to current. + * + * @since S60 3.2 + * @return none + */ + void CreateStorageL(); + + /** + * Return the count of storages + * + * @since S60 3.2 + * @return count of elements + */ + TInt StorageCount(); + + /** + * Get stored storage at index or current storage. + * + * @since S60 3.2 + * @param aIndex index of storage to fetch. + * @return Stored storage + */ + CBSStorage* Storage( TInt aIndex ); + CBSStorage* Storage(); + + /** + * Externalize storage files into file system + * + * @since S60 3.2 + * @param aFs filesystem handle + * @param aBaseDir Base directory for writing + * @return the new brand version + */ + TInt WriteStorageFilesL(); + + void CancelTransactionL(); + + void BrandHandleL( const TDesC& aAppId, + const TDesC& aBrandId, + TLanguage aLanguageId, + RFile& aFile, + TInt aReserved ); + + void FileElementHandleL( const TDesC& aAppId, + const TDesC& aBrandId, + const TDesC& aFileName, + const TDesC& aLanguageBuf, + RFile& aFile ); + + void CleanupFileL( const TDesC& aFileName ); + + TPtrC FilenameWithoutVersion( const TDesC& aFileName ); + + /** + * Externalize storage files into file system + * + * @since S60 3.2 + * @param aFileName the name of the installed file + * including path + * @return the filename without path component + */ + HBufC* InstallFileLC( const TDesC& aFileName ); + + void RemoveBrandL( const TDesC& aAppId, + const TDesC& aBrandId, + TLanguage aLanguageId, + TInt aReserved = 0); + + void RemoveApplicationL( const TDesC& aAppId ); + + TInt NextAvailableVersionL(); + void SetVersion( TInt aVersionId ); + + TInt GetNewestVersionL( const TDesC& aAppId, + const TDesC& aBrandId, + TLanguage aLanguageId, + TPtr* aDrive = NULL); + TInt WriteIbyFiles(); + + void LockStorage(); + + void ReleaseLockL(); + + TBool CheckBrandDiscarded(const TDesC& aAppId, + const TDesC& aBrandId) ; + static HBufC* ConstructDiscardBrandFileNameL( const TDesC& aAppId, + const TDesC& aBrandId ); + + static HBufC* FullDiscardBrandFileNameLC( TDesC& aFilename ) ; + + TInt isActualBrandInstalledL ( const TDesC& aAppId, const TDesC& aBrandId, TLanguage aLanguage); +private: + + CBSStorageManager(); + + void ConstructL( CBSSession* aSession, const TDesC& aAppId ); + + HBufC* ConstructFileNameL( TInt aVersion = 0 ); + + HBufC* ConstructFileNameL( const TDesC& aAppId, + const TDesC& aBrandId, + TLanguage aLanguage, + TInt aReserved = 0 ); + + void CleanupTransaction(); + + HBufC* FullFileNameLC( const TDesC& aFilename, TBool aForceCDrive = EFalse ); + + TInt ReadVersionL( const TDesC& aFilename ); + + HBufC* FindAvailableVersionL( TInt aCurrentVersion, TInt& aNewVersion ); + + TBool IsBaseFileL( const TDesC& aFileName ); + + + /** + * Mark a brand package as discarded. Future attempts to create an + * access to this brand package will fail. + * + * @since S60 3.2 + * @param aAppId a application id + * @param aBrandId a brand id + */ + void MarkBrandAsDiscardedL( const TDesC& aAppId, + const TDesC& aBrandId ); + +private: // Data + + // Own. Array of stored storages. + RPointerArray iStorages; + + // Index of currently active storage + TInt iCurrent; + + // IBY writer + CBSIBYWriter* iWriter; + + RFs iFs; + TBool iActive; + + HBufC* iAppId; + HBufC* iBrandId; + HBufC* iLanguageId; + TLanguage iLanguageIdNum; + + // Own. Proposed file name + HBufC* iFilename; + + // Proposed directory (points to iFilename) + TPtrC iDir; + + // doesn't own: the server + CBSSession* iSession; + + TBool iAppending; + + HBufC* iIbyFile; + TInt iReserved; + +}; + +#endif //CBSSTORAGEMANAGER_H