diff -r 000000000000 -r d0791faffa3f backupandrestore/backuptest/ABTester/inc/abdataowner.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/backupandrestore/backuptest/ABTester/inc/abdataowner.h Tue Feb 02 01:11:40 2010 +0200 @@ -0,0 +1,184 @@ +// 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 + +ABTester is both a client of the SBEngine and ABServer only for test purposes +*/ + +#ifndef __ABDATAOWNER_H__ +#define __ABDATAOWNER_H__ + +#include +#include +#include + +void RunActiveBackupClientL(); + +namespace conn + { + //TUid KSBEngineUid = TUid::Uid(0x10202D56); + + class CABTester; + + // The simulated file that this test DO will backup/have restored + _LIT8(KABTestData, "Active Backup Test Base Data"); + + // The simulated file that this test DO will backup/have restored + _LIT8(KABTestProxyData, "Active Backup Test Proxy Data"); + + // The simulated file that this test DO will backup/have restored + _LIT8(KABTestDataIncrement, ":Active Backup Test Increment Data"); + + // The simulated snapshot that this tets DO will backup/use to restore + _LIT8(KABTestSnapshot, "Active Backup Test Snapshot"); + + // Simulated time for initialisation of the ABDO + const TInt KABInitTime = 5000; + + class CABData : public CBase + { + public: + static CABData* NewL(TDriveNumber aDriveNum) + { + CABData* self = new (ELeave) CABData(aDriveNum); + return self; + } + + void AddDataL(TDesC8& aData) + { + if (!iData) + { + iData = HBufC8::NewL(aData.Size()); + } + else + { + // Add the data to the existing buffer + iData = iData->ReAllocL(iData->Size() + aData.Size()); + } + + iData->Des().Append(aData); + } + + TDesC8& operator()() + { + return *iData; + } + + ~CABData() + { + delete iData; + } + + private: + CABData(TDriveNumber aDriveNum) : iDriveNum(aDriveNum) {} + + private: + HBufC8* iData; + TDriveNumber iDriveNum; + }; + + + + /** + This class implements the callbacks defined by MActiveBackupDataClient which are used by the SBEngine + to request information about the backup or restore operation for this data owner + */ + class CABDataOwnerCallbackImplementation : public CBase, public MActiveBackupDataClient + { + public: + static CABDataOwnerCallbackImplementation* NewL(TSecureId aID); + ~CABDataOwnerCallbackImplementation(); + TBool ValidateRestoredData(); + TBool ValidateRestoredSnapshot(); + + // MActiveBackupDataClient implementation + void AllSnapshotsSuppliedL(); + void ReceiveSnapshotDataL(TDriveNumber aDrive, TDesC8& aBuffer, TBool aLastSection); + TUint GetExpectedDataSize(TDriveNumber aDrive); + void GetSnapshotDataL(TDriveNumber aDrive, TPtr8& aBuffer, TBool& aFinished); + void InitialiseGetBackupDataL(TDriveNumber aDrive); + void GetBackupDataSectionL(TPtr8& aBuffer, TBool& aFinished); + void InitialiseRestoreBaseDataL(TDriveNumber aDrive); + void RestoreBaseDataSectionL(TDesC8& aBuffer, TBool aFinished); + void InitialiseRestoreIncrementDataL(TDriveNumber aDrive); + void RestoreIncrementDataSectionL(TDesC8& aBuffer, TBool aFinished); + void RestoreComplete(TDriveNumber aDrive); + void TerminateMultiStageOperation(); + TUint GetDataChecksum(TDriveNumber aDrive); + void SetABClient(CActiveBackupClient* aABClient); + void InitialiseGetProxyBackupDataL(TSecureId aSID, TDriveNumber aDrive); + void InitialiseRestoreProxyBaseDataL(TSecureId aSID, TDriveNumber aDrive); + + private: + CABDataOwnerCallbackImplementation(TSecureId aID); + + void WaitForMillisecondsL(TInt aMilliseconds); + void FillBuffer(TDes8& aDes, TBool& aFinished); + + private: + CActiveBackupClient* iABClient; + TBackupIncType iBackupIncType; + TVersion iVersion; + CABData* iSnapshot; + CABData* iData; + TBool iProxy; + TInt iOffset; + TInt iSourceSize; + TUint iFillChar; + TSecureId iID; + }; + + + /** + This class is the actual data owner that prepares data to send to the sbengine. It owns the CABClient + and passes in the callback interface implementation object + */ + class CABDataOwner : public CActive + { + + public: + static CABDataOwner* NewL(); + void StartL(); + void RunL(); + TInt RunError(TInt aError); + void DoCancel(); + ~CABDataOwner(); + + private: + void CheckStatusL(); + CABDataOwner() : CActive(EPriorityNormal) {} + + void ConstructL(); + void Subscribe(); + + private: + /** P&S */ + RProperty iProperty; + + /** Callback implementation */ + CActiveBackupClient* iABClient; + + /** Callback implementation */ + CABDataOwnerCallbackImplementation* iCallback; + + /** Secure ID of the process */ + TSecureId iID; + }; + + } + +#endif //__ABDATAOWNER_H__