persistentstorage/sql/SRC/Server/SqlBur.h
author hgs
Tue, 19 Oct 2010 16:26:13 +0100
changeset 55 44f437012c90
parent 51 7d4490026038
permissions -rw-r--r--
201041_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17
55f2396f6d25 Revision: 201018
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 15
diff changeset
     1
// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
0
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
// All rights reserved.
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
// This component and the accompanying materials are made available
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
// which accompanies this distribution, and is available
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
//
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
// Initial Contributors:
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
//
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
// Contributors:
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
//
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
// Description:
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
//
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
#ifndef __SQLBUR_H__
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
#define __SQLBUR_H__
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
#include <e32base.h>
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
#include <f32file.h>
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include <f32file64.h>
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include <e32property.h>
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <connect/abclient.h> // MactiveBackupDataClient
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include "SqlSrvBurInterface.h"
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
51
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    26
//Forward declarations
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    27
class CSqlBurCallback;
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    28
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    29
#ifdef SQL_BUR_PROPERTY_MONITOR_TEST
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    30
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    31
const TInt32 KSqlBurPropertyCategory = 0x10281e17;//the SQL server secure id (the bur tests have the same id, 
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    32
                                                  //in order to be able to operate with the property)
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    33
const TUint KSqlBurBackupRestoreKeyValue = 0x1234DDD1;
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    34
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    35
extern TInt TestModeSqlBurError;
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    36
#define SQL_BUR_TEST_SET_ERROR(err) TestModeSqlBurError = err 
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    37
//This macro is called at the end of CSqlBurEventMonitor::RunL()and CSqlBurEventMonitor::RunError() 
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    38
//CActiveScheduler::Stop() is called here to return the execution control back to the test code.
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    39
#define SQL_BUR_TEST_STOP() CActiveScheduler::Stop() 
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    40
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    41
#else
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    42
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    43
const TInt32 KSqlBurPropertyCategory = KUidSystemCategoryValue;
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    44
const TUint KSqlBurBackupRestoreKeyValue = conn::KUidBackupRestoreKey;
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    45
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    46
#define SQL_BUR_TEST_SET_ERROR(err) (void)0 
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    47
#define SQL_BUR_TEST_STOP() (void)0 
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    48
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    49
#endif
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    50
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    51
/**
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    52
The system category of the backup and restore property, that is used for notifying active backup clients
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    53
regarding beginning or the end of backup or restore process.
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    54
Different value is used in SQL tests, because only the secure backup server can set or get the value of
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    55
the  {KUidSystemCategoryValue, conn::KUidBackupRestoreKey} property. 
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    56
@internalComponent
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    57
*/
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    58
const TUid KSqlBurPropertyCategoryUid = {KSqlBurPropertyCategory};
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    59
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    60
/**
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    61
The backup and restore property key, that is used for notifying active backup clients
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    62
regarding beginning or the end of backup or restore process. 
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    63
Different value is used in SQL tests, because only the secure backup server can set or get the value of
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    64
the  {KUidSystemCategoryValue, conn::KUidBackupRestoreKey} property. 
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    65
@internalComponent
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    66
*/
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    67
const TUint KSqlBurBackupRestoreKey = KSqlBurBackupRestoreKeyValue;
0
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
15
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    69
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    70
//////////////                     Backup database file header format                           ///////////////////
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    71
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    72
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    73
////// No version (Version 0)
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    74
//  8 chars          8 chars          8 chars             up to 256 characters (512 bytes)
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    75
// <32-bit checksum><32-bit filesize><32-bit filenamelen><filename - UTF16 encoded>
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    76
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    77
//////             Version 2
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    78
//  8 chars          8 chars   4 chars     16 chars         8 chars             up to 256 characters (512 bytes)
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    79
// <32-bit checksum><FFFFAA55><Version N#><64-bit filesize><32-bit filenamelen><filename - UTF16 encoded>
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    80
51
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    81
const TInt KSqlBurHeaderVersion = 2;             //Current backup database file header version
15
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    82
51
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    83
const TUint32 KSqlBurMagicNum = 0xFFFFAA55;      //Magic number. If the "old database file size" field in the header
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    84
                                                 //has this value, then the header version is 2+
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    85
const TInt KSqlBurMaxHeaderSize = 256 + KMaxFileName; //The size of the buffer used for the operations on the header
15
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    86
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    87
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    88
51
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    89
/**
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    90
An object of this class is created to monitor the backup & restore property
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    91
{KUidSystemCategory, KUidBackupRestoreKey}.
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    92
If the property gets set, the CSqlBurEventMonitor object will create a CSqlBurClient
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    93
instance to handle the backup or restore.  
15
3eacc0623088 Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 0
diff changeset
    94
51
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    95
@internalComponent
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    96
*/
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    97
class CSqlBurEventMonitor : public CActive
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    98
	{
7d4490026038 201037_06
hgs
parents: 17
diff changeset
    99
public:
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   100
	static CSqlBurEventMonitor* NewL(MSqlSrvBurInterface& aBufInterface);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   101
	virtual ~CSqlBurEventMonitor();
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   102
#ifdef SQL_BUR_PROPERTY_MONITOR_TEST
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   103
	inline conn::CActiveBackupClient* ActiveBackupClient();
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   104
	inline CSqlBurCallback* SqlBurCallback();
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   105
#endif
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   106
		
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   107
private:
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   108
	CSqlBurEventMonitor(MSqlSrvBurInterface& aInterface);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   109
	void ConstructL();
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   110
	virtual void RunL();
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   111
	virtual void DoCancel();
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   112
	virtual TInt RunError(TInt aError);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   113
	void CreateContentL();
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   114
	void DestroyContent();
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   115
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   116
private:
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   117
	RProperty 					iBurProperty;//B&R property published by the B&R server. SQL server subscribes for notifications
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   118
	MSqlSrvBurInterface& 		iBurInterface;//Provided by the SQL server
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   119
	conn::CActiveBackupClient*	iActiveBackupClient;//The connection with the B&R server
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   120
	CSqlBurCallback*			iSqlBurCallback;//A "Database file list" interface provided by the SQL server
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   121
	
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   122
	};
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   123
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   124
#ifdef SQL_BUR_PROPERTY_MONITOR_TEST
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   125
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   126
inline conn::CActiveBackupClient* CSqlBurEventMonitor::ActiveBackupClient()
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   127
	{
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   128
	return iActiveBackupClient;
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   129
	}
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   130
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   131
inline CSqlBurCallback* CSqlBurEventMonitor::SqlBurCallback()
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   132
	{
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   133
	return iSqlBurCallback;
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   134
	}
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   135
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   136
#endif
0
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   137
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   138
/**
51
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   139
This class is called by the Backup and Restore Framework
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   140
when a backup or restore is requested by the user
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   141
It implements the active proxy backup and restore as
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   142
defined in the MActiveBackupDataClient interface.
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   143
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   144
@internalComponent
0
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
*/
51
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   146
class CSqlBurCallback : public CBase, public conn::MActiveBackupDataClient
0
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   147
	{
51
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   148
public:
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   149
	static CSqlBurCallback* NewL(MSqlSrvBurInterface& aBufInterface);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   150
	virtual ~CSqlBurCallback();
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   151
	
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   152
	//Implementations of virtuals from MActiveBackupDataClient - full backup
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   153
	virtual void InitialiseGetProxyBackupDataL(TSecureId aSid, TDriveNumber aDrive);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   154
	virtual TUint GetExpectedDataSize(TDriveNumber aDrive);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   155
	virtual void GetBackupDataSectionL(TPtr8& aBuffer, TBool& aFinished);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   156
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   157
	//Implementations of virtuals from MActiveBackupDataClient - full restore
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   158
	virtual void InitialiseRestoreProxyBaseDataL(TSecureId aSid, TDriveNumber aDrive);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   159
	virtual void RestoreComplete(TDriveNumber aDrive);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   160
	virtual void RestoreBaseDataSectionL(TDesC8& aBuffer, TBool aFinished);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   161
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   162
	virtual void TerminateMultiStageOperation();
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   163
	virtual TUint GetDataChecksum(TDriveNumber aDrive);	
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   164
	
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   165
	//Implementations of virtuals from MActiveBackupDataClient - incremental backup & restore - not supported
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   166
	virtual void AllSnapshotsSuppliedL();
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   167
	virtual void ReceiveSnapshotDataL(TDriveNumber aDrive, TDesC8& aBuffer, TBool aLastSection);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   168
	virtual void GetSnapshotDataL(TDriveNumber aDrive, TPtr8& aBuffer, TBool& aFinished);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   169
	virtual void InitialiseGetBackupDataL(TDriveNumber aDrive);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   170
	virtual void InitialiseRestoreBaseDataL(TDriveNumber aDrive);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   171
	virtual void InitialiseRestoreIncrementDataL(TDriveNumber aDrive);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   172
	virtual void RestoreIncrementDataSectionL(TDesC8& aBuffer, TBool aFinished);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   173
	
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   174
	// to validate successful BUR
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   175
	TInt CheckSum(const RFile64 &aOpenFile, TUint64& aCheckSum) const;
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   176
	
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   177
private:
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   178
	CSqlBurCallback(MSqlSrvBurInterface& aInterface);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   179
	void CopyBufData(const TDesC8& aInBuf, TInt& aInBufReadPos, TDes& aOutBuf, TInt aDataLen);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   180
	void BackupCleanup();
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   181
	TInt RestoreCleanup();
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   182
	void SetBackupError(TInt aError);
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   183
	
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   184
private:
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   185
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   186
	// state machine for backup
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   187
	enum
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   188
		{
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   189
		EBackupNoFileOpen=0, // not currently processing a file
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   190
		EBackupOpenNothingSent, // file open and ready, but nothing sent yet
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   191
		EBackupOpenPartHeaderSent, // part of the header is sent, but more remains
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   192
		EBackupOpenAllHeaderSent, // all of the header is sent, ready to send the data
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   193
		EBackupEndOfFile // all done, tidy up after backup
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   194
		};
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   195
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   196
	// state machine for restore
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   197
	// this is more complicated because we are driven by the backup engine
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   198
	// and have incomplete information most of the time
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   199
	enum
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   200
		{
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   201
		ERestoreExpectChecksum=0, 		// checksum marks the start of the next file
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   202
		ERestoreExpectOldFileSize, 		// the size of the file - backup file header version 0
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   203
		ERestoreExpectVersion, 			// backup header version
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   204
		ERestoreExpectFileSize, 		// the size of the file, backup file header version 2+
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   205
		ERestoreExpectFileNameSize, 	// the size of the file name
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   206
		ERestoreExpectFileName, 		// the name of the file to restore
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   207
		ERestoreExpectData, 			// now for the data
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   208
		ERestoreComplete 				// tidy up after restore
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   209
		};
0
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   210
		
51
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   211
	MSqlSrvBurInterface& iInterface;	//A "Database file list" interface provided by the SQL server
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   212
	RArray<HBufC*> iFileList; 			//An array with database file names for backup, provided by the SQL server 
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   213
	RFile64 iFile;						//A handle to file being backup/restored.
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   214
	TInt iFileIndex;					//The index of the file name in iFileList being processed at the moment 
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   215
	TUint iState;						//Backup or restore state machine - current state
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   216
	TBuf<KSqlBurMaxHeaderSize> iBuffer; //Used for the header data
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   217
	TInt iHeaderSent; 					//How many header bytes sent so far
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   218
	TUint32 iChecksum; 					//Database archive checksum - used by the restore.
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   219
	TInt64 iFileSize; 					//Restored database file size - used by the restore.
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   220
	TUint32 iFileNameSize; 				//Restored database file name size - used by the restore.
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   221
	TDriveNumber iRestoreDrive;			//The drive where the data is currently restored to.
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   222
	TSecureId iRestoreId;				//The secure id of the client which data is being restored at the moment
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   223
	TInt iBackupError;					//An error occured during the backup processing
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   224
	TFileName iRestoreDir;				//The directory where temporary files will be created during restore.
7d4490026038 201037_06
hgs
parents: 17
diff changeset
   225
	TParse iParse;
0
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   226
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
	};
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
08ec8eefde2f Revision: 201003
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   229
#endif // __SQLBUR_H__