--- a/internetradio2.0/dataproviderinc/irlogodownloadengine.h Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,538 +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: Header of IRLogoDownloadEngine.cpp
-*
-*/
-
-
-
-
-
-#ifndef IRLOGODOWNLOADENGINE_H
-#define IRLOGODOWNLOADENGINE_H
-
-#include <mhttpdatasupplier.h>
-#include <mhttptransactioncallback.h>
-#include <rhttptransaction.h>
-#include <rhttpsession.h>
-#include <rhttpheaders.h>
-#include <http.h>
-#include <es_sock.h>
-
-#include "irisdspreset.h"
-#include "mlogodownloadobserver.h"
-#include "ircacheobserver.h"
-#include "iractivenetworkobserver.h"
-
-/**
- * Used to specify the maximum header-field value length
- */
-const TInt KMAXHEADERLENGTHS = 255;
-
-//Forward Declarations
-class RHTTPSession;
-class RHTTPTransaction;
-class CIRIsdsPreset;
-class CIRNetworkController;
-class MLogoDownloadObserver;
-class CIRCacheMgmt; //for logo cache mgmt
-class CIRHttpResponseData;
-class MIRActiveNetworkObserver;//for network up and downs
-
-
-
-/**
-* class CIRLogoDownlaodEngine
-*/
-class CIRLogoDownloadEngine : public CBase, public MHTTPTransactionCallback,
- public MHTTPDataSupplier,public MIRCacheObserver,
- public MIRActiveNetworkObserver
-{
-public:
- /**
- * enum TState
- * status of the transaction
- */
- enum TState
- {
- EIdle,
- ESendingEvent
- };
-
- /**
- * CIRLogoDownloadEngine* NewL()
- * Creates instance of CIRLogoDownloadEngine.
- */
- IMPORT_C static CIRLogoDownloadEngine* NewL();
-
- /**
- * SendRequestL(CIRIsdsPreset* aPreset)
- * API is called from the SearchResultsView for to download logo
- */
- IMPORT_C void SendRequestL(CIRIsdsPreset* aPreset,TInt aXValue=0,TInt aYValue=0);
-
- /**
- * SendRequestL(CIRIsdsPreset* aPreset,MLogoDownloadObserver* aLogoHandle
- * ,TInt aNPVReq,TInt aXValue,TInt aYValue)
- * API is called from the NowPlayingView for to download logo
- */
- IMPORT_C void SendRequestL(CIRIsdsPreset* aPreset,MLogoDownloadObserver* aLogoHandle,
- TInt aNPVReq=1,TInt aXValue=0,TInt aYValue=0);
-
- IMPORT_C TBool isLogoCachedL(CIRIsdsPreset* aPreset, TInt aXValue=0, TInt aYValue=0);
-
- /**
- * CancelTransaction()
- * cancels the current transaction
- */
- IMPORT_C void CancelTransaction();
-
- /**
- * TBool IsRunning() const
- * To know the status of downloading logo
- */
- IMPORT_C TBool IsRunning() const;
-
- /**
- * ~CIRLogoDownloadEngine()
- * Destructs instance of CIRLogoDownloadEngine
- */
- IMPORT_C ~CIRLogoDownloadEngine();
-
- /**
- * void SendPresetWithLogoL()
- * sends the preset with logo to the requestors
- */
- IMPORT_C void SendPresetWithLogoL();
-
- /**
- * GetCacheLogoL(TDesC& aUrl,TInt& aStatus)
- * takes the url as a parameter and returns the logo data which is in cache
- * this API is called form the search results for to display logo on the view
- */
- IMPORT_C void GetCacheLogoL(const TDesC& aUrl,TInt& aStatus);
-
- /**
- * TDesC8& SendCacheLogo()
- * sends the logo which is cached
- */
- IMPORT_C TDesC8& SendCacheLogo();
-
-
-
- /**
- * void FetchLogoDataL(CIRIsdsPreset* aPreset)
- * API is used to download logo from isds/internet
- * called in the API SendRequestL(CIRIsdsPreset* aPreset)
- */
- void FetchLogoDataL(CIRIsdsPreset* aPreset);
-
- /**
- * void FetchLogoDataL(CIRIsdsPreset* aPreset,MLogoDownloadObserver* aLogoHandle,TInt aNPVReq)
- * API is used to download logo from isds/internet
- * called in the API SendRequestL(CIRIsdsPreset* aPreset,MLogoDownloadObserver* aLogoHandle)
- */
- void FetchLogoDataL(CIRIsdsPreset* aPreset,MLogoDownloadObserver* aLogoHandle,TInt aNPVReq);
-
- /**
- * void ManagePresetArrayIndexL()
- * To update the iPresetArray current index
- */
- void ManagePresetArrayIndexL();
-
- /**
- * void ManageCachePresetArrayIndexL()
- * To update the iCachePresetArray current index
- */
- void ManageCachePresetArrayIndexL();
-
- /**
- * void CacheError()
- * Called from cachemgmt in case of an error
- * callback API from MIRCacheObserver
- */
- void CacheError();
-
- /**
- * void CacheFailed()
- * Called from cachemgmt in case of cache failure
- * callback API from MIRCacheObserver
- */
- void CacheFailed();
-
- /**
- * void CacheInvalid()
- * Called from cachemgmt in case cache is invalid
- * callback API from MIRCacheObserver
- */
- void CacheInvalid();
-
- /**
- * void CachedStructureL()
- * Called from cachemgmt data retrival is successful
- *@param aChoice,it gives the data type of the cache
- * callback API from MIRCacheObserver
- */
- void CachedStructureL(TInt aChoice);
-
- /**
- * ReleaseResources();
- * Releases the resources held by logo download engine
- */
- void ReleaseResources();
-
- //from MIRActiveNetworkObserver
- /**
- * Notified by network controller when network is active
- * to reissue the request
- * NotifyActiveNetworkObserversL()
- */
- void NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent);
-
-
- /**
- * Notifies all observers whose network request is active
- * to reset the pending request status
- * ResetPendingRequests()
- */
- void ResetPendingRequests(TBool aValue);
-
-
-private:
- /**
- * void ConstructL()
- * 2nd phase construction
- */
- void ConstructL();
-
- /**
- * CIRLogoDownloadEngine()
- * Standard C++ constructor
- */
- CIRLogoDownloadEngine();
-
- /**
- * void SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue) const
- * to set the headers of the http transaction
- */
- void SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue) const;
-
- /**
- * void IssueLogoDownloadRequest()
- * submits the transaction for to download the logo
- */
- void IssueLogoDownloadRequestL();
-
- /**
- * void CheckCacheForLogoL(TInt aValue)
- * checks the logo in the cache
- */
- void CheckCacheForLogoL(TInt aValue);
-
- /**
- * void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent)
- * from MHTTPTransactionCallback
- */
- void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
-
- /**
- * TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent)
- * //from MHTTPTransactionCallback
- */
- TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
-
- /**
- * void ReleaseData()
- * from MHTTPDataSupplier
- */
- void ReleaseData();
-
- /**
- * TBool GetNextDataPart(TPtrC8& aDataPart)
- * from MHTTPDataSupplier
- */
- TBool GetNextDataPart(TPtrC8& aDataPart);
-
- /**
- * TInt Reset()
- * from MHTTPDataSupplier
- */
- TInt Reset();
-
- /**
- * TInt OverallDataSize()
- * from MHTTPDataSupplier
- */
- TInt OverallDataSize();
-
- /**
- * CIRLogoDownloadEngine::ExtractResponseHeadersL(
- * RHTTPTransaction aTransaction )
- * Used to Extract the response headers.
- * @param aTransaction HTTP Transaction object
- */
- void ExtractResponseHeadersL( const RHTTPTransaction& aTransaction );
-
- /**
- * CIRLogoDownloadEngine::HttpHeaderReceived( const TDesC8& aHeaderData )
- * indicate that an HTTP header is received.
- * @param aHeaderData Reference to the Header Info
- */
- virtual void HttpHeaderReceived( const TDesC8 &aHeaderData );
-
- /**
- * CIRLogoDownloadEngine::ExtractHeaderValue(const TDesC8& aHeaderData,
- * const TDesC8& aHeaderName,const TDesC8& aDelimeter,
- * TDes8& aHolder) const
- * Used to build the CIRHttpResponseData
- */
- void ExtractHeaderValue(const TDesC8& aHeaderData,
- const TDesC8& aHeaderName,const TDesC8& aDelimeter,
- TDes8& aHolder) const;
-
- /**
- * CIRLogoDownloadEngine::HttpDateHeaderReceived(const TDesC8 &aHeader,const TTime& aTime )
- * Used to build the CIRHttpResponseData members
- */
- void HttpDateHeaderReceived(const TDesC8 &aHeader,const TTime& aTime );
-
-
-private:
- /**
- * pointer to the logo observer object
- */
- MLogoDownloadObserver* iLogoHandle;
-
- /**
- * pointer to the logo observer object
- */
- MLogoDownloadObserver* iTempLogoHandle;
-
- /**
- * pointer to the logo observer object
- */
- MLogoDownloadObserver* iCacheTempLogoHandle;
-
- /**
- * pointer to the preset object
- * temporary preset in the logo downloading usecase
- */
- CIRIsdsPreset* iTempPreset;
-
- /**
- * pointer to the preset object
- * temporary preset in the cache checking usecase
- */
- CIRIsdsPreset* iCacheTempPreset;
-
- /**
- * pointer to the preset object
- * preset used to conver CIRPreset to CIRIsdsPreset
- */
- CIRIsdsPreset* iCopyPreset;
-
- /**
- * Network controller handle pointer
- */
- CIRNetworkController *iIRNetworkControllerHandle;
-
- /**
- * Preset Array for downloading logo
- */
- CArrayPtrFlat<CIRIsdsPreset>* iPresetArray;
-
- /**
- * Preset Array for checking cache
- */
- CArrayPtrFlat<CIRIsdsPreset>* iCachePresetArray;
-
- /**
- * MLogoDownloadObserver array for downloading logo
- */
- CArrayPtrFlat<MLogoDownloadObserver>* iObserverArray;
-
- /**
- * MLogoDownloadObserver array for checking cache
- */
- CArrayPtrFlat<MLogoDownloadObserver>* iCacheObserverArray;
-
- /**
- * To keep track whether the req came for Favorites or NPV(downloading logo)
- */
- CArrayFixFlat<TInt>* iReqFromArray;
-
- /**
- * To keep track whether the req came for Favorites or NPV(checking cache)
- */
- CArrayFixFlat<TInt>* iCacheReqFromArray;
-
- /**
- * Separate session for the logo downloading
- */
- RHTTPSession iLogoSession;
-
- /**
- * http transaction
- */
- RHTTPTransaction iTransaction;
-
- /**
- * for the transactions with cache mgmt
- */
- CIRCacheMgmt *iCache;
-
- /**
- * Pointer to Response header data
- */
- CIRHttpResponseData* iResponseHeaders;
-
- /**
- * boolean for to know the status of the downloading logo
- */
- TBool iRunning;
-
- /**
- * body of the transaction request
- */
- TDesC8* iReqBody;
-
- /**
- * body of the transaction response
- */
- HBufC8* iRespBody;
-
- /**
- * size of the response body
- */
- TInt iRespBodySize;
-
- /**
- * state of the transaction
- */
- TState iState;
-
- /**
- * status, from which the preset has modified
- */
- TBool iPresetModifiedStatus;
-
-
- /**
- * iPresetArray position
- */
- TInt iPresetArrayPos;
-
- /**
- * position of the iReqFromArray
- */
- TInt iReqFromArrayPos;
-
- /**
- * position of the iObserverArray
- */
- TInt iObserverArrayPos;
-
- /**
- * position of the iCachePresetArray
- */
- TInt iCachePresetArrayPos;
-
- /**
- * position of the iCacheReqFromArray
- */
- TInt iCacheReqFromArrayPos;
-
- /**
- * position of the iCacheObserverArray
- */
- TInt iCacheObserverArrayPos;
-
- /**
- * status of cache request
- */
- TInt iCacheReqFrom;
-
- /**
- * temporary variable for the status of request
- */
- TInt iTempReqFrom;
-
- /**
- * boolean to verify first time or not
- */
- TBool iFirstTime;
-
- /**
- * ETrue if logo is available in cache
- */
- TBool iLogoCached;
-
- /**
- * boolean for forcibly getting the logo from cache
- */
- TBool iForceGet;
-
- /**
- * boolean for to track whether the cache request has made or not
- */
- TBool iCacheReqMade;
-
- /**
- * response from the cache for the availability of logo(CacheNotValid,NotCached,CacheUseable)
- */
- TInt iResult;
-
- /**
- * status on cache checking
- */
- TBool iCheckingCache;
-
- /**
- * integer for the status of sending the logo
- */
- TInt iSendingLogo;
-
- /**
- * Using for temporarily till the isds provides urls
- */
- TInt iImageIndex;
-
- /**
- * this is used while making a conditional GET request
- */
- TTime iLastModifiedTime;
-
- /**
- * this is used while making a conditional GET request
- */
- TBuf8 < KMAXHEADERLENGTHS > iETag;
-
- /**
- * this is used to track whether the request is conditional GET or non-conditional GET
- */
- TBool iIsConditionalGET;
-
- /**
- * Status of the logo download in the network up and down scenarios
- */
- TBool iLogoRequestPending;
-
- /**
- * status of the response code
- */
- TInt iRespCode;
-
-};
-
-#endif // IRLOGODOWNLOADENGINE_H