diff -r 0aa8cc770c8a -r 4a793f564d72 connectivitymodules/SeCon/services/pcd/src/sconbackuprestore.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/connectivitymodules/SeCon/services/pcd/src/sconbackuprestore.cpp Wed Sep 01 12:20:56 2010 +0100 @@ -0,0 +1,208 @@ +/* +* Copyright (c) 2005-2008 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: CSConBackupRestore implementation +* +*/ + + +// INCLUDE FILES +#include + +#include "sconbackuprestore.h" +#include "sconsbeclient.h" +#include "sconbrqueue.h" +#include "sconpcdconsts.h" + +#include "debug.h" + +// ============================= MEMBER FUNCTIONS =============================== + + +// ----------------------------------------------------------------------------- +// CSConBackupRestore* CSConBackupRestore::NewL( CSConBackupRestoreQueue* aQueue, +// cost TInt& aMaxObjectSize ) +// Two-phase constructor +// ----------------------------------------------------------------------------- +// +CSConBackupRestore* CSConBackupRestore::NewL( CSConBackupRestoreQueue* aQueue, + const TInt aMaxObjectSize, RFs& aFs ) + { + CSConBackupRestore* self = new (ELeave) CSConBackupRestore( aQueue, aFs ); + CleanupStack::PushL( self ); + self->ConstructL( aMaxObjectSize ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CSConBackupRestore::CSConBackupRestore( CSConBackupRestoreQueue* aQueue ) +// Constructor +// ----------------------------------------------------------------------------- +// +CSConBackupRestore::CSConBackupRestore( CSConBackupRestoreQueue* aQueue, RFs& aFs ) : + CActive( EPriorityStandard ), iQueue( aQueue ), iFs( aFs ) + { + } + +// ----------------------------------------------------------------------------- +// CSConBackupRestore::ConstructL( const TInt aMaxObjectSize ) +// Initializes member data +// ----------------------------------------------------------------------------- +// +void CSConBackupRestore::ConstructL( const TInt aMaxObjectSize ) + { + iMaxObjectSize = aMaxObjectSize; + iSBEClient = CSConSBEClient::NewL( aMaxObjectSize, iFs ); + CActiveScheduler::Add( iSBEClient ); + } + +// ----------------------------------------------------------------------------- +// CSConBackupRestore::~CSConBackupRestore() +// Destructor +// ----------------------------------------------------------------------------- +// +CSConBackupRestore::~CSConBackupRestore() + { + if( iSBEClient ) + { + iSBEClient->Cancel(); + delete iSBEClient; + iSBEClient = NULL; + } + } + +// ----------------------------------------------------------------------------- +// CSConBackupRestore::StartBackupRestore( TInt aTaskId ) +// Starts backup-restore task +// ----------------------------------------------------------------------------- +// +void CSConBackupRestore::StartBackupRestore( TInt aTaskId ) + { + iBackupRestoreActive = ETrue; + CSConTask* task = NULL; + + TInt ret = iQueue->GetTask( aTaskId, task ); + + if( aTaskId > 0 && ret != KErrNotFound ) + { + iCurrentTask = aTaskId; + iQueue->SetTaskProgress( aTaskId, KSConCodeProcessingStarted ); + } + + switch( task->GetServiceId() ) + { + case ESetBURMode : + iQueue->ChangeQueueProcessStatus(); + iSBEClient->SetBURMode( iStatus, task ); + break; + case EListPublicFiles : + iSBEClient->ListPublicFiles( iStatus, task ); + break; + case EListDataOwners : + iSBEClient->ListDataOwners( iStatus, task ); + break; + case EGetDataSize : + iSBEClient->GetDataSize( iStatus, task ); + break; + case ERequestData : + iSBEClient->RequestData( iStatus, task ); + break; + case EGetDataOwnerStatus : + iSBEClient->GetDataOwnerStatus( iStatus, task ); + break; + case ESupplyData : + iSBEClient->SupplyData( iStatus, task ); + break; + default : + break; + } + + SetActive(); + } + +// ----------------------------------------------------------------------------- +// CSConBackupRestore::StopBackupRestore( TInt aTaskId ) +// Stops executing backup-restore task +// ----------------------------------------------------------------------------- +// +void CSConBackupRestore::StopBackupRestore( TInt aTaskId ) + { + TRACE_FUNC_ENTRY; + //if the task is active, do cancel + if( iCurrentTask == aTaskId ) + { + iBackupRestoreActive = EFalse; + iSBEClient->Cancel(); + } + TRACE_FUNC_EXIT; + } + +// ----------------------------------------------------------------------------- +// CSConBackupRestore::Reset() +// Resets backup +// ----------------------------------------------------------------------------- +// +void CSConBackupRestore::Reset() + { + TRACE_FUNC_ENTRY; + if( iSBEClient ) + { + iSBEClient->Cancel(); + delete iSBEClient; + iSBEClient = NULL; + } + + TRAPD( err, iSBEClient = CSConSBEClient::NewL( iMaxObjectSize, iFs ) ); + + if( err == KErrNone ) + { + CActiveScheduler::Add( iSBEClient ); + } + + iBackupRestoreActive = EFalse; + TRACE_FUNC_EXIT; + } + +// ----------------------------------------------------------------------------- +// CSConBackupRestore::BackupRestoreActive() +// returns backup-restore activity status +// ----------------------------------------------------------------------------- +// +TBool CSConBackupRestore::BackupRestoreActive() const + { + return iBackupRestoreActive; + } +// ----------------------------------------------------------------------------- +// CSConBackupRestore::DoCancel() +// Implementation of CActive::DoCancel() +// ----------------------------------------------------------------------------- +// +void CSConBackupRestore::DoCancel() + { + TRACE_FUNC; + } + +// ----------------------------------------------------------------------------- +// CSConBackupRestore::RunL() +// Implementation of CActive::RunL() +// ----------------------------------------------------------------------------- +// +void CSConBackupRestore::RunL() + { + TRACE_FUNC; + iQueue->CompleteTask( iCurrentTask, iStatus.Int() ); + iBackupRestoreActive = EFalse; + } + +// End of file