filemanager/bkupengine/src/CMMCScBkupStateRequestListOfPublicFiles.cpp
branchRCL_3
changeset 20 491b3ed49290
parent 19 95243422089a
child 21 65326cf895ed
--- a/filemanager/bkupengine/src/CMMCScBkupStateRequestListOfPublicFiles.cpp	Thu Aug 19 09:42:45 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,447 +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: CMMCScBkupStateRequestListOfPublicFiles implementation
-*
-*
-*/
-
-#include "CMMCScBkupStateRequestListOfPublicFiles.h"
-
-// System includes
-#include <e32std.h>
-
-// User includes
-#include "MMCScBkupLogger.h"
-#include "MMCScBkupSBEUtils.h"
-#include "CMMCScBkupDataOwnerInfo.h"
-#include "RMMCScBkupProgressSizer.h"
-#include "CMMCScBkupDataOwnerInfo.h"
-#include "MMMCScBkupProgressObserver.h"
-#include "CMMCScBkupFileListCollection.h"
-#include "CMMCScBkupDataOwnerCollection.h"
-
-
-
-
-// ========================= MEMBER FUNCTIONS ================================
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestListOfPublicFiles::CMMCScBkupStateRequestListOfPublicFiles()
-// 
-// C++ constructor.
-// ---------------------------------------------------------------------------
-CMMCScBkupStateRequestListOfPublicFiles::CMMCScBkupStateRequestListOfPublicFiles( MMMCScBkupDriver& aDriver )
-:   CMMCScBkupState( aDriver )
-    {
-    __LOG1("CMMCScBkupStateRequestListOfPublicFiles::CMMCScBkupStateRequestListOfPublicFiles() - 0x%08x", StateId().iUid );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestListOfPublicFiles::~CMMCScBkupStateRequestListOfPublicFiles()
-// 
-// Destructor.
-// ---------------------------------------------------------------------------
-CMMCScBkupStateRequestListOfPublicFiles::~CMMCScBkupStateRequestListOfPublicFiles()
-    {
-    Cancel();
-    //
-    delete iRequestObject;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestListOfPublicFiles::ConstructL()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupStateRequestListOfPublicFiles::ConstructL()
-    {
-    iRequestObject = CMMCScBkupStateRequestSpecificPublicFileInfo::NewL(Driver());
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestListOfPublicFiles::NewL()
-// 
-// 
-// ---------------------------------------------------------------------------
-CMMCScBkupStateRequestListOfPublicFiles* CMMCScBkupStateRequestListOfPublicFiles::NewL( MMMCScBkupDriver& aDriver )
-    {
-    CMMCScBkupStateRequestListOfPublicFiles* self = new(ELeave) CMMCScBkupStateRequestListOfPublicFiles( aDriver );
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestListOfPublicFiles::StateId()
-// 
-// 
-// ---------------------------------------------------------------------------
-TMMCScBkupStateId CMMCScBkupStateRequestListOfPublicFiles::StateId() const
-    {
-    return KMMCScBkupStateIdRequestListOfPublicFiles;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestListOfPublicFiles::NextStateId()
-// 
-// 
-// ---------------------------------------------------------------------------
-TMMCScBkupStateId CMMCScBkupStateRequestListOfPublicFiles::NextStateId() const
-    {
-    return KMMCScBkupStateIdValidateDiskSpace;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestListOfPublicFiles::PerformStateInitL()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupStateRequestListOfPublicFiles::PerformStateInitL()
-    {
-    // Set to -1 so that the first time RunL is called, we start with
-    // the data owner at index 0.
-    iCurrentDataOwnerIndex = -1;
-    CompleteSelf(KErrNone);
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestListOfPublicFiles::PerformAsynchronousStateStepL()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupStateRequestListOfPublicFiles::PerformAsynchronousStateStepL()
-    {
-    CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners();
-    if  (++iCurrentDataOwnerIndex < dataOwners.Count())
-        {
-        CMMCScBkupDataOwnerInfo& owner = dataOwners.Owner(iCurrentDataOwnerIndex);
-
-        const TBool hasPublicFiles = (owner.Owner().PassiveSettings() & EHasPublicFiles);
-        if  (hasPublicFiles)
-            {
-            // Request all the public files (on all supported drives) for this
-            // particular data owner
-            __ASSERT_ALWAYS(iRequestObject->IsActive() == EFalse, User::Invariant());
-            //
-            iRequestObject->RequestL(owner, iStatus);
-            SetActive();
-            }
-        else
-            {
-            // Try next data owner
-            CompleteSelf();
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestListOfPublicFiles::PerformAsynchronousErrorCleanup()
-// 
-// 
-// ---------------------------------------------------------------------------
-TBool CMMCScBkupStateRequestListOfPublicFiles::PerformAsynchronousErrorCleanup(TInt aError)
-    {
-    (void) aError;
-    __LOG1("CMMCScBkupStateRequestListOfPublicFiles::PerformAsynchronousErrorCleanup() - **** - error: %d", aError );
-
-    // Cancel requester. Its probably already inactive, but just in case...
-    PerformAsynchronousCancellation();
-
-    // Reset state and move to next item. Treat the current (badly behaving) item
-    // as completed/processed.
-    CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners();
-    if  ( iCurrentDataOwnerIndex < dataOwners.Count() )
-        {
-        CMMCScBkupDataOwnerInfo& owner = dataOwners.Owner( iCurrentDataOwnerIndex );
-        (void) owner;
-        __LOGFILE2("CMMCScBkupStateRequestListOfPublicFiles::PerformAsynchronousErrorCleanup() - **** - error: %d, SID: 0x%08x - PUBLIC data skipped for DO", aError, owner.SecureId().iId );
-
-        // Ensures that asynchronous state step is called again..
-        CompleteSelf();
-        }
-
-    return ETrue;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestListOfPublicFiles::PerformAsynchronousCancellation()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupStateRequestListOfPublicFiles::PerformAsynchronousCancellation()
-    {
-    if  ( iRequestObject )
-        {
-        iRequestObject->Cancel();
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestListOfPublicFiles::PerformLastRightsL()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupStateRequestListOfPublicFiles::PerformLastRightsL()
-    {
-    // Now we can calculate the progress        
-    TInt64 totalProgressAmount = 0;
-
-    // Calculate the total progress required for the entire backup operation
-    CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners();
-    const TInt count = dataOwners.Count();
-    //
-    RMMCScBkupProgressSizer sizer( Driver().DrvParamsBase().DriveAndOperations() );
-    for(TInt i=0; i<count; i++)
-        {
-        CMMCScBkupDataOwnerInfo& owner = dataOwners.Owner( i );
-        //
-        totalProgressAmount += sizer.BackupTotalProgressValueL( owner );
-        }
-
-    // Check whether all categories have been processed and either store current 
-    // progress information in driver or inform progress handler about cumulative progress.
-    // If size is getting beyond file system limitation (2GB), leave with KErrxxx.
-    if(Driver().DrvLastCategory())
-        {
-        __LOG2("CMMCScBkupStateRequestListOfPublicFiles::PerformLastRightsL() - report progress understood (%Ld + %Ld)", 
-            totalProgressAmount, Driver().DrvTotalProgress());
-        
-        Driver().DrvStoreTotalProgress( totalProgressAmount );
-
-        if( Driver().DrvTotalProgress() > KMaxTInt )
-            {
-            __LOG1("CMMCScBkupStateRequestListOfPublicFiles::PerformLastRightsL() - leaving with KErrNotSupported due amount of data (%Ld)", 
-                Driver().DrvTotalProgress());
-            Driver().DrvProgressHandler().MMCScBkupStartBackuping( EFalse );
-            User::Leave( KErrNotSupported );
-            }
-        else
-            {
-            Driver().DrvProgressHandler().MMCScBkupHandleProgressDomainUnderstood( Driver().DrvTotalProgress() );
-            }
-        }
-    else
-        {
-        __LOG2("CMMCScBkupStateRequestListOfPublicFiles::PerformLastRightsL() - adding progress amount %Ld to existing %Ld)", 
-            totalProgressAmount, Driver().DrvTotalProgress());
-            
-        if( (totalProgressAmount + Driver().DrvTotalProgress()) > KMaxTInt )
-            {
-            __LOG1("CMMCScBkupStateRequestListOfPublicFiles::PerformLastRightsL() - leaving due amount of data (%Ld)", 
-                totalProgressAmount + Driver().DrvTotalProgress());
-            User::Leave(KErrNotSupported);
-            }
-        else
-            {
-            Driver().DrvStoreTotalProgress( totalProgressAmount );
-            }
-        }
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestSpecificPublicFileInfo::CMMCScBkupStateRequestSpecificPublicFileInfo()
-// 
-// 
-// ---------------------------------------------------------------------------
-CMMCScBkupStateRequestSpecificPublicFileInfo::CMMCScBkupStateRequestSpecificPublicFileInfo( MMMCScBkupDriver& aDriver )
-:   CMMCScBkupDriveSpecificRequest( aDriver.DrvParamsBase().DriveAndOperations(), EMMCScBkupOwnerDataTypePublicData ), iDriver(aDriver)
-    {
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestSpecificPublicFileInfo::NewL()
-// 
-// 
-// ---------------------------------------------------------------------------
-CMMCScBkupStateRequestSpecificPublicFileInfo* CMMCScBkupStateRequestSpecificPublicFileInfo::NewL( MMMCScBkupDriver& aDriver )
-    {
-    CMMCScBkupStateRequestSpecificPublicFileInfo* self = new (ELeave) CMMCScBkupStateRequestSpecificPublicFileInfo(aDriver);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestSpecificPublicFileInfo::RequestL()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupStateRequestSpecificPublicFileInfo::RequestL( CMMCScBkupDataOwnerInfo& aOwner, TRequestStatus& aObserver )
-    {
-    iOwner = &aOwner;
-    CMMCScBkupDriveSpecificRequest::RequestL( aObserver );
-
-    // Start the asynchronous request. 
-    CompleteSelf(KErrNone);
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestSpecificPublicFileInfo::RunL()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupStateRequestSpecificPublicFileInfo::RunL()
-    {
-    __LOG1("CMMCScBkupStateRequestSpecificPublicFileInfo::RunL() - START - iStatus: %d", iStatus.Int());
-    User::LeaveIfError(iStatus.Int());
-    //
-    CDataOwnerInfo& owner = iOwner->Owner();
-    const TDriveList& ownerDrives = owner.DriveList();
-    TDriveNumber drive = EDriveA;
-    const TBool driveAvailable = NextValidDrive(drive, ownerDrives);
-    const TSecureId secureId = iOwner->SecureId();
-
-    __LOG3("CMMCScBkupStateRequestSpecificPublicFileInfo::RunL() - secureId: 0x%08x, driveAvailable: %d, drive: %c", secureId.iId, driveAvailable, drive + 'A');
-
-    if  (driveAvailable)
-        {
-        // This drive needs to be scanned...
-        TInt err( KErrNone );
-        RFileArray files;
-        CleanupClosePushL(files);
-
-        // Get a copy of the generic data type for which we are
-        // requesting file listings...
-        CSBGenericDataType* genericDataType = CSBSecureId::NewL( secureId );
-        CleanupStack::PushL( genericDataType );
-        TRAP( err, Driver().DrvSecureBackupClient().PublicFileListL( drive, *genericDataType, files ) );
-        if( err != KErrNone && err != KErrNotFound )
-            {
-            User::Leave( err );
-            }
-        CleanupStack::PopAndDestroy( genericDataType );
-        // Additionally we need to request list of public files registered for packages.
-        if( MMCScBkupSBEUtils::HasSystemDataL( owner ) )
-            {
-            RFileArray pkgFiles;
-            CleanupClosePushL( pkgFiles );
-            __LOG2("CMMCScBkupStateRequestSpecificPublicFileInfo::RunL() - have %d files before package listing for DO, err %d", files.Count(), err);
-            TRAP( err, Driver().DrvSecureBackupClient().PublicFileListL( drive, owner.Identifier(), pkgFiles ) );
-            __LOG2("CMMCScBkupStateRequestSpecificPublicFileInfo::RunL() - have %d package files for DO, err %d", files.Count(), err);
-            const TInt pkgCount = pkgFiles.Count();
-            for(TInt i = 0; i < pkgCount; i++)
-                {
-                files.AppendL( pkgFiles[i] );
-                }
-            CleanupStack::PopAndDestroy( &pkgFiles );
-            }
-
-        // Add to the file list
-        __LOG1("CMMCScBkupStateRequestSpecificPublicFileInfo::RunL() - have %d files for DO", files.Count());
-        if  (files.Count())
-            {
-
-            // We want to be told by the public file collection exactly which files
-            // it added... We need to do this in order to report progress as accurately 
-            // as possible during the backup operation.
-            RArray< const CMMCScBkupFileInfo* > addedItems;
-            CleanupClosePushL(addedItems);
-            
-            // Add them to the public data file collection
-            Driver().DrvFileList().AppendL( files, addedItems, secureId );
-            
-            // For each identified file, update the data owner with the size of public data
-            const TInt count = addedItems.Count();
-            for(TInt i=0; i<count; i++)
-                {
-                const CMMCScBkupFileInfo& file = *addedItems[i];
-                const TInt size = file.Size();
-                //
-                __LOG3("CMMCScBkupStateRequestSpecificPublicFileInfo::RunL() - file[%04d] = %S, size: %d", i, &file.FileName(), size);
-                iOwner->AddToOperationalSizeL( EMMCScBkupOwnerDataTypePublicData, drive, size );
-                }
-            //
-            CleanupStack::PopAndDestroy( &addedItems );
-            }
-        //
-        CleanupStack::PopAndDestroy( &files );
-
-        // Complete ourself to try the next drive
-        CompleteSelf( KErrNone );
-        }
-    else
-        {
-        CompleteObserverRequest( KErrNone );
-        }
-
-    __LOG("CMMCScBkupStateRequestSpecificPublicFileInfo::RunL() - END");
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupStateRequestSpecificPublicFileInfo::DoCancel()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupStateRequestSpecificPublicFileInfo::DoCancel()
-    {
-    }
-
-
-
-