diff -r 491b3ed49290 -r 65326cf895ed filemanager/bkupengine/inc/CMMCScBkupState.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filemanager/bkupengine/inc/CMMCScBkupState.h Wed Sep 01 12:31:07 2010 +0100 @@ -0,0 +1,183 @@ +/* +* Copyright (c) 2002 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: Declaration for CMMCScBkupState +* +* +*/ + +#ifndef __CMMCSCBKUPSTATE_H__ +#define __CMMCSCBKUPSTATE_H__ + +// System includes +#include + +// User includes +#include "MMMCScBkupDriver.h" +#include "MMCScBkupStateIds.h" +#include "RMMCScBkupPointerArray.h" +#include "MMMCScBkupArchiveDataInterface.h" + +// Namespaces +using namespace conn; + +// Classes referenced +class CMMCScBkupState; + +/** +* +* +* @since 3.0 +*/ +NONSHARABLE_CLASS(CMMCScBkupState) : public CActive + { + public: + + /** + * Enumeration specifying how state is supposed to be handled + */ + enum TStateExecution + { + EStateOnce = 0, + EStatePerCategory, + EStatePerCategoryCommon + }; + + /** + * Destructor + */ + ~CMMCScBkupState(); + + protected: + + /** + * C++ default constructor + */ + CMMCScBkupState( MMMCScBkupDriver& aDriver, TInt aPriority = CActive::EPriorityIdle ); + + public: + + /** + * Return the unique RTTI id of this state + */ + virtual TMMCScBkupStateId StateId() const = 0; + + /** + * Return the next state that should be executed + * after this state has finished. This allows + * for dynamic changes in the state machine + */ + virtual TMMCScBkupStateId NextStateId() const = 0; + + /** + * Return false if no need for category specific actions, otherwise true + */ + virtual TStateExecution CategorySpecific() const { return EStateOnce; } + + /** + * Perform the action associated with this + * state + */ + void ExecuteL(TRequestStatus& aObserver); + + protected: // Virtual framework + + /** + * Perform the initial action associated with this + * state + */ + virtual void PerformStateInitL() = 0; + + /** + * Perform some asynchronous operation + */ + virtual void PerformAsynchronousStateStepL(); + + /** + * Perform some asynchronous cancellation + */ + virtual void PerformAsynchronousCancellation(); + + /** + * Called just before observer's request is completed + * in the case of an error-free operation. Not called + * when errors occur during state processing. + */ + virtual void PerformLastRightsL(); + + /** + * Called from RunError + */ + virtual TBool PerformAsynchronousErrorCleanup(TInt aError); + + private: // Virtual framework + + /** + * Default behaviour is to panic if called + */ + void RunL(); + + /** + * + */ + void DoCancel(); + + /** + * Default behaviour is to return KErrNone + */ + TInt RunError(TInt aError); + + protected: // Internal API + + /** + * + */ + inline MMMCScBkupDriver& Driver() const { return iDriver; } + + /** + * + */ + inline MMMCScBkupArchiveDataInterface& ADI() const { return iDriver.DrvADI(); } + + /** + * + */ + void CompleteSelf(TInt aCompletionCode = KErrNone); + + /** + * + */ + void SetObserver(TRequestStatus& aStatus); + + private: // Internal API + + /** + * + */ + void CompleteObserver(TInt aCompletionCode); + + private: // Member data + + // Driver + MMMCScBkupDriver& iDriver; + // Observer + TRequestStatus* iObserver; + }; + + + + + +#endif // __CMMCSCBKUPSTATE_H__ + +//End of File