diff -r 95243422089a -r 491b3ed49290 filemanager/bkupengine/src/CMMCScBkupStateArchiveOpSystemData.cpp --- a/filemanager/bkupengine/src/CMMCScBkupStateArchiveOpSystemData.cpp Thu Aug 19 09:42:45 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,367 +0,0 @@ -/* -* Copyright (c) 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: CMMCScBkupStateArchiveOpSystemData implementation -* -* -*/ - -#include "CMMCScBkupStateArchiveOpSystemData.h" - -// User includes -#include "MMCScBkupLogger.h" -#include "CMMCScBkupDataOwnerCollection.h" -#include "CMMCScBkupDataOwnerInfo.h" -#include "MMCScBkupSBEUtils.h" -#include "CMMCScBkupArchive.h" -#include "CMMCScBkupArchiveFooter.h" -#include "CMMCScBkupIndexWithIdentifier.h" -#include "MMMCScBkupArchiveDataInterface.h" - - - -// ========================= MEMBER FUNCTIONS ================================ - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::CMMCScBkupStateArchiveOpSystemData() -// -// C++ constructor. -// --------------------------------------------------------------------------- -CMMCScBkupStateArchiveOpSystemData::CMMCScBkupStateArchiveOpSystemData( MMMCScBkupDriver& aDriver ) -: CMMCScBkupStateOpAware( aDriver ), iIndexValueCurrent( -1 ) - { - __LOG1("CMMCScBkupStateArchiveOpSystemData::CMMCScBkupStateArchiveOpSystemData() - 0x%08x", StateId().iUid ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::~CMMCScBkupStateArchiveOpSystemData() -// -// Destructor. -// --------------------------------------------------------------------------- -CMMCScBkupStateArchiveOpSystemData::~CMMCScBkupStateArchiveOpSystemData() - { - Cancel(); - // - delete iBackupTransferObject; - delete iRestoreTransferObject; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::NewL() -// -// -// --------------------------------------------------------------------------- -CMMCScBkupStateArchiveOpSystemData* CMMCScBkupStateArchiveOpSystemData::NewL( MMMCScBkupDriver& aDriver ) - { - CMMCScBkupStateArchiveOpSystemData* self = new(ELeave) CMMCScBkupStateArchiveOpSystemData( aDriver ); - return self; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::StateId() -// -// -// --------------------------------------------------------------------------- -TMMCScBkupStateId CMMCScBkupStateArchiveOpSystemData::StateId() const - { - return KMMCScBkupStateIdArchiveOpSystemData; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::NextStateBackupId() -// -// -// --------------------------------------------------------------------------- -TMMCScBkupStateId CMMCScBkupStateArchiveOpSystemData::NextStateBackupId( TBool /*aPartial*/ ) const - { - return KMMCScBkupStateIdArchiveOpJavaData; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::NextStateRestoreId() -// -// -// --------------------------------------------------------------------------- -TMMCScBkupStateId CMMCScBkupStateArchiveOpSystemData::NextStateRestoreId( TBool /*aPartial*/ ) const - { - return KMMCScBkupStateIdArchiveOpJavaData; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::PerformStateInitBackupL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpSystemData::PerformStateInitBackupL( TBool /*aPartial*/ ) - { - __DEBUG_TESTING_SKIP_BACKUP_SYS_DATA; - - iBackupTransferObject = CMMCScBkupWriteDataTransferRequest< TPackageDataType >::NewL( - Driver(), - *this, - EMMCScBkupOwnerDataTypeSystemData, - EPackageTransferDerivedType, - ESystemData - ); - CompleteSelf(); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::PerformStateInitRestoreL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpSystemData::PerformStateInitRestoreL( TBool /*aPartial*/ ) - { - __LOG("CMMCScBkupStateArchiveOpSystemData::PerformStateInitRestoreL() - START" ); - __DEBUG_TESTING_SKIP_RESTORE_SYS_DATA; - - iRestoreTransferObject = CMMCScBkupReadDataTransferRequest< TPackageDataType >::NewL( - Driver(), - EMMCScBkupOwnerDataTypeSystemData, - ESystemData - ); - - CompleteSelf(); - __LOG("CMMCScBkupStateArchiveOpSystemData::PerformStateInitRestoreL() - END" ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousStateStepBackupL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousStateStepBackupL( TBool /*aPartial*/ ) - { - CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners(); - const TInt count = dataOwners.Count(); - // - while ( ++iIndexValueCurrent < count ) - { - CMMCScBkupDataOwnerInfo& owner = dataOwners.Owner( iIndexValueCurrent ); - // - if ( owner.CompletionStatus( EMMCScBkupOwnerDataTypeSystemData ) == EFalse ) - { - // Request all the system data (on all supported drives) for this - // particular data owner - __ASSERT_ALWAYS( iBackupTransferObject->IsActive() == EFalse, User::Invariant() ); - iBackupTransferObject->RequestL( owner, - iStatus, - Driver().DrvParamsBase().DriveAndOperations() ); - SetActive(); - break; // while loop - } - } - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousStateStepRestoreL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousStateStepRestoreL( TBool /*aPartial*/ ) - { - CMMCScBkupIndexBase& indexBase = Driver().DrvArchive().Footer().IndexByType( EMMCScBkupOwnerDataTypeSystemData ); - CMMCScBkupIndexWithIdentifier< TInt32 >& index = static_cast< CMMCScBkupIndexWithIdentifier< TInt32 >& >( indexBase ); - const TInt count = index.Count(); - __LOG1("CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousStateStepRestoreL() - START - %d data owners...", count ); - // - if ( ++iIndexValueCurrent < count ) - { - __LOG2("CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousStateStepRestoreL() - getting system data index record [%03d/%03d]", iIndexValueCurrent + 1, count); - const CMMCScBkupIndexEntry< TInt32 >& entry = index.At( iIndexValueCurrent ); - iSecureId = entry.Identifier(); - - __LOG("CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousStateStepRestoreL() - getting sub-entries for index record..."); - const RArray< TMMCScBkupArchiveDriveAndVector >& subEntries = entry.Entries(); - __LOG1("CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousStateStepRestoreL() - got %d sub-entries for index record", subEntries.Count()); -#ifdef __MMCSCBKUPLOGGING_ENABLED__ - for(TInt i=0; iIsActive() == EFalse, User::Invariant() ); - - // Request all the system data (on all supported drives) for this - // particular data owner - iRestoreTransferObject->RequestL( owner, - iStatus, - subEntries ); - SetActive(); - } - else - { - CompleteSelf(); - } - } - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousErrorCleanupBackup() -// -// -// --------------------------------------------------------------------------- -TBool CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousErrorCleanupBackup( TBool /*aPartial*/, TInt aError ) - { - (void) aError; - __LOG1("CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousErrorCleanupBackup() - error: %d", aError ); - - // Reset state and move to next item. Treat the current (badly behaving) item - // as completed/processed. - CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners(); - if ( iIndexValueCurrent < dataOwners.Count() ) - { - CMMCScBkupDataOwnerInfo& owner = dataOwners.Owner( iIndexValueCurrent ); - owner.SetCompletionStatus( EMMCScBkupOwnerDataTypeSystemData, ETrue ); - - __LOGFILE2("CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousErrorCleanupBackup() - **** - error: %d, SID: 0x%08x - system data skipped for DO", aError, owner.SecureId().iId ); - } - - CompleteSelf(); - return ETrue; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousErrorCleanupRestore() -// -// -// --------------------------------------------------------------------------- -TBool CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousErrorCleanupRestore( TBool /*aPartial*/, TInt aError ) - { - (void) aError; - __LOGFILE1("CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousErrorCleanupRestore() - **** - error: %d", aError ); - - // If system data restore phase returns "not supported", let's treat it as - // such an error, that other data types for this data owner are not - // allowed to restore either. - - if( aError == KErrNotSupported || aError == KErrAlreadyExists ) - { - CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners(); - CMMCScBkupDataOwnerInfo* owner = NULL; - TRAPD( err, owner = &dataOwners.OwnerL( iSecureId ) ); - if( err == KErrNone && owner ) - { - owner->SetCompletionStatus( EMMCScBkupOwnerDataTypeJavaData, ETrue ); - owner->SetCompletionStatus( EMMCScBkupOwnerDataTypePublicData, ETrue ); - owner->SetCompletionStatus( EMMCScBkupOwnerDataTypeSystemData, ETrue ); - owner->SetCompletionStatus( EMMCScBkupOwnerDataTypeActiveData, ETrue ); - owner->SetCompletionStatus( EMMCScBkupOwnerDataTypePassiveData, ETrue ); - - __LOGFILE2("CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousErrorCleanupRestore() - **** - error: %d, SID: 0x%08x - all data types skipped for DO", aError, owner->SecureId().iId ); - } - } - - CompleteSelf(); - return ETrue; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousCancellation() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpSystemData::PerformAsynchronousCancellation() - { - if (iBackupTransferObject) - { - iBackupTransferObject->Cancel(); - } - if (iRestoreTransferObject) - { - iRestoreTransferObject->Cancel(); - } - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::PerformLastRightsBackupL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpSystemData::PerformLastRightsBackupL( TBool /*aPartial*/ ) - { - CMMCScBkupIndexBase& index = Driver().DrvArchive().Footer().IndexByType( EMMCScBkupOwnerDataTypeSystemData ); - index.StoreL( Driver() ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::PerformLastRightsRestoreL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpSystemData::PerformLastRightsRestoreL( TBool /*aPartial*/ ) - { - Driver().DrvSecureBackupClient().AllSystemFilesRestored(); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpSystemData::AddIndexRecordL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpSystemData::AddIndexRecordL( CMMCScBkupArchiveFooter& aFooter, CMMCScBkupDataOwnerInfo& aDataOwner, const TMMCScBkupArchiveVector& aInfo, TDriveNumber aDrive ) - { - CMMCScBkupIndexBase& indexBase = aFooter.IndexByType( EMMCScBkupOwnerDataTypeSystemData ); - CMMCScBkupIndexWithIdentifier< TInt32 >& index = static_cast< CMMCScBkupIndexWithIdentifier< TInt32 >& >( indexBase ); - index.AddIndexRecordL( aInfo, aDrive, aDataOwner.SecureId().iId ); - } - - - - - - - - - - - -