diff -r 3f419852be07 -r 364021cecc90 smartinstaller/adm/inc/ADMDownloadHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/smartinstaller/adm/inc/ADMDownloadHandler.h Wed Jun 30 11:01:26 2010 +0530 @@ -0,0 +1,113 @@ +/* +* Copyright (c) 2009-2010 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: +* Declares DownloadHandler class for application. +* +* +*/ + + +#ifndef __ADMDOWNLOADHANDLER_H__ +#define __ADMDOWNLOADHANDLER_H__ + +#include +#include +#include "globals.h" +#include "networkstatusobserver.h" + +// Forward declarations +class CADMAppUi; +class CNetworkStatusListener; +class RFileLogger; + +class CDownloadHandler : public CBase, + public MHttpDownloadMgrObserver, + public MNetworkStatusObserver + { +public: + class MDownloadClient + { + public: + virtual void HandleIapChanged( const TUint32 aIAP ) = 0; + virtual void HandleHttpFetchCompleted( const TDesC& aDlFilename, const TInt aDownloadType, const TInt32 aBytesDownloaded, const TReal32 aAvgDlSpeed, const TInt64 aDlTime ) = 0; + virtual void HandleHttpFetchInProgress( const TInt32 aDownloaded, const TInt32 aTotalDownloadSize, const TReal32 aAvgDlSpeed ) = 0; + virtual void HandleHttpFetchFailure( const TDesC& aDlFilename, const TInt aGlobalErrorId, const TInt aErrorId, const TInt aFetchType ) = 0; + virtual void HandleDownloadDeleting() = 0; + }; + +#ifdef USE_LOGFILE +public: + static CDownloadHandler* NewL(MDownloadClient* aDlClient, RFileLogger& aLogger, const TBool aMasterInstance); + void Log(TRefByValue aFmt, ...); + +private: + CDownloadHandler( MDownloadClient* aDlClient, RFileLogger& aLogger, const TBool aMasterInstance ); + +private: + RFileLogger& iLog; ///< Not Owned + +#else +public: + static CDownloadHandler* NewL(MDownloadClient* aDlClient, const TBool aMasterInstance); + static CDownloadHandler* NewLC(MDownloadClient* aDlClient, const TBool aMasterInstance); + +private: + CDownloadHandler( MDownloadClient* aDlClient, const TBool aMasterInstance ); +#endif + +public: + ~CDownloadHandler(); + +public: + void HandleDMgrEventL( RHttpDownload& aDownload, THttpDownloadEvent aEvent ); + void StartDownloadL( const TDesC8& aDepUrl, const TDesC& aFileName, const TDesC& aDownloadPath, const TInt aFetchType ); + void CancelAllDownloads(); + void SetIAP( TUint32 aIAP ); + + inline EDownloadError GetDownloadError() const + { + return iDownloadError; + } + + //From MNetworkStatusObserver + void HandleNetworkStatusChangedL( const TInt aStatus ); + +private: + void ConstructL(); + TBool ProcessDlErrors(const TInt32 aGlErrId, const TInt32 aErrId, EDownloadError& aDownloadError); + TInt64 UpdateDownloadSpeed(const TInt32 aBytesDownloaded); + void DoHandleHttpFetchFailure(const TDesC& aDlFilename, const TInt aGlobalErrorId, const TInt aErrorId); + +private: + MDownloadClient* iDlClient; + CNetworkStatusListener* iNetworkStatusListener; + TInt iFetchType; + TBool iMasterInstance; + TBool iNetworkLost; // ETrue, if used network connection is lost during download + TBool iCancelled; // ETrue, if called HandleHttpFailure() + HBufC8* iUrl; + TPtrC8 iPtrToUrl; //to avoid a temporary TPtrC8 being passed by IPC + HBufC* iResponseBodyFileName; + TPtr iPtrToResponseBodyFileName; + RHttpDownloadMgr iDownloadManager; + TInt32 iIAP; + TInt iConnectionAttempt; + EDownloadError iDownloadError; + TInt iDownloadState; + TInt iProgressState; + TTime iDlStartTime; + TReal32 iDlAvgSpeed; + }; + +#endif //__ADMDOWNLOADHANDLER_H__