diff -r d1daf54a55b5 -r 1957042d8c7e filemanager/bkupengine/src/CMMCScBkupStateArchiveOpDataOwners.cpp --- a/filemanager/bkupengine/src/CMMCScBkupStateArchiveOpDataOwners.cpp Tue Feb 02 00:03:31 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,272 +0,0 @@ -/* -* 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: CMMCScBkupStateArchiveOpDataOwners implementation -* -* -*/ - -#include "CMMCScBkupStateArchiveOpDataOwners.h" - -// System includes -#include -#include -#include - -// User includes -#include "MMCScBkupLogger.h" -#include "CMMCScBkupArchive.h" -#include "RMMCScBkupProgressSizer.h" -#include "CMMCScBkupArchiveFooter.h" -#include "CMMCScBkupDataOwnerInfo.h" -#include "CMMCScBkupIndexDataOwners.h" -#include "MMMCScBkupProgressObserver.h" -#include "CMMCScBkupDataOwnerCollection.h" -#include "MMMCScBkupArchiveDataInterface.h" - - - -// ========================= MEMBER FUNCTIONS ================================ - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpDataOwners::CMMCScBkupStateArchiveOpDataOwners() -// -// C++ constructor. -// --------------------------------------------------------------------------- -CMMCScBkupStateArchiveOpDataOwners::CMMCScBkupStateArchiveOpDataOwners( MMMCScBkupDriver& aDriver ) -: CMMCScBkupStateOpAware( aDriver ), iIndexValueCurrent( -1 ) - { - __LOG1("CMMCScBkupStateArchiveOpDataOwners::CMMCScBkupStateArchiveOpDataOwners() - 0x%08x", StateId().iUid ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpDataOwners::~CMMCScBkupStateArchiveOpDataOwners() -// -// Destructor. -// --------------------------------------------------------------------------- -CMMCScBkupStateArchiveOpDataOwners::~CMMCScBkupStateArchiveOpDataOwners() - { - Cancel(); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpDataOwners::NewL() -// -// -// --------------------------------------------------------------------------- -CMMCScBkupStateArchiveOpDataOwners* CMMCScBkupStateArchiveOpDataOwners::NewL( MMMCScBkupDriver& aDriver ) - { - CMMCScBkupStateArchiveOpDataOwners* self = new(ELeave) CMMCScBkupStateArchiveOpDataOwners( aDriver ); - return self; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpDataOwners::StateId() -// -// -// --------------------------------------------------------------------------- -TMMCScBkupStateId CMMCScBkupStateArchiveOpDataOwners::StateId() const - { - return KMMCScBkupStateIdArchiveOpDataOwners; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpDataOwners::NextStateBackupId() -// -// -// --------------------------------------------------------------------------- -TMMCScBkupStateId CMMCScBkupStateArchiveOpDataOwners::NextStateBackupId( TBool /*aPartial*/ ) const - { - return KMMCScBkupStateIdArchiveOpArchiveFooter; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpDataOwners::NextStateRestoreId() -// -// -// --------------------------------------------------------------------------- -TMMCScBkupStateId CMMCScBkupStateArchiveOpDataOwners::NextStateRestoreId( TBool /*aPartial*/ ) const - { - return KMMCScBkupStateIdValidateDiskSpace; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpDataOwners::PerformStateInitBackupL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpDataOwners::PerformStateInitBackupL( TBool /*aPartial*/ ) - { - // Work is carried out inside asynchronous step - CompleteSelf(); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpDataOwners::PerformStateInitRestoreL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpDataOwners::PerformStateInitRestoreL( TBool /*aPartial*/ ) - { - // Restore each data owner asynchronously - CompleteSelf(); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpDataOwners::PerformAsynchronousStateStepBackupL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpDataOwners::PerformAsynchronousStateStepBackupL( TBool /*aPartial*/ ) - { - CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners(); - CMMCScBkupArchiveFooter& footer = Driver().DrvArchive().Footer(); - CMMCScBkupIndexBase& indexBase = footer.IndexByType(EMMCScBkupOwnerDataTypeDataOwner); - CMMCScBkupIndexDataOwners& index = static_cast< CMMCScBkupIndexDataOwners& >( indexBase ); - const TInt count = dataOwners.Count(); - // - if ( ++iIndexValueCurrent < count ) - { - CMMCScBkupDataOwnerInfo& owner = dataOwners.Owner( iIndexValueCurrent ); - - // Externalise - MMMCScBkupArchiveDataInterface& archiveDataInterface = ADI(); - RWriteStream stream( archiveDataInterface.ADIWriteStreamUncompressedLC() ); - stream << owner; - stream.CommitL(); - CleanupStack::PopAndDestroy(); // stream - - - // Save the offset of the data owner - const TMMCScBkupArchiveVector& info = archiveDataInterface.ADICurrentArchiveVectorInfo(); - index.AddIndexRecordL( info ); - - // Now move on to the next data owner - CompleteSelf(); - } - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpDataOwners::PerformAsynchronousStateStepRestoreL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpDataOwners::PerformAsynchronousStateStepRestoreL( TBool /*aPartial*/ ) - { - CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners(); - CMMCScBkupArchiveFooter& footer = Driver().DrvArchive().Footer(); - CMMCScBkupIndexBase& indexBase = footer.IndexByType( EMMCScBkupOwnerDataTypeDataOwner ); - CMMCScBkupIndexDataOwners& index = static_cast< CMMCScBkupIndexDataOwners& >( indexBase ); - const TInt count = index.Count(); - __LOG1( "CMMCScBkupStateArchiveOpDataOwners::PerformAsynchronousStateStepRestoreL() - %d data owner index records...", count ); - // - if ( ++iIndexValueCurrent < count ) - { - const TMMCScBkupArchiveVector& entry = index.At( iIndexValueCurrent ); - __LOG3( "CMMCScBkupStateArchiveOpDataOwners::PerformAsynchronousStateStepRestoreL() - entry[%03d] at offset: 0x%08x, length: %4d", iIndexValueCurrent, entry.Offset(), entry.Length() ); - - MMMCScBkupArchiveDataInterface& archiveDataInterface = ADI(); - RReadStream stream( archiveDataInterface.ADIReadStreamUncompressedLC( entry.Offset() ) ); - - // Internalize a new entry and add it to the data owner collection - CMMCScBkupDataOwnerInfo* dataOwner = CMMCScBkupDataOwnerInfo::NewLC( stream ); - dataOwners.AppendL( dataOwner ); - CleanupStack::Pop( dataOwner ); - - // Tidy up & check that we didn't read too much - oops - const TMMCScBkupArchiveVector& readInfo = archiveDataInterface.ADICurrentArchiveVectorInfo(); - if ( readInfo.Length() > entry.Length() ) - { - __LOG( "CMMCScBkupStateArchiveOpDataOwners::PerformAsynchronousStateStepRestoreL() - ERROR - Read too much data! -> leave with KErrCorrupt" ); - User::Leave( KErrCorrupt ); - } - CleanupStack::PopAndDestroy(); // stream - - // Continue to next entry - CompleteSelf(); - } - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpDataOwners::PerformLastRightsBackupL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpDataOwners::PerformLastRightsBackupL( TBool /*aPartial*/ ) - { - CMMCScBkupIndexBase& index = Driver().DrvArchive().Footer().IndexByType( EMMCScBkupOwnerDataTypeDataOwner ); - index.StoreL( Driver() ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpDataOwners::PerformLastRightsRestoreL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpDataOwners::PerformLastRightsRestoreL( TBool /*aPartial*/ ) - { - // Calculate restore byte size (for all drives) - CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners(); - const TInt64 totalDataRestoreSize = dataOwners.TotalOperationalSizeL(); - - // Inform progress manager - if(Driver().DrvLastCategory()) - { - __LOG2("CMMCScBkupStateArchiveOpDataOwners::PerformLastRightsRestoreL() - report progress understood (%Ld + %Ld)", - totalDataRestoreSize, Driver().DrvTotalProgress()); - Driver().DrvProgressHandler().MMCScBkupHandleProgressDomainUnderstood( totalDataRestoreSize + Driver().DrvTotalProgress()); - } - else - { - __LOG2("CMMCScBkupStateArchiveOpDataOwners::PerformLastRightsRestoreL() - adding progress amount %Ld to existing %Ld)", - totalDataRestoreSize, Driver().DrvTotalProgress()); - Driver().DrvStoreTotalProgress( totalDataRestoreSize ); - } - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpDataOwners::PerformAsynchronousErrorCleanupRestore() -// -// -// --------------------------------------------------------------------------- -TBool CMMCScBkupStateArchiveOpDataOwners::PerformAsynchronousErrorCleanupRestore( TBool /*aPartial*/, TInt aError ) - { - (void) aError; - __LOGFILE1("CMMCScBkupStateArchiveOpDataOwners::PerformAsynchronousErrorCleanupRestore() - **** - error: %d", aError ); - - // Just try to skip the data owner. - CompleteSelf(); - return ETrue; - } - - - - - - - - - -