diff -r 000000000000 -r 84ad3b177aa3 pushmtm/MtmUtilSrc/PushAsyncOpRunner.cpp --- /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 + +// ================= 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.