--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pushmtm/MtmUtilInc/PushAsyncOpRunner.h Mon Mar 30 12:49:49 2009 +0300
@@ -0,0 +1,172 @@
+/*
+* 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 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:
+* This file contains the class definition of CPushAsyncOpRunner.
+*
+*
+*/
+
+
+
+#ifndef PUSHASYNCOPRUNNER_H
+#define PUSHASYNCOPRUNNER_H
+
+// INCLUDES
+
+#include "PushMtmOperation.h"
+#include <e32std.h>
+#include <msvstd.h>
+
+// FORWARD DECLARATIONS
+
+class CMsvSession;
+class CMsvOperation;
+
+// CLASS DECLARATION
+
+/**
+* This class is intended as a base class of asynchronous ui operations.
+* It provides the syntax, and the semantics should be implemented by derived classes:
+* default implementations are provided, and derived classes may override this.
+* The main goal was to make those Push Mtm Ui's functions asynchronous, that are
+* really asynchronous, and avoid making them synchronous with using
+* CActiveScheduler::Start() and CActiveScheduler::Stop(). This makes the
+* design clearer and may prevent some problems raised by the usage of Start()'s and
+* Stop()'s.
+*/
+class CPushAsyncOpRunner : public CPushMtmOperation
+ {
+ public: // Functions from base classes
+
+ /**
+ * Start or restart the operation. OnStartupL is called. See OnStartupL.
+ * @return None.
+ */
+ IMPORT_C void StartL();
+
+ /**
+ * Get progress information.
+ * @return A package buffer (of type TPushMtmProgressBuf), containing
+ * progress information.
+ */
+ IMPORT_C const TDesC8& ProgressL();
+
+ protected: // Constructors and destructor
+
+ /**
+ * Constructor. CActiveScheduler::Add( this ) is called. Derived
+ * classes shouldn't call CActiveScheduler::Add( this ) in their constructor.
+ * @param aSession Msv session to use.
+ * @param aEntryId Id of the context to operate on.
+ * @param aObserverStatus Observer status.
+ * @return None.
+ */
+ IMPORT_C CPushAsyncOpRunner( CMsvSession& aSession,
+ const TMsvId aEntryId,
+ TRequestStatus& aObserverStatus );
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C virtual ~CPushAsyncOpRunner();
+
+ protected: // New functions
+
+ /**
+ * This method is called from StartL. Default implementation returns ETrue
+ * and sets aIsObserving to EFalse.
+ * @param aIsObserving Used only if the function returns EFalse.
+ * In this case
+ * indicate in this variable if this operation observes
+ * an other one. If so, then it is set to active, but
+ * not completed - this will be made by the observed
+ * operation.
+ * Derived classes may override this.
+ * @return Return ETrue if the operation has completed. Return EFalse
+ * if the operation has not completed yet. In the latter case
+ * parameter aIsObserving is also used.
+ */
+ IMPORT_C virtual TBool OnStartupL( TBool& aIsObserving );
+
+ /**
+ * This method is called from RunL. Default implementation returns ETrue
+ * and sets aIsObserving to EFalse.
+ * @param aIsObserving Used only if the function returns EFalse.
+ * In this case
+ * indicate in this variable if this operation observes
+ * an other one. If so, then it is set to active, but
+ * not completed - this will be made by the observed
+ * operation.
+ * Derived classes may override this.
+ * @return Return ETrue if the operation has completed. Return EFalse
+ * if the operation has not completed yet. In the latter case
+ * parameter aIsObserving is also used.
+ */
+ IMPORT_C virtual TBool OnRunLActionL( TBool& aIsObserving );
+
+ /**
+ * Set observed operation and take ownership.
+ * @param aOp The operation.
+ * @return None.
+ */
+ IMPORT_C void SetOperation( CMsvOperation* aOp );
+
+ /**
+ * Delete the observed operation.
+ * @return None.
+ */
+ IMPORT_C void DeleteOperation();
+
+ /**
+ * Return the observed operation.
+ * @return The operation.
+ */
+ IMPORT_C CMsvOperation& Operation();
+
+ protected: // Functions from base classes
+
+ /**
+ * RunL protocol implementation. See OnRunLActionL.
+ * @return None.
+ */
+ IMPORT_C void RunL();
+
+ /**
+ * Default implementation cancels the observed operation, and
+ * completes the observer with KErrCancel.
+ * Derived classes may override this.
+ * @return None.
+ */
+ IMPORT_C void DoCancel();
+
+ /**
+ * Default implementation cancels the observed operation,
+ * completes the observer with aError and forwards the
+ * error to the scheduler.
+ * Derived classes may override this.
+ * @param aError Leave code.
+ * @return aError.
+ */
+ IMPORT_C TInt RunError( TInt aError );
+
+ private: // Data members
+
+ TBool iReady; ///< ETrue, if the operation is ready.
+ CMsvOperation* iOperation; ///< The observed operation. Has.
+ TBufC8<1> iDummyProgressBuf; ///< Dummy progress buffer. Ignored.
+ };
+
+#endif // PUSHASYNCOPRUNNER_H
+
+// End of file.