diff -r 000000000000 -r 094583676ce7 wvuing/wvuieng/EngSrc/CCABackgroundTask.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvuing/wvuieng/EngSrc/CCABackgroundTask.cpp Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,281 @@ +/* +* Copyright (c) 2002-2005 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: This is encapsulation of a background task, part of CCARequestMapper +* +*/ + + +// INCLUDE FILES +#include "CCABackgroundTask.h" // Own header +#include "MCABackgroundCallback.h" +#include "MCABackgroundTask.h" + +#include + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CCABackgroundTask* CCABackgroundTask::NewL( + MCABackgroundCallback* aParent + , MCABackgroundTask* aBackgroundTask + , MCABackgroundInterface::TCABackgroundTasks aTask + , TInt aSubTasks +) + { + + CCABackgroundTask* self = CCABackgroundTask::NewLC( aParent + , aBackgroundTask + , aTask + , aSubTasks + ); + CleanupStack::Pop( self ); + + return self; + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::NewLC +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CCABackgroundTask* CCABackgroundTask::NewLC( + MCABackgroundCallback* aParent + , MCABackgroundTask* aBackgroundTask + , MCABackgroundInterface::TCABackgroundTasks aTask + , TInt aSubTasks +) + { + if ( aSubTasks <= 0 ) + { + User::Leave( KErrArgument ); + } + CCABackgroundTask* self = new( ELeave ) CCABackgroundTask( aParent + , aBackgroundTask + , aTask + , aSubTasks + ); + + CleanupStack::PushL( self ); + self->ConstructL(); + + return self; + } + + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::~CCABackgroundTask +// Destructor +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +CCABackgroundTask::~CCABackgroundTask() + { + if ( iIdle ) + { + iIdle->Cancel(); + delete iIdle; + } + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::Start +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CCABackgroundTask::Start() + { + if ( !iIdle->IsActive() ) + { + iIdle->Start( TCallBack( BackgroundTask, this ) ); + } + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::Cancel +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CCABackgroundTask::Cancel() + { + iIdle->Cancel(); + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::Identity +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TBool CCABackgroundTask::Identity( const CCABackgroundTask& aA + , const CCABackgroundTask& aB + ) + { + return ( aA.iTask == aB.iTask ); + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::SubTasks +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CCABackgroundTask::SubTasks() + { + return iSubTasks; + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::TaskState +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +MCABackgroundInterface::TCABackgroundStatus CCABackgroundTask::TaskState() + { + return iTaskState; + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::SetTaskState +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CCABackgroundTask::SetTaskState( + MCABackgroundInterface::TCABackgroundStatus aTaskState ) + { + iTaskState = aTaskState; + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::More +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TBool CCABackgroundTask::More() + { + if ( iSubTasks > 1 ) + { + iSubTasks--; + return ETrue; + } + iSubTasks = 0; + return EFalse; + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::TaskId +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +MCABackgroundInterface::TCABackgroundTasks CCABackgroundTask::TaskId() + { + return iTask; + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::BackgroundTask +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +MCABackgroundTask* CCABackgroundTask::BackgroundTask() + { + return iBackgroundTask; + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::ExecuteTaskL +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CCABackgroundTask::ExecuteTaskL() + { + iBackgroundTask->HandleBackgroundTaskL( iSubTasks ); + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::Pending +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TBool CCABackgroundTask::Pending() + { + return iIdle->IsActive(); + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::CCABackgroundTask +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CCABackgroundTask::CCABackgroundTask( + MCABackgroundCallback* aParent + , MCABackgroundTask* aBackgroundTask + , MCABackgroundInterface::TCABackgroundTasks aTask + , TInt aSubTasks +) : + iParent( aParent ), + iBackgroundTask( aBackgroundTask ), + iTask( aTask ), + iSubTasks( aSubTasks ), + iTaskState( MCABackgroundInterface::EUnknown ) + { + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CCABackgroundTask::ConstructL() + { + iIdle = CIdle::NewL( CActive::EPriorityIdle ); + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::BackgroundTask +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CCABackgroundTask::BackgroundTask( TAny *aInstance ) + { + return static_cast( aInstance )->DoBackgroundTask(); + } + +// ----------------------------------------------------------------------------- +// CCABackgroundTask::DoBackgroundTask +// +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CCABackgroundTask::DoBackgroundTask() + { + return iParent->HandleBackgroundTask( iTask ); + } + +// End of File