diff -r 608f67c22514 -r 896e9dbc5f19 internetradio2.0/cachemgmtinc/ircachemgmt.h --- a/internetradio2.0/cachemgmtinc/ircachemgmt.h Tue Jul 06 14:07:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,281 +0,0 @@ -/* -* 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: ?Description -* -*/ - - -#ifndef CIRCACHEMGMT_H -#define CIRCACHEMGMT_H - -#include - - -const TInt KMAXHEADER = 255; - -class CIRBrowseCatagoryItems; -class CIRBrowseChannelItems; -class CIRCacheCleanup; -class CIRHttpResponseData; -class CIRIsdsPreset; -class CIROTAUpdate; -class CIRSettings; -class MIRCacheObserver; - -class CIRCacheMgmt : public CObject - { - -public: - - /** - *CIRCacheMgmt::OpenL() - *Standard two phased construction - *calls ConstructL() - *@param MIRCacheObserver & - *@return CIRCacheMgmt* - */ - IMPORT_C static CIRCacheMgmt* OpenL(MIRCacheObserver &aObserver); - - /** - * Adds a cache observer - * - * @param aObserver The observer to be added - */ - IMPORT_C void AddObserverL( MIRCacheObserver* aObserver ); - - /** - * Removes a cache observer - * - * @param aObserver The observer to be removed - */ - IMPORT_C void RemoveObserver( MIRCacheObserver* aObserver ); - - /** - *CIRCacheMgmt::CheckCache() - *API Exposed to Isds Client to check and get the cached items. - *@ aType the type of items i.e category,channel or preset. aName is the file name(type,CategoryId,PresetId - *@return TInt,1 for a cache hit,0 for cache miss,-1 for invalid cache - * - */ - IMPORT_C void CheckCacheL(TInt aType,const TDesC& aName,TBool aForceGet,TInt& aReturn); - - /** - *CIRCacheMgmt::CheckValidity() - *Checks the freshness of the cache - *@param universal time of file creation - *@return TBool 1 if fresh,0 if stale - */ - TBool CheckValidity(const TTime &aCreateTime,TInt aTrustPeriod) const; - - - /** - *CIRCacheMgmt::CacheCategoryItems() - *Caches the category array of data.By externalizing it into a file. - *@param aPtrCategory the object array,aName the file name from which the information is to be written - */ - IMPORT_C void CacheCategoryItemsL(CArrayPtrFlat& aPtrCategory, - const TDesC& aFilePath,const CIRHttpResponseData& aResponseHeaders); - - /** - *CIRCacheMgmt::CacheChannelItems() - *Caches the channel objects array of data.By externalizing it into a file. - *@param aPtrChannel the object array,aName the file name from which the information is to be written - */ - IMPORT_C void CacheChannelItemsL(CArrayPtrFlat& aPtrChannel, - const TDesC& aFilePath,const CIRHttpResponseData& aResponseHeaders); - - /** - *CIRCacheMgmt::CachePresetItem() - *Caches the preset objects .By externalizing it into a file. - *Multiple presets can be cached. - *@param aPreset preset object,aName the file name from which the information is to be written - */ - IMPORT_C void CachePresetItemL( - CArrayPtrFlat& aPtrPresets, - const TDesC& aName,const CIRHttpResponseData& aResponseHeaders); - - /** - *Function : CIRCacheMgmt::CacheOtaInfoL() - * Caches the OTA information .By externalizing it into a db. - *@param aOta otainfo object,aName the file name from which the information is to be written - */ - IMPORT_C void CacheOtaInfoL(const CIROTAUpdate& aOta,const TDesC& aName, - const CIRHttpResponseData& aResponseHeaders); - - - //////////////////////////////////////////////////////////////////////// - // CacheLogoL() API is added newly for logo cache management // - //////////////////////////////////////////////////////////////////////// - /** - *CIRCacheMgmt::CacheLogoL() - * Caches the logo data for a given logo url. - *@param aData --- logo data - *@param aUrl --- logo url - */ - IMPORT_C void CacheLogoL(const TDesC8& aData, const TDesC& aUrl, - const CIRHttpResponseData& aResponseHeaders); - - - /** - *CIRCacheMgmt::UpdateTrustPeriodL() - *Modifies the Trust period that comes with the 304 Not Modified responces from isds - *@ aType the type of items i.e category,channel or preset. aName is the file name(type,CategoryId,PresetId - */ - IMPORT_C void UpdateTrustPeriodL(TInt aType, const TDesC& aName, - CIRHttpResponseData& aResponseHeaders); - - /** - *CIRCacheMgmt::RemoveOtaInfoL() - *removes any cached ota response in case it is invalid - */ - IMPORT_C void RemoveOtaInfoL(); - - /** - *CIRCacheMgmt::CheckSizeL() - *checks the current size of cache against the max cache limit - */ - void CheckSizeL(); - /** - *CIRCacheMgmt::RemoveOldUnusedDataL() - *removes all unused data to bring the cache under the max cache size - */ - void RemoveOldUnusedDataL(); - /** - *CIRCacheMgmt::CacheSize() - *@return the cache size - */ - TInt CacheSize(); -private: - - /** - *CIRCacheMgmt::CIRCacheMgmt() - *Standard C++ constructor - *@param MIRCacheObserver & - *@return NA - *sets the trust period to 24hrs(default) - */ - CIRCacheMgmt(MIRCacheObserver &aObserver); - - /** - *CIRCacheMgmt::ConstructL() - *Standard two phased construction - *@param void - *@return void - *creates the folder paths if nonexistant - */ - void ConstructL(); - - /** - *CIRCacheMgmt::~CIRCacheMgmt() - *Standard C++ destructor - *@param NA - *@return NA - */ - ~CIRCacheMgmt(); - - /** - *CIRCacheMgmt::CreateCacheTableL() - *Creates the cache table - *CacheTable - * ----------------------------------------------------------------------------------------------- - *| RowIndex|DataType|DataId|TrustPeriod|LastModified |LastAccessed|Created|ItemCount|CachedData| - *------------------------------------------------------------------------------------------------ - *| auto |TInt |TDesC |TInt |TDesC/DateTime|TTime |Time |TInt | Streamed | - *|increment|0,1,2 !0| !0 | !0 | | | | | Data | - *------------------------------------------------------------------------------------------------ - */ - void CreateCacheTableL(); - - /** - *CIRCacheMgmt::CreateCacheIndexL() - *creates the indices for cache table - */ - void CreateCacheIndexL(); - - void FetchCacheIfAvailableL(TInt aType,const TDesC& aId,TBool aForceGet,TInt& aReturnVal); - void FetchCachedDataL(TInt aType,TInt aCountItems,RDbView& aCacheView); - - void CloseDb(); - TInt OpenCacheDb(); - TInt CreateDb(); - void CreateDbConditionalL(); - /** - *CIRCacheMgmt::UpdateLastAccessedTime() - *updates the last accessed field to aid in deletion of old data - *@param RDbView&,the view for which the update has to be made - */ - void UpdateLastAccessedTimeL(RDbView &aCacheView); - -public: - //!Enumeration for type identification - enum TIRTypes - { - ECatagory = 0, - EChannels, - EPresets, - EOtaInfo, - ELogo //added for logo cache management - }; - - //!Enumeration for return types - enum TIRCacheStatus - { - ECacheNotValid = -1, - ENotCached, - ECacheUseable - }; - - //! trust period for cache(24hrs by default) - TTimeIntervalSeconds iTrustPeriod; - - // Array of Pointers to PresetClass - //used to return an array of cached presets to the UI - CArrayPtrFlat* iPtrPreset; - - //! Array of Pointers to CategoryClass - CArrayPtrFlat* iPtrCategory; - - //! Array of Pointers to BrowseCategoryClass - CArrayPtrFlat* iPtrChannel; - - //ota info holding object - CIROTAUpdate* iOTA; - //!Observer class for cache - MIRCacheObserver& iCacheObserver; - - //To store the logo data which is retrieved from the cache - RBuf8 iLogoData; - - //!time stamp string in HTTP format,used if cache is stale - TTime iLastModified; - - //ETag header assaociated witht the logo data - TBuf8< KMAXHEADER > iETag; - -private: - /** - * Array of cache observers - */ - RPointerArray iCacheObservers; - RDbNamedDatabase iCacheDb; - TBool iOpen; - //! fileserver session - RFs iFsSession; - TFileName iDatabaseFileName; - //central repository settings handle - CIRSettings* iSettings; - CIRCacheCleanup* iCleanup; - TInt iCacheDbSize; - }; -#endif //CIRCACHEMGMT_H