--- a/backupandrestore/backuptest/ABTester/src/abdataowner.cpp Mon May 03 13:19:02 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,443 +0,0 @@
-// Copyright (c) 2005-2009 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:
-//
-
-/**
-@file
-
-CABDataOwnerCallbackImplementation implementation
-*/
-
-#include "abdataowner.h"
-#include "abtesterlog.h"
-#include <connect/sbdefs.h>
-
-namespace conn
- {
- const TInt KSourceSize = 8000;
-
- CABDataOwnerCallbackImplementation* CABDataOwnerCallbackImplementation::NewL(TSecureId aID)
- {
- CABDataOwnerCallbackImplementation* self = new (ELeave) CABDataOwnerCallbackImplementation(aID);
- //CleanupStack::PushL(self);
- //self->ConstructL();
- //CleanupStack::Pop(self);
- return self;
- }
-
-
-
- CABDataOwnerCallbackImplementation::CABDataOwnerCallbackImplementation(TSecureId aID) : iABClient(NULL), iVersion(1,0,0), iProxy(EFalse), iSourceSize(KSourceSize), iID(aID)
- {
- }
-
- void CABDataOwnerCallbackImplementation::SetABClient(CActiveBackupClient* aABClient)
- {
- iABClient = aABClient;
- }
-
- CABDataOwnerCallbackImplementation::~CABDataOwnerCallbackImplementation()
- {
- delete iABClient;
- delete iSnapshot;
- delete iData;
- }
-
- // from MActiveBackupDataClient - callbacks
- void CABDataOwnerCallbackImplementation::AllSnapshotsSuppliedL()
- {
- __LOG1("[0x%08x]: CABDataOwnerCallbackImplementation::AllSnapshotsSuppliedL()", iID.iId);
- }
-
- void CABDataOwnerCallbackImplementation::ReceiveSnapshotDataL(TDriveNumber aDrive, TDesC8& aBuffer, TBool /*aLastSection*/)
- {
- __LOG1("[0x%08x]: CABDataOwnerCallbackImplementation::ReceiveSnapshotDataL()", iID.iId);
- // Create or append a buffer containing the snapshot
- if (!iSnapshot)
- {
- iSnapshot = CABData::NewL(aDrive);
- }
-
- iSnapshot->AddDataL(aBuffer);
- }
-
- TUint CABDataOwnerCallbackImplementation::GetExpectedDataSize(TDriveNumber /*aDrive*/)
- {
- __LOG1("[0x%08x]: CABDataOwnerCallbackImplementation::GetExpectedDataSize()", iID.iId);
-
- return iSourceSize;
- }
-
- void CABDataOwnerCallbackImplementation::GetSnapshotDataL(TDriveNumber /*aDrive*/, TPtr8& aBuffer, TBool& aFinished)
- {
- __LOG1("[0x%08x]: CABDataOwnerCallbackImplementation::GetSnapshotDataL()", iID.iId);
- aBuffer.Append(KABTestSnapshot());
-
- aFinished = ETrue;
- }
-
- void CABDataOwnerCallbackImplementation::InitialiseGetBackupDataL(TDriveNumber /*aDrive*/)
- {
- __LOG1("[0x%08x]: CABDataOwnerCallbackImplementation::InitialiseGetBackupData()", iID.iId);
- iOffset = 0;
-
- if (!iSnapshot)
- {
- iFillChar = 66;
- }
- else
- {
- iFillChar = 73;
- }
- }
-
- void CABDataOwnerCallbackImplementation::GetBackupDataSectionL(TPtr8& aBuffer, TBool& aFinished)
- {
- __LOG1("[0x%08x]: CABDataOwnerCallbackImplementation::GetBackupDataSectionL()", iID.iId);
-
- FillBuffer(aBuffer, aFinished);
- }
-
- void CABDataOwnerCallbackImplementation::InitialiseRestoreBaseDataL(TDriveNumber aDrive)
- {
- __LOG("CABDataOwnerCallbackImplementation::InitialiseRestoreBaseDataL()");
-// WaitForMillisecondsL(KABInitTime);
-
- iData = CABData::NewL(aDrive);
- }
-
- void CABDataOwnerCallbackImplementation::RestoreBaseDataSectionL(TDesC8& aBuffer, TBool aFinished)
- {
- __LOG1("[0x%08x]: CABDataOwnerCallbackImplementation::RestoreBaseDataSectionL()", iID.iId);
-
- // append a buffer containing the base data
- iData->AddDataL(aBuffer);
-
- if (aFinished)
- {
- ValidateRestoredData();
-
- delete iData;
- iData = NULL;
- }
- }
-
- void CABDataOwnerCallbackImplementation::InitialiseRestoreIncrementDataL(TDriveNumber aDrive)
- {
- __LOG1("[0x%08x]: CABDataOwnerCallbackImplementation::InitialiseRestoreIncrementDataL()", iID.iId);
- if (!iSnapshot)
- {
- User::Leave(KErrCorrupt);
- }
-
- if (!iData)
- {
- iData = CABData::NewL(aDrive);
- }
- }
-
- void CABDataOwnerCallbackImplementation::RestoreIncrementDataSectionL(TDesC8& aBuffer, TBool aFinished)
- {
- __LOG1("[0x%08x]: CABDataOwnerCallbackImplementation::RestoreIncrementDataSectionL()", iID.iId);
-
- iData->AddDataL(aBuffer);
-
- if (aFinished)
- {
- ValidateRestoredData();
-
- delete iData;
- iData = NULL;
- }
- }
-
- void CABDataOwnerCallbackImplementation::RestoreComplete(TDriveNumber /*aDrive*/)
- {
- __LOG1("[0x%08x]: CABDataOwnerCallbackImplementation::RestoreComplete()", iID.iId);
- }
-
- void CABDataOwnerCallbackImplementation::TerminateMultiStageOperation()
- {
- __LOG1("[0x%08x]: CABDataOwnerCallbackImplementation::TerminateMultiStageOperation()", iID.iId);
- // We also don't do anything here until we start testing multipart?
- }
-
- TUint CABDataOwnerCallbackImplementation::GetDataChecksum(TDriveNumber /*aDrive*/)
- {
- __LOG1("[0x%08x]: CABDataOwnerCallbackImplementation::GetDataChecksum()", iID.iId);
- return 0;
- }
-
- void CABDataOwnerCallbackImplementation::WaitForMillisecondsL(TInt aMilliseconds)
- {
- RTimer timer;
- TRequestStatus status;
-
- User::LeaveIfError(timer.CreateLocal());
-
- timer.After(status, aMilliseconds);
- User::WaitForRequest(status);
- }
-
- TBool CABDataOwnerCallbackImplementation::ValidateRestoredData()
- {
- TBool result = ETrue;
-
- __LOG3("[0x%08x]: Received data : %d %c's", iID.iId, (*iData)().Size(), (*iData)()[0]);
-
- return result;
- }
-
- TBool CABDataOwnerCallbackImplementation::ValidateRestoredSnapshot()
- {
- TBool result = ETrue;
-
- if ((*iSnapshot)() != KABTestSnapshot())
- {
- __LOG1("[0x%08x]: Snapshot was NOT received correctly", iID.iId);
- result = EFalse;
- }
- else
- {
- __LOG1("[0x%08x]: Snapshot was received correctly", iID.iId);
- }
-
- return result;
- }
-
- void CABDataOwnerCallbackImplementation::InitialiseGetProxyBackupDataL(TSecureId aSID, TDriveNumber /*aDrive*/)
- {
- __LOG1("[0x%08x]: CABDataOwnerCallbackImplementation::InitialiseGetProxyBackupDataL()", iID.iId);
- __LOG2("[0x%08x]: Proxy data about to be requested for SID 0x%08x", iID.iId, aSID.iId);
- iProxy = ETrue;
- iOffset = 0;
-
- iFillChar = 80; // 'P'
- }
-
- void CABDataOwnerCallbackImplementation::InitialiseRestoreProxyBaseDataL(TSecureId aSID, TDriveNumber aDrive)
- {
- __LOG1("[0x%08x]: CABDataOwnerCallbackImplementation::InitialiseRestoreProxyBaseDataL()", iID.iId);
- __LOG2("[0x%08x]: Proxy data about to be restored for SID 0x%08x", iID.iId, aSID.iId);
- iProxy = ETrue;
- iData = CABData::NewL(aDrive);
- }
-
- void CABDataOwnerCallbackImplementation::FillBuffer(TDes8& aDes, TBool& aFinished)
- {
- TInt bytesToAdd;
- TChar fillChar(iFillChar);
-
- if ((iOffset + aDes.MaxSize()) < iSourceSize)
- {
- aFinished = EFalse;
- bytesToAdd = aDes.MaxSize();
- }
- else
- {
- aFinished = ETrue;
- bytesToAdd = iSourceSize - iOffset;
- }
-
- aDes.Fill(fillChar, bytesToAdd);
-
- iOffset += bytesToAdd;
- }
-
-
-
-
-
-
- CABDataOwner* CABDataOwner::NewL()
- {
- CABDataOwner* self = new (ELeave) CABDataOwner;
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
- }
-
- void CABDataOwner::StartL()
- {
- CActiveScheduler::Add(this);
- Subscribe();
- CActiveScheduler::Start();
- }
-
- void CABDataOwner::RunL()
- {
- if (iStatus == KErrNone)
- {
- __LOG1("[0x%08x]: ABTester RunL", iID.iId);
- Subscribe();
- CheckStatusL();
- }
- else
- {
- __LOG2("[0x%08x]: RunL leaves with code %d", iID.iId, iStatus.Int());
- User::Leave(iStatus.Int());
- }
- }
-
- void CABDataOwner::Subscribe()
- {
- __LOG1("[0x%08x]: Subscibe", iID.iId);
- iProperty.Subscribe(iStatus); // Wait until SBE tells us that we're in normal mode again
- SetActive();
- }
-
- TInt CABDataOwner::RunError(TInt aError)
- {
- __LOG2("ABDataOwner [0x%08x] Panic'd with error code %d", iID.iId, aError);
-
- Subscribe();
-
- return KErrNone;
- }
-
- void CABDataOwner::CheckStatusL()
- {
- TInt backupInfo =0;
- iProperty.Get(backupInfo);
- __LOG1("[0x%08x]: CABDataOwner::CheckStatus", iID.iId);
- if ((backupInfo & KBURPartTypeMask) == EBURNormal || (backupInfo & KBURPartTypeMask) == EBURUnset)
- {
- delete iABClient;
- iABClient = NULL;
- __LOG2("[0x%08x]: Backup Mode Normal or Unset, deleting client", iID.iId, backupInfo);
- }
- else
- {
- if (iABClient == NULL)
- {
- iABClient = CActiveBackupClient::NewL(iCallback);
- iCallback->SetABClient(iABClient);
- // do nothing
- __LOG1("[0x%08x]: In Backup/Restore: ConfirmReadyForBUR", iID.iId);
- }
-
- TDriveList driveList;
- TBURPartType partType;
- TBackupIncType incType;
- TInt err;
- TRAP(err, iABClient->BURModeInfoL(driveList, partType, incType));
- if (err != KErrNone)
- {
- __LOG2("[0x%08x]: BURModeInfoL error %d", iID.iId, err);
- }
-
- TBool amIaffected = ETrue;
-
- if (partType == EBURRestorePartial || partType == EBURBackupPartial)
- {
- TRAP(err, amIaffected = iABClient->DoesPartialBURAffectMeL());
- if (err == KErrNone)
- {
- if (amIaffected)
- {
- __LOG1("[0x%08x]: RunL: Partial Affects me!", iID.iId);
- }
- else
- {
- __LOG1("[0x%08x]: RunL: Partial Does NOT Affect me!", iID.iId);
- }
- }
- else
- {
- __LOG2("[0x%08x]: Error calling DoesPartialBURAffectMeL()", iID.iId, err);
-
- User::After(5000000);
- TRAP(err, amIaffected = iABClient->DoesPartialBURAffectMeL());
- __LOG2("[0x%08x]: Called DoesPartialBURAffectMeL() again after 5sec: ", iID.iId, err);
- }
- }
-
- if (amIaffected)
- {
- // Confirm that this data owner is ready for backup/restore operations
- iABClient->ConfirmReadyForBURL(KErrNone);
- }
- }
- }
-
- void CABDataOwner::DoCancel()
- {
- }
-
- CABDataOwner::~CABDataOwner()
- {
- if (IsActive())
- {
- Cancel();
- }
- delete iCallback;
- delete iABClient;
- }
-
- void CABDataOwner::ConstructL()
- {
- RProcess process;
- iID = process.SecureId();
- process.Close();
- iABClient = NULL;
-
- iCallback = CABDataOwnerCallbackImplementation::NewL(iID);
-
- iProperty.Attach(TUid::Uid(KUidSystemCategoryValue), KUidBackupRestoreKey);
- TInt backupInfo = 0;
- iProperty.Get(backupInfo);
- if ((backupInfo & KBURPartTypeMask) != EBURNormal || (backupInfo & KBURPartTypeMask) != EBURUnset)
- {
- iABClient = CActiveBackupClient::NewL(iCallback);
- iCallback->SetABClient(iABClient);
-
- // Confirm that this data owner is ready for backup/restore operations
- iABClient->ConfirmReadyForBURL(KErrNone);
- // do nothing
- __LOG1("[0x%08x]: In Backup/Restore: ConfirmReadyForBUR", iID.iId);
- }
- __LOG1("[0x%08x]: ABTester ConstructL", iID.iId);
- }
- }
-
-void RunActiveBackupClientL()
- {
- CActiveScheduler* pScheduler = new (ELeave) CActiveScheduler();
- CleanupStack::PushL(pScheduler);
- CActiveScheduler::Install(pScheduler);
- conn::CABDataOwner* pDO = conn::CABDataOwner::NewL();
- CleanupStack::PushL(pDO);
-
- pDO->StartL();
-
- CleanupStack::PopAndDestroy(pDO);
- CleanupStack::PopAndDestroy(pScheduler);
- }
-
-TInt E32Main()
- {
- __UHEAP_MARK;
- CTrapCleanup* pCleanup = CTrapCleanup::New();
- TInt nRet = KErrNone;
-
- if(pCleanup != NULL)
- {
- TRAP(nRet, RunActiveBackupClientL());
- delete pCleanup;
- }
-
- __UHEAP_MARKEND;
- return nRet;
- }