diff -r 7333d7932ef7 -r 8b7f4e561641 installationservices/swinstallationfw/inc/siftransporttask.h --- a/installationservices/swinstallationfw/inc/siftransporttask.h Tue Aug 31 15:21:33 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,161 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "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: -* The file defines a base class for SIF Transport tasks and a factory function for them. -* -*/ - - -/** - @file - @publishedAll - @released -*/ - -#ifndef SIFTRANSPORTTASK_H -#define SIFTRANSPORTTASK_H - -#include -#include - -namespace Usif - { - - /** An auxiliary data structure for passing task's parameters across the SIF Transport library. */ - struct TTransportTaskParams - { - IMPORT_C TTransportTaskParams(); - CComponentInfo* iComponentInfo; - TComponentId iComponentId; - const TDesC* iFileName; - RFile* iFileHandle; - const COpaqueNamedParams* iCustomArguments; - COpaqueNamedParams* iCustomResults; - const TSecurityContext* iSecurityContext; - TRequestStatus* iRequestStatus; - enum { EInvalidComponentId = -1 }; - }; - -// =========================================================================================================== - - /** - The core class of the SIF Transport library. - - It defines an abstract interface for SIF Transport tasks. These tasks are instantiated - and executed to handle processing of incoming software management requests. - - Each Transport task is executed in the context of the active object. If a task issues - a request to an asynchronous service provider, it should use a @see TRequestStatus - object provided in @see TTransportTaskParams. Otherwise, tasks that don't issue - asynchronous requests must complete this request status themselves before they leave - the @see CSifTransportTask::ExecuteImplL method. In order to simplify tasks that don't - deal with asynchronous service providers the AutoCompletion mode has been implementd. In this - mode the request status is completed automatically by the base class. The AutoCompletion - mode is enabled by default and should be disabled in constructors of tasks that issue - asynchronous requests. - - An implementation of the Transport Task Factory defined below is responsible for - instantiating Transport tasks. - */ - class CSifTransportTask : public CBase - { - protected: - /** - Constructs the object. - - @param aParams Parameters needed to execute the task. Please - see @see TTransportTaskParams for details. - @param aAutoCompletion Enables the AutoCompletion mode. - */ - IMPORT_C CSifTransportTask(TTransportTaskParams& aParams, TBool aAutoCompletion = ETrue); - - /** Destroys the object. */ - IMPORT_C virtual ~CSifTransportTask(); - - /** - Implementation of this abstract method is supposed to process an incoming software - management request. - - If this method leaves with any error code the execution of the task terminates - immediately. The leave code is passed to the user as a request completion code. - - @return TBool, ETrue it the processing of a software management request has been - completed and the task can be cleaned up, EFalse if the method must be called again - for further processing. - */ - IMPORT_C virtual TBool ExecuteImplL() = 0; - - /** - Cancels the execution of an asynchronous task. - - The default implementation is empty. Tasks that issue requests to asynchronous - service providers must implement this method in order to cancel them. - */ - IMPORT_C virtual void CancelImpl(); - - /** Gets the id of a component */ - IMPORT_C TComponentId ComponentId() const; - /** Gets the file name of a package */ - IMPORT_C const TDesC* FileName() const; - /** Gets the file handle of a package */ - IMPORT_C RFile* FileHandle(); - /** Gets custom arguments */ - IMPORT_C const COpaqueNamedParams* CustomArguments() const; - /** Gets custom results */ - IMPORT_C COpaqueNamedParams* CustomResults(); - /** Gets security context */ - IMPORT_C const TSecurityContext* SecurityContext() const; - /** Gets request status associated with the task */ - IMPORT_C TRequestStatus* RequestStatus(); - /** Gets component info */ - IMPORT_C CComponentInfo* ComponentInfo(); - - private: - // These methods are used only by the CSifTransportRequest class to execute and cancel SIF Transport tasks - friend class CSifTransportRequest; - TBool Execute(); - void Cancel(); - - private: - CSifTransportTask(const CSifTransportTask&); - CSifTransportTask& operator=(const CSifTransportTask&); - - TTransportTaskParams& iParams; - TBool iAutoCompletion; - }; - -// =========================================================================================================== - - /** - Definition of a factory function for the SIF Transport library. The @see SifTransportRequest class uses implementations - of this function to instantiate and execute appropriate SIF Transport tasks. It happens in response to incoming software - management requests. - */ - namespace TransportTaskFactory - { - enum TTaskType - { - EGetComponentInfo, - EInstall, - EUninstall, - EActivate, - EDeactivate - }; - - typedef CSifTransportTask* (*GenerateTask)(TTaskType aTaskType, TTransportTaskParams& aParams); - } - - } // namespace Usif - -#endif // SIFTRANSPORTTASK_H