diff -r 8e6fa1719340 -r 4455192101e4 pushmtm/Plugins/PushContentHandler/PushMtmAutoFetchOperation.cpp --- a/pushmtm/Plugins/PushContentHandler/PushMtmAutoFetchOperation.cpp Wed Sep 01 12:31:04 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,235 +0,0 @@ -/* -* 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: Implementation of CPushMtmAutoFetchOperation. -* -*/ - - - -// INCLUDE FILES - -#include "PushMtmAutoFetchOperation.h" -#include "PushMtmFetchOperation.h" -#include "PushContentHandlerPanic.h" -#include "PushMtmLog.h" - -// CONSTANTS - -/// Max retry. -LOCAL_D const TInt KMaxTry = 2; - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------- -// CPushMtmAutoFetchOperation::NewL -// --------------------------------------------------------- -// -CPushMtmAutoFetchOperation* CPushMtmAutoFetchOperation::NewL - ( - const TDesC& aRequestedUrl, - TInt aTimeDelayInSec, - TRequestStatus& aObserverRequestStatus - ) - { - CPushMtmAutoFetchOperation* op = - new (ELeave) CPushMtmAutoFetchOperation - ( aTimeDelayInSec, aObserverRequestStatus ); - CleanupStack::PushL( op ); - op->ConstructL( aRequestedUrl ); - CleanupStack::Pop(); // op - return op; - } - -// --------------------------------------------------------- -// CPushMtmAutoFetchOperation::~CPushMtmAutoFetchOperation -// --------------------------------------------------------- -// -CPushMtmAutoFetchOperation::~CPushMtmAutoFetchOperation() - { - Cancel(); - delete iFetchOp; - delete iRequestedUrl; - iTimer.Close(); - } - -// --------------------------------------------------------- -// CPushMtmAutoFetchOperation::StartL -// --------------------------------------------------------- -// -void CPushMtmAutoFetchOperation::StartL() - { - PUSHLOG_ENTERFN("CPushMtmAutoFetchOperation::StartL") - - Cancel(); - - iTry = 0; - iState = EFetch; - - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete( status, KErrNone ); - - PUSHLOG_LEAVEFN("CPushMtmAutoFetchOperation::StartL") - } - -// --------------------------------------------------------- -// CPushMtmAutoFetchOperation::CPushMtmAutoFetchOperation -// --------------------------------------------------------- -// -CPushMtmAutoFetchOperation::CPushMtmAutoFetchOperation - - ( - TInt aTimeDelayInSec, - TRequestStatus& aObserverRequestStatus - ) -: CActive( EPriorityStandard ), - iObserver( aObserverRequestStatus ), - iState( EInit ), - iTimeDelayInSec( aTimeDelayInSec ) - { - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------- -// CPushMtmAutoFetchOperation::ConstructL -// --------------------------------------------------------- -// -void CPushMtmAutoFetchOperation::ConstructL( const TDesC& aRequestedUrl ) - { - PUSHLOG_ENTERFN("CPushMtmAutoFetchOperation::ConstructL") - - iRequestedUrl = HBufC::NewMaxL( aRequestedUrl.Length() ); - iRequestedUrl->Des().Copy( aRequestedUrl ); - - User::LeaveIfError( iTimer.CreateLocal() ); - - PUSHLOG_LEAVEFN("CPushMtmAutoFetchOperation::ConstructL") - } - -// --------------------------------------------------------- -// CPushMtmAutoFetchOperation::FetchL -// --------------------------------------------------------- -// -void CPushMtmAutoFetchOperation::FetchL() - { - PUSHLOG_ENTERFN("CPushMtmAutoFetchOperation::FetchL") - - delete iFetchOp; - iFetchOp = NULL; - iStatus = KRequestPending; - SetActive(); - iFetchOp = CPushMtmFetchOperation::NewL( *iRequestedUrl, iStatus ); - PUSHLOG_WRITE(" Fetch op created") - - ++iTry; // Increase indicator. - PUSHLOG_WRITE_FORMAT(" Try: %d",iTry) - iFetchOp->StartL(); - iState = ECheck; // Next state. - PUSHLOG_WRITE(" Fetch op started") - - PUSHLOG_LEAVEFN("CPushMtmAutoFetchOperation::FetchL") - } - -// --------------------------------------------------------- -// CPushMtmAutoFetchOperation::DoCancel -// --------------------------------------------------------- -// -void CPushMtmAutoFetchOperation::DoCancel() - { - if ( iFetchOp ) - { - iFetchOp->Cancel(); - } - - iTimer.Cancel(); - - TRequestStatus* status = &iObserver; - User::RequestComplete( status, KErrCancel ); - } - -// --------------------------------------------------------- -// CPushMtmAutoFetchOperation::RunL -// --------------------------------------------------------- -// -void CPushMtmAutoFetchOperation::RunL() - { - PUSHLOG_ENTERFN("CPushMtmAutoFetchOperation::RunL") - - __ASSERT_DEBUG( iState != EInit && iState != EDone, - ContHandPanic( EPushContHandPanAutBadState ) ); - - switch ( iState ) - { - case EFetch: - { - PUSHLOG_WRITE(" EFetch") - FetchL(); - break; - } - - case ECheck: - { - PUSHLOG_WRITE_FORMAT2(" ECheck: %d,%d",iStatus.Int(),iTry) - if ( iStatus.Int() != KErrNone && iTry < KMaxTry ) - { - // Wait and Retry. - iTimer.Cancel(); - iStatus = KRequestPending; - SetActive(); - TTimeIntervalMicroSeconds32 delayInMSec = - iTimeDelayInSec * 1000000; - iTimer.After( iStatus, delayInMSec ); - iState = EFetch; - } - else - { - // No error or no more trial allowed. - iState = EDone; - PUSHLOG_WRITE_FORMAT(" SignalObs: %d",iStatus.Int()); - TRequestStatus* status = &iObserver; - User::RequestComplete( status, iStatus.Int() ); - } - break; - } - - default: - { - PUSHLOG_WRITE(" default") - // JIC. - iState = EDone; - TRequestStatus* status = &iObserver; - User::RequestComplete( status, KErrNone ); - break; - } - } - - PUSHLOG_LEAVEFN("CPushMtmAutoFetchOperation::RunL") - } - -// --------------------------------------------------------- -// CPushMtmAutoFetchOperation::RunError -// --------------------------------------------------------- -// -TInt CPushMtmAutoFetchOperation::RunError( TInt aError ) - { - PUSHLOG_WRITE_FORMAT("CPushMtmAutoFetchOperation::RunError <%d>",aError); - - // Signal the observer that a leave has occured. - TRequestStatus* status = &iObserver; - User::RequestComplete( status, aError ); - - return KErrNone; - } - -// End of file.