filemanager/src/fmbkupengine/src/CMMCScBkupStateGetDataOwnerStatuses.cpp
changeset 14 1957042d8c7e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/fmbkupengine/src/CMMCScBkupStateGetDataOwnerStatuses.cpp	Fri Apr 16 14:53:38 2010 +0300
@@ -0,0 +1,194 @@
+/*
+* 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: CMMCScBkupStateGetDataOwnerStatuses implementation
+*
+*
+*/
+
+#include "CMMCScBkupStateGetDataOwnerStatuses.h"
+
+// System includes
+#include <e32std.h>
+
+// User includes
+#include "MMCScBkupLogger.h"
+#include "CMMCScBkupDataOwnerInfo.h"
+#include "CMMCScBkupDataOwnerCollection.h"
+
+
+
+
+// ========================= MEMBER FUNCTIONS ================================
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupStateGetDataOwnerStatuses::CMMCScBkupStateGetDataOwnerStatuses()
+// 
+// C++ constructor.
+// ---------------------------------------------------------------------------
+CMMCScBkupStateGetDataOwnerStatuses::CMMCScBkupStateGetDataOwnerStatuses( MMMCScBkupDriver& aDriver )
+:   CMMCScBkupState( aDriver )
+    {
+    __LOG1("CMMCScBkupStateGetDataOwnerStatuses::CMMCScBkupStateGetDataOwnerStatuses() - 0x%08x", StateId().iUid );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupStateGetDataOwnerStatuses::~CMMCScBkupStateGetDataOwnerStatuses()
+// 
+// Destructor.
+// ---------------------------------------------------------------------------
+CMMCScBkupStateGetDataOwnerStatuses::~CMMCScBkupStateGetDataOwnerStatuses()
+    {
+    Cancel();
+    //
+    iStatusArray.Close();
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupStateGetDataOwnerStatuses::NewL()
+// 
+// 
+// ---------------------------------------------------------------------------
+CMMCScBkupStateGetDataOwnerStatuses* CMMCScBkupStateGetDataOwnerStatuses::NewL( MMMCScBkupDriver& aDriver )
+    {
+    CMMCScBkupStateGetDataOwnerStatuses* self = new(ELeave) CMMCScBkupStateGetDataOwnerStatuses( aDriver );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupStateGetDataOwnerStatuses::StateId()
+// 
+// 
+// ---------------------------------------------------------------------------
+TMMCScBkupStateId CMMCScBkupStateGetDataOwnerStatuses::StateId() const
+    {
+    return KMMCScBkupStateIdGetDataOwnerStatuses;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupStateGetDataOwnerStatuses::NextStateId()
+// 
+// 
+// ---------------------------------------------------------------------------
+TMMCScBkupStateId CMMCScBkupStateGetDataOwnerStatuses::NextStateId() const
+    {
+    return KMMCScBkupStateIdArchiveOpActiveData;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupStateGetDataOwnerStatuses::PerformStateInitL()
+// 
+// 
+// ---------------------------------------------------------------------------
+void CMMCScBkupStateGetDataOwnerStatuses::PerformStateInitL()
+    {
+    SetState( EPrearingQuery );
+    CompleteSelf();
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupStateGetDataOwnerStatuses::PerformAsynchronousStateStepL()
+// 
+// 
+// ---------------------------------------------------------------------------
+void CMMCScBkupStateGetDataOwnerStatuses::PerformAsynchronousStateStepL()
+    {
+    switch( State() )
+        {
+    case EPrearingQuery:
+        PrepareQueryL();
+        break;
+    case EGettingStatus:
+        Driver().DrvSecureBackupClient().SIDStatusL( iStatusArray );
+        SetState( EProcessingResults );
+        CompleteSelf();
+        break;
+    case EProcessingResults:
+        ProcessStatusResultsL();
+        break;
+    default:
+        ASSERT( EFalse );
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupStateGetDataOwnerStatuses::PrepareQueryL()
+// 
+// 
+// ---------------------------------------------------------------------------
+void CMMCScBkupStateGetDataOwnerStatuses::PrepareQueryL()
+    {
+    const TDataOwnerStatus KMMCScBkupDefaultOwnerStatus = EUnset;
+    const TInt KMMCScBkupDefaultOwnerStatusError = 0;
+
+    // Build an array of all of the active data owners that we require
+    // the statuses for.
+    CMMCScBkupDataOwnerCollection& ownerCollection = Driver().DrvDataOwners();
+    const TInt count = ownerCollection.Count();
+    for(TInt i=0; i<count; i++)
+        {
+        CMMCScBkupDataOwnerInfo& owner = ownerCollection.Owner(i);
+        //
+        if  (owner.Owner().CommonSettings() & EActiveBUR)
+            {
+            const TDataOwnerAndStatus ownerStatus(
+                                        owner.SecureId(),
+                                        KMMCScBkupDefaultOwnerStatus,
+                                        KMMCScBkupDefaultOwnerStatusError);
+            iStatusArray.AppendL( ownerStatus );
+            __LOG1("CMMCScBkupStateGetDataOwnerStatuses::PrepareQueryL() - DO 0x%08x *is* active", owner.SecureId().iId );
+            }
+        else
+            {
+            __LOG1("CMMCScBkupStateGetDataOwnerStatuses::PrepareQueryL() - DO 0x%08x is not active", owner.SecureId().iId );
+            }
+        }
+
+    SetState( EGettingStatus );
+    CompleteSelf();
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupStateGetDataOwnerStatuses::ProcessStatusResultsL()
+// 
+// 
+// ---------------------------------------------------------------------------
+void CMMCScBkupStateGetDataOwnerStatuses::ProcessStatusResultsL()
+    {
+    CMMCScBkupDataOwnerCollection& ownerCollection = Driver().DrvDataOwners();
+    const TInt count = iStatusArray.Count();
+    __LOG1("CMMCScBkupStateGetDataOwnerStatuses::ProcessStatusResultsL() - received %d entries from SBE...", count );
+    for(TInt i=0; i<count; i++)
+        {
+        const TDataOwnerAndStatus& ownerStatus = iStatusArray[i];
+        __LOG4("CMMCScBkupStateGetDataOwnerStatuses::ProcessStatusResultsL() - ownerStatus[%3d] sid: 0x%08x, status: %d, err: %d", 
+            i, ownerStatus.iSID.iId, ownerStatus.iStatus, ownerStatus.iDataOwnerError );
+        //
+        CMMCScBkupDataOwnerInfo* owner = NULL;
+        TRAPD(err, owner = &ownerCollection.OwnerL( ownerStatus.iSID ));
+        if  (err == KErrNone && owner)
+            {
+            owner->SetStatus( ownerStatus.iStatus );
+            }
+        }
+    }
+
+