--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locsrv_pub/landmarks_api/inc/EPos_CPosLmOperation.h Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,149 @@
+/*
+* Copyright (c) 2005-2006 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: CPosLmOperation class
+*
+*/
+
+
+#ifndef CPOSLMOPERATION_H
+#define CPOSLMOPERATION_H
+
+#include <e32base.h>
+
+class CPosLmOperation;
+
+/**
+* Executes the operation synchronously and then deletes it.
+*
+* All functions which return a @ref CPosLmOperation object can be run
+* incrementally. If the client is not interested in running it
+* incrementally, it can call @ref CPosLmOperation::ExecuteL to run the
+* whole operation in one batch. This can be simplified by using
+* @ref ExecuteAndDeleteLD. It runs the operation and deletes the object
+* when it is done.
+*
+* For instance, to use this function for
+* @ref CPosLandmarkDatabase::InitializeL, the client would call
+*
+* ExecuteAndDeleteLD( database->InitializeL() );
+*
+* The operation object should not be on the cleanup stack when this function
+* is called.
+*
+* @since S60 3.0
+* @param aOperation The operation to handle. It will be deleted when the
+* function returns.
+*/
+inline void ExecuteAndDeleteLD( CPosLmOperation* aOperation );
+
+
+/**
+* Base class for handles to landmark operations.
+*
+* Long running operations in the Landmarks API returns an object of this class
+* so that the client can run it incrementally and check the progress of the
+* operation.
+*
+* The operation must explicitly be run by the client. The operation can
+* be run incrementally by calling @ref NextStep until it does not return
+* the status @p KPosLmOperationNotComplete. Alternately the operation can be
+* run synchronously by calling @ref ExecuteL.
+*
+* @ref ExecuteAndDeleteLD can be used to handle the operation object if
+* it is run in synchronous mode.
+*
+* @lib eposlandmarks.lib
+* @since S60 3.0
+*/
+class CPosLmOperation : public CBase
+ {
+ public:
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C virtual ~CPosLmOperation();
+
+ public:
+
+ /**
+ * Incremental execution of the operation.
+ *
+ * The client should use an active object and call this function until
+ * it does not complete with status @p KPosLmOperationNotComplete.
+ *
+ * When the operation has finished, this function will complete with
+ * status @p KErrNone if the operation was successful, or an error code
+ * if some error was encountered.
+ *
+ * This function also returns a progress of the operation. Progress is a
+ * floating point number in the interval [0.0,1.0]. 0.0 indicates that
+ * the operation has not started and 1.0 indicates that the operation
+ * has completed.
+ *
+ * Note that this function is asynchronous which means that status and
+ * progress may not be set when the function returns. They are only
+ * guaranteed to be set when the request is completed.
+ *
+ * The only way to cancel an operation is to delete the operation
+ * object. This will also cancel any outstanding request to
+ * NextStep().
+ *
+ * @param[out] aStatus The request status. Upon request completion contains
+ * step status:
+ * - @p KPosLmOperationNotComplete if the step has completed but more
+ * steps are needed before the operation will be completed.
+ * - @p KErrNone if the operation has finished successfully.
+ * - An error code if the operation has failed.
+ * @param[out] aProgress Upon request completion is set to the progress
+ * of the operation.
+ *
+ * @panic "Landmarks Client"-EPosInvalidOperationMode
+ * The function is called when the operation is already complete.
+ */
+ virtual void NextStep(
+ TRequestStatus& aStatus,
+ TReal32& aProgress
+ ) = 0;
+
+ /**
+ * Synchronous execution of the operation.
+ *
+ * When this function returns, the operation has finished.
+ *
+ * @panic "Landmarks Client"-EPosInvalidOperationMode
+ * -# This function is called when the operation is already complete
+ * -# The operation has already been started incrementally using @ref NextStep().
+ */
+ virtual void ExecuteL() = 0;
+
+ protected:
+
+ // C++ constructor.
+ IMPORT_C CPosLmOperation();
+
+ private:
+
+ // Prohibit copy constructor
+ CPosLmOperation( const CPosLmOperation& );
+ // Prohibit assigment operator
+ CPosLmOperation& operator= ( const CPosLmOperation& );
+
+ };
+
+#include "EPos_CPosLmOperation.inl"
+
+#endif // CPOSLMOPERATION_H
+
+