diff -r 000000000000 -r b497e44ab2fc fotaapplication/fotaserver/FotaStorage/inc/fotaDiskStorage.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fotaapplication/fotaserver/FotaStorage/inc/fotaDiskStorage.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,222 @@ +/* +* Copyright (c) 2009 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 of fotaserver component +* This is part of fotaapplication. +* +*/ + + +#ifndef __FOTADISKSTORAGE_H_ +#define __FOTADISKSTORAGE_H_ + +#include + + +#include "fotastorage.h" + + +// CONSTANTTS +// const TInt KDummyFileSize(2000000); // total of 2MB should be reserved for fota pkgs + +#ifndef _FOTA_UNIT_TESTER +_LIT( KDummyFilePath, "c:\\private\\102072C4\\" ); +#else +_LIT( KDummyFilePath, "c:\\private\\10009cf4\\" ); +#endif +_LIT( KDummyFileName, "reserved"); // dummy file name + + +const TInt KFileReservationDefaultSize ( 5000000); +const TInt KFileChunkDefaultSize ( 120000 ); + +/* +* Implementation of fotastorage. This implementation +* directly stores the update package to user disk. +* Private directory of the calling process will be used +* for storage. +*/ + +class CFotaDiskStorage : public CFotaStorage +{ + public: + + /** + * NewL + * @since S60 v3.1 + * @param none + * @return New instance + */ + static CFotaDiskStorage* NewL(); + + + /** + * Two phase Constructor + * @since S60 v3.1 + * @param none + * @return none + */ + void ConstructL(); + + // From base classes + + /** + * Two phase Constructor + * @since S60 v3.1 + * @param none + * @return none + */ + TInt AdjustDummyStorageL(); + + /** + * Opens stream to package file + * @since S60 v3.1 + * @param pkgid Package id + * @param aPkgStore Stream to the file + * @return err + */ + TInt OpenUpdatePackageStoreL(const TInt aPkgId,TInt aNewDummySize + , RWriteStream*& aPkgStore); + + /** + * Gets the update package size + * @since S60 v3.2 + * @param aPkgid Package id + * @param aSize Size in bytes + * @return None + */ + + void GetDownloadedUpdatePackageSizeL(const TInt aPkgid, TInt& aSize); + + + /** + * Closes stream to package file + * @since S60 v3.1 + * @param pkgid Package id + * @return none + */ + void UpdatePackageDownloadCompleteL(const TInt aPkgId); + + /** + * Gets path to package + * @since S60 v3.1 + * @param pkgid Package id + * @param aPath path to file + * @return none + */ + void GetUpdatePackageLocationL(const TInt aPkgId, TDes8& aPath ); + + + /** + * Gets present packages + * @since S60 v3.1 + * @param aPackageIdList List of package ids + * @return none + */ + void GetUpdatePackageIdsL(TDes16& aPackageIdList); + + + /** + * Checks if there is space for pkg. If not (doesnt fit to filesystem) + * returns needed space in aSize. + * @since S60 v3.1 + * @param aSize Space of pkg. On return, needed space. + * @return Whether there's free space + */ + TFreeSpace IsPackageStoreSizeAvailableL(TInt& aSize); + + + /** + * Deletes update package + * returns needed space in aSize. + * @since S60 v3.1 + * @param apPkgid Package id + * @return none + */ + void DeleteUpdatePackageL (const TInt aPkgId); + + + + /** + * Destructor + * @since S60 v3.1 + * @param none + * @return none + */ + virtual ~CFotaDiskStorage (); + +public: + + + /** + * Stream to pkg file + */ + RFileWriteStream iFileWriteStream; + + + /** + * File server session + */ + RFs iFs; + + /** + * Size of reservation file. Configured via cenrep. + */ + TInt iDummySize; + + + + /** + * Size of chunk used to separate update package file content from + * reservation file. + */ + TInt iChunkSize; + +private: // new functions + + + /** + * Constructor + * @since S60 v3.1 + * @param none + * @return none + */ + CFotaDiskStorage (); + + + /** + * Deletes the update package so that total space reservation file + * stays the same (ie 5MB). + * @since S60 v3.1 + * @param dummy Handle to reservation file + * @param aPkgId package file to be deleted + * @param aAlreadyAllocated Already allocated bytes by other pkg files + * @return none + */ + void DoDeleteUpdatePackageL ( RFile& dummy, TInt aPkgId + , TInt aAlreadyAllocated=0); + + + /** + * Checks how much space is allocated by package files + * @since S60 v3.1 + * @param aSwupdSize Size allocated by package files + * @param aDummySize Size allocated by reservation file + * @return none + */ + void SpaceAllocatedBySWUPDFilesL( TInt& aSwupdSize, TInt& aDummySize); + +}; + + +#endif //__FOTADISKSTORAGE_H_