diff -r b183ec05bd8c -r 19bba8228ff0 fotaapplication/fotaserver/inc/FotaDlClient.h --- a/fotaapplication/fotaserver/inc/FotaDlClient.h Tue Aug 31 16:04:06 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,269 +0,0 @@ -/* - * Copyright (c) 2005 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: Fota download client - * - */ -#ifndef FOTADLCLIENT_H -#define FOTADLCLIENT_H - -//All UI related headers -#include -#include -#include - -//All download manager related headers -#include -#include -#include - -//All user includes -#include "FotaSrvDebug.h" - -using namespace WRT; - -//Forward declarations -class DownloadManagerClient; - -//Enums for mapping download manager operation status -enum DLReturns - { - EOk = 0, ENotOk - }; - -//Enums for type of download mechanism -enum TDownloadType - { - THttpDownload = 0, //HTTP download mechanism - TOmaDL10Download, //OMA DL1.0 download mechanism - TUnknownType - //Unknown download mechanism - }; - -//Enums for client (fota) side errors. This is used to know why client decided to pause/cancel the download. -enum TClientErrorType - { - ErrorNone = 0, //No error - - //Device side errors - UserCancelled = 100,//User cancelled download - NeedMoreMemory, //Memory insufficient to start download - - //Server side errors - InvalidContentType = 200 - //Content type invalid. ie. either HTTP nor OMA DL1.0 - }; - -/** - * This is the download client class. - * - * @lib fotaserver - * @since SF^4 - */ -class DownloadClient : public QObject - { -Q_OBJECT - -public: - /** - * Constructor. - */ - DownloadClient(DownloadManagerClient* aObserver); - - /** - * Destructor. - */ - ~DownloadClient(); - - /** - * Creates a single download with the download manager - * - * @since SF^4 - * @param url - the source which is to be downloaded - * @param type - determines the type of download. Either parallel or sequential. - * @return One of DLReturns - */ - TInt CreateDownload(const QString& url, DownloadType type); - - /** - * Sets the required attributes for the single download. - * - * @since SF^4 - * @return One of DLReturns - */ - TInt SetDownloadAttributes(); - - /** - * Gets the attribute of the single download - * - * @since SF^4 - * @param attr - the attribute of the download for which value is needed. - * @return The value of the attribute. Caller should read the value in right format. - */ - QVariant GetDownloadAttribute(DownloadAttribute attr); - - /** - * Starts the single download. Download should be created and attributes set before this. - * - * @since SF^4 - * @param None - * @return One of DLReturns - */ - TInt Start(); - - /** - * Pauses the single download. - * - * @since SF^4 - * @param Client reason for pausing the download. - * @return One of DLReturns - */ - TInt Pause(TClientErrorType aReason); - - /** - * Resumes the single download. - * - * @since SF^4 - * @param None - * @return One of DLReturns - */ - TInt Resume(); - - /** - * Cancels the single download. - * - * @since SF^4 - * @param Client reason for cancelling the download. - * @return One of DLReturns - */ - TInt Cancel(TClientErrorType aReason); - - /** - * Restarts the single download. This is equivalent to cancel and start on Download. - * - * @since SF^4 - * @param None - * @return None - */ - TInt Restart(); - -private slots: - - /** - * The slot which receives all the single download events. - * - * @since SF^4 - * @param event - the download event - * @return true, if handled here. Otherwise false. - */ - bool DownloadEventRecieved(DownloadEvent *event); - -private: - /** - * Called to update the progress of download to fota server. This fetches the percentage - * of download from download manager. - * - * @since SF^4 - * @param None - * @return None - */ - void UpdateDownloadProgress(); - - /** - * Called when download is complete, either successfully or unsuccessfully. - * The arguments to this function is read to know the actual status. - * - * @since SF^4 - * @param dlevent - the event of the single download - * @param err0 - the last error occured - * @return None - */ - void HandleDownloadComplete(Download::State dlstate, int err0 = 0); - - /** - * Called to handle the post download interrupt operation when client cancels/pauses download. - * - * @since SF^4 - * @param dlstate - the state of the single download - * @param err0 - the last error occured - * @return None - */ - void HandleClientInterrupt(Download::State dlstate, int err0); - - /** - * Called to read the OMA DL1.0 download descriptor. This will update the fota server with size and version. - * - * @since SF^4 - * @param None - * @return None - */ - void ReadDescriptorData(); - - /** - * Called to validate the content type of the download as received in header. - * - * @since SF^4 - * @param aContent - the content type as received in the header - * @return One of TDownloadType - */ - TDownloadType CheckContentType(const QString aContent); - - void SetSubDownloadAttributes(); - -private: - - /** - * The Fota download manger client. This is not owned - */ - DownloadManagerClient* iFotaDlMgrClient; - - /** - * The Download object of the single download - */ - Download *iDownload; - - /** - * Progress of the download. true when download progressing, otherwise false. - */ - TBool iProgress; - - /** - * The total size of the download (ie. update package). - */ - int iTotalSize; - - /** - * To tell if space check has happened or not, before the start of the download. - */ - bool iSpaceChecked; - - /** - * To tell if client has interrupted download or not. The reason will be in iClientError. - */ - bool iClientinterrupted; - - /** - * Holds the client error that caused the download to cancel or pause. - */ - TClientErrorType iClientError; - - /** - * The state of the single download. This corresponds to the state received in the download event slot. - */ - Download::State iDlState; - - TDownloadType iContentType; - - }; - -#endif // FOTADLCLIENT_H