diff -r 000000000000 -r 667063e416a2 landmarks/locationlandmarks/localaccess/inc/EPos_CPosLmLocalInitializeOp.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/landmarks/locationlandmarks/localaccess/inc/EPos_CPosLmLocalInitializeOp.h Tue Feb 02 01:06:48 2010 +0200 @@ -0,0 +1,130 @@ +/* +* Copyright (c) 2002-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: Operation for initializing a landmark database. +* +* +*/ + + + +#ifndef CPOSLMLOCALINITIALIZEOP_H +#define CPOSLMLOCALINITIALIZEOP_H + +#include +#include +#include "EPos_TPosOperationStatus.h" + +class CPosLmLocalDatabase; + +/** +* Operation for initializing a landmark database. This operation can be +* either synchronous or asynchronous. +* +* @lib eposlmlocalaccess.lib +*/ +NONSHARABLE_CLASS(CPosLmLocalInitializeOp) : public CPosLmOperation + { + + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param[in] aDb A landmark database. + */ + static CPosLmLocalInitializeOp* NewL( CPosLmLocalDatabase& aDb ); + + virtual ~CPosLmLocalInitializeOp(); + + public: // Data types + + /** + * Specifies the type of the initialize operation. + */ + enum TInitializeType + { + EInitialize = 0, + ELangSwitch = 1, + EIndexBuild = 2, + ERecover = 4 + }; + + public: // From CPosLmOperation. + + /* + * This function sends an asynchronous message to the Landmarks Server. + * Upon the first call to this function, the server starts to initialize + * the database. The server then continues to initialize the database + * even if this function is never called again. Subsequent calls to this + * function will report progress. + * + * @param[out] aStatus The request status. Will be completed when the step + * has been performed. The request status will be @p KRequestPending + * if the step has not completed. It will be + * @p KPosLmOperationNotComplete if the step has completed but more + * steps are needed before the operation has finished, The request + * status will be @p KErrNone if the operation has finished + * successfully. The status will be set to an error code if the + * operation has failed. + * @param[out] aProgress Will be set to he progress of the operation when the + * step has finished. + */ + void NextStep( TRequestStatus& aStatus, TReal32& aProgress ); + + /** + * Synchonous execution of the database initialization. + * When this function returns, the operation has finished. + */ + void ExecuteL(); + + private: + + /** + * C++ default constructor. + * @param[in] aDb A landmark db. + */ + CPosLmLocalInitializeOp( CPosLmLocalDatabase& aDb ); + + void ConstructL(); + + void CompleteRequest(TRequestStatus& aStatus, TInt aReason); + + // Prohibit copy constructor if not deriving from CBase. + CPosLmLocalInitializeOp(const CPosLmLocalInitializeOp&); + // Prohibit assigment operator if not deriving from CBase. + CPosLmLocalInitializeOp& operator=(const CPosLmLocalInitializeOp&); + + private: // Data + + // Landmark database (no ownership). + CPosLmLocalDatabase* iDb; + + // Init type + TInitializeType iInitType; + + TBool iInitNotNeeded; + + TPosOperationStatus iOperationStatus; + + // Receive package for the status + TPckgBuf iStatusPckg; + + // Receive package for the progress + TPckg* iProgressPckg; + + TPckg* iInitFlagPckg; + TUint* iInitFlag; + }; + +#endif // CPOSLMLOCALINITIALIZEOP_H +