--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pushmtm/MtmUtilSrc/PushAsyncOpRunner.cpp Mon Mar 30 12:49:49 2009 +0300
@@ -0,0 +1,194 @@
+/*
+* 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 member definitions of CPushAsyncOpRunner.
+*
+*
+*/
+
+
+
+// INCLUDES
+
+#include "PushAsyncOpRunner.h"
+#include "PushMtmUtilPanic.h"
+#include <msvapi.h>
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CPushAsyncOpRunner::StartL
+// ---------------------------------------------------------
+//
+EXPORT_C void CPushAsyncOpRunner::StartL()
+ {
+ Cancel();
+ TBool isObserving( EFalse );
+ iReady = OnStartupL( isObserving );
+ SetActive();
+ if ( !isObserving )
+ {
+ InvokeRun();
+ }
+ }
+
+// ---------------------------------------------------------
+// CPushAsyncOpRunner::ProgressL
+// ---------------------------------------------------------
+//
+EXPORT_C const TDesC8& CPushAsyncOpRunner::ProgressL()
+ {
+ if ( iOperation )
+ {
+ return iOperation->ProgressL();
+ }
+ else
+ {
+ return iDummyProgressBuf;
+ }
+ }
+
+// ---------------------------------------------------------
+// CPushAsyncOpRunner::CPushAsyncOpRunner
+// ---------------------------------------------------------
+//
+EXPORT_C CPushAsyncOpRunner::CPushAsyncOpRunner( CMsvSession& aSession,
+ const TMsvId aEntryId,
+ TRequestStatus& aObserverStatus )
+: CPushMtmOperation( aSession, aEntryId, aObserverStatus ),
+ iReady( EFalse ),
+ iDummyProgressBuf( KNullDesC8 )
+ {
+ }
+
+// ---------------------------------------------------------
+// CPushAsyncOpRunner::~CPushAsyncOpRunner
+// ---------------------------------------------------------
+//
+EXPORT_C CPushAsyncOpRunner::~CPushAsyncOpRunner()
+ {
+ Cancel();
+ delete iOperation;
+ }
+
+// ---------------------------------------------------------
+// CPushAsyncOpRunner::OnStartupL
+// ---------------------------------------------------------
+//
+EXPORT_C TBool CPushAsyncOpRunner::OnStartupL( TBool& aIsObserving )
+ {
+ aIsObserving = EFalse;
+ return ETrue;
+ }
+
+// ---------------------------------------------------------
+// CPushAsyncOpRunner::OnRunLActionL
+// ---------------------------------------------------------
+//
+EXPORT_C TBool CPushAsyncOpRunner::OnRunLActionL( TBool& aIsObserving )
+ {
+ aIsObserving = EFalse;
+ return ETrue;
+ }
+
+// ---------------------------------------------------------
+// CPushAsyncOpRunner::SetOperation
+// ---------------------------------------------------------
+//
+EXPORT_C void CPushAsyncOpRunner::SetOperation( CMsvOperation* aOp )
+ {
+ delete iOperation;
+ iOperation = NULL;
+ iOperation = aOp;
+ }
+
+// ---------------------------------------------------------
+// CPushAsyncOpRunner::SetOperation
+// ---------------------------------------------------------
+//
+EXPORT_C void CPushAsyncOpRunner::DeleteOperation()
+ {
+ delete iOperation;
+ iOperation = NULL;
+ }
+
+// ---------------------------------------------------------
+// CPushAsyncOpRunner::Operation
+// ---------------------------------------------------------
+//
+EXPORT_C CMsvOperation& CPushAsyncOpRunner::Operation()
+ {
+ __ASSERT_DEBUG( iOperation, UtilPanic( EPushMtmUtilPanNull ) );
+ return *iOperation;
+ }
+
+// ---------------------------------------------------------
+// CPushAsyncOpRunner::DoCancel
+// ---------------------------------------------------------
+//
+EXPORT_C void CPushAsyncOpRunner::DoCancel()
+ {
+ if ( iOperation )
+ {
+ iOperation->Cancel();
+ }
+ CPushMtmOperation::DoCancel();
+ }
+
+// ---------------------------------------------------------
+// CPushAsyncOpRunner::RunError
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CPushAsyncOpRunner::RunError( TInt aError )
+ {
+ if ( iOperation )
+ {
+ iOperation->Cancel();
+ delete iOperation;
+ iOperation = NULL;
+ }
+ return CPushMtmOperation::RunError( aError );
+ }
+
+// ---------------------------------------------------------
+// CPushAsyncOpRunner::RunL
+// ---------------------------------------------------------
+//
+EXPORT_C void CPushAsyncOpRunner::RunL()
+ {
+ if ( iReady )
+ {
+ SignalObserver( KErrNone );
+ }
+ else
+ {
+ TBool isObserving( EFalse );
+ iReady = OnRunLActionL( isObserving );
+ if ( iReady )
+ {
+ SignalObserver( KErrNone );
+ }
+ else
+ {
+ // Invoke RunL again and run OnRunLActionL in it again.
+ SetActive();
+ if ( !isObserving )
+ {
+ InvokeRun();
+ }
+ }
+ }
+ }
+
+// End of file.