backupandrestore/backuptest/ABTester/inc/abdataowner.h
changeset 0 d0791faffa3f
--- /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 <connect/abclient.h>
+#include <e32std.h>
+#include <e32property.h>
+
+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__