--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/backupandrestore/backupengine/inc/sbedataownermanager.h Tue Feb 02 01:11:40 2010 +0200
@@ -0,0 +1,255 @@
+/**
+* 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:
+* Declaration of CDataOwnerManager
+*
+*
+*/
+
+
+
+/**
+ @file
+*/
+#ifndef __DATAOWNERMANAGER_H__
+#define __DATAOWNERMANAGER_H__
+
+// System
+#include <e32base.h>
+#include <connect/sbtypes.h>
+#include <f32file.h>
+#include <e32property.h>
+#include <swi/sisregistrysession.h>
+#include <badesca.h>
+
+#include "sbeconfig.h"
+#include "sbeparserproxy.h"
+#include <connect/javamanagerinterface.h>
+
+
+// Forwards
+class CBaBackupSessionWrapper;
+class CARC4;
+
+
+
+namespace conn
+ {
+ // Forwards
+ class CDataOwner;
+ class CABServer;
+ class CBufferFileReader;
+ class CPackageDataTransfer;
+ class CDataOwnerManager;
+ class CJavaDataOwnerManager;
+ class CSecureBUREncryptKeySource;
+ class CSBEDecompressAndEncrypt;
+
+ /** The current request state
+ @internalComponent
+ */
+ enum TState
+ {
+ ENone, /*<! The DataOwnerManager is not requesting or supplying */
+ ERequest, /*<! The DataOwnerManager is currently dealing with a request */
+ ESupply, /*<! The DataOwnerManager is currently dealing with a supply */
+ EBuffer /*<! The DataOwnerManager is currently dealing with buffering */
+ };
+
+ // Globals
+ _LIT(KStar, "*");
+ _LIT(KPrivate, "\\private\\");
+ _LIT(KBackSlash, "\\");
+ _LIT(KColon, ":");
+ _LIT(KBackupRegistrationFile, "backup_registration*.xml");
+ _LIT(KPrimaryBackupRegistrationFile, "backup_registration.xml");
+ _LIT(KImportDir, "\\private\\10202D56\\import\\packages\\");
+
+ /**
+ Simple container to map Secure ID's to there assocaited Data Owner
+ @internalComponent
+ */
+ class CDataOwnerContainer : public CBase
+ {
+ public:
+ static CDataOwnerContainer* NewL(TSecureId aSid, CDataOwnerManager* apDataOwnerManager);
+ ~CDataOwnerContainer();
+
+ static TInt Compare(const CDataOwnerContainer& aFirst, const CDataOwnerContainer& aSecond);
+ static TBool Match(const CDataOwnerContainer& aFirst, const CDataOwnerContainer& aSecond);
+
+ TSecureId SecureId() const;
+ CDataOwner& DataOwner() const;
+ private:
+ CDataOwnerContainer(TSecureId aSID);
+ void ConstructL(CDataOwnerManager* apDataOwnerManager);
+ private:
+ TSecureId iSecureId; /*<! Contains the secure ID */
+ CDataOwner* ipDataOwner; /*<! Contains the data owner.*/
+ };
+
+ /** The state of the data owner manager
+ @internalComponent
+ */
+ class TDOMState
+ {
+ public:
+ TState iState; /*<! The current state of the DataOwnerManager */
+ TSecureId iSID; /*<! The secure ID we are currently working with */
+ };
+
+ /**
+ Manager for data owners.
+ @internalTechnology
+ */
+ class CDataOwnerManager : public CBase
+ {
+
+ public:
+ // Construction
+ static CDataOwnerManager* NewLC();
+ ~CDataOwnerManager();
+
+ // Methods
+ void SetBURModeL(const TDriveList& aDriveList, TBURPartType aBURType,
+ TBackupIncType aBackupIncType);
+ void GetDataOwnersL(RPointerArray<CDataOwnerInfo>& aDataOwners);
+ void GetExpectedDataSizeL(CSBGenericTransferType* aGenericTransferType, TUint& aSize);
+ void GetPublicFileListL(CSBGenericDataType* aGenericDataType, TDriveNumber aDriveNumber, RFileArray& aFiles);
+ void GetRawPublicFileListL(CSBGenericDataType* aGenericDataType, TDriveNumber aDriveNumber,
+ RRestoreFileFilterArray& aRestoreFileFilter);
+ void GetXMLPublicFileListL(TSecureId aSID, TDriveNumber aDriveNumber, HBufC*& aBuffer);
+
+ void SetSIDListForPartialBURL(TDesC8& aFlatArrayPtr);
+ void SIDStatusL(RSIDStatusArray& aSIDStatus);
+ void AllSnapshotsSuppliedL();
+ void GetNextPublicFileL(CSBGenericDataType* aGenericDataType, TBool aReset,
+ TDriveNumber aDriveNumber, TEntry& aEntry);
+
+ // Global heap
+ void SupplyDataL(CSBGenericTransferType* aGenericTransferType, TDesC8& aBuffer,
+ TBool aLastSection);
+ void RequestDataL(CSBGenericTransferType* aGenericTransferType,
+ TPtr8& aBuffer, TBool& aLastSection);
+
+ // Accessors
+ void SetActiveBackupServer(CABServer* aABServer);
+ RFs& GetRFs();
+ CABServer& ABServer();
+ CDataOwner& DataOwnerL(TSecureId aSID);
+
+ TDriveList& DriveList();
+ TBURPartType BURType() const;
+ TBackupIncType IncType() const;
+ void AllSystemFilesRestoredL();
+
+ CSBEConfig& Config();
+ inline CSBEParserProxy& ParserProxy();
+ TBool IsSetForPartialL(TSecureId aSecureId) const;
+
+ private:
+ // Constructor
+ void ConstructL();
+ CDataOwnerManager();
+
+ // Methods
+ void FindDataOwnersL();
+ CDataOwnerContainer* FindL(TSecureId aSID);
+ CPackageDataTransfer* FindPackageDataContainerL(TUid pid);
+ void StripSecureIdL(const TDesC& aStrip, TSecureId& aSecureId);
+ void UpdateDataOwnersPartialStateL();
+ void FindImportPackagesL(Swi::RSisRegistrySession& aRegistry, RPointerArray<CDataOwnerInfo>& aDataOwners);
+ void FindRegistrationFilesL(const TDesC& aPath, CDesCArray& aFiles);
+ private:
+ RPointerArray<CDataOwnerContainer> iDataOwners; /*<! An array of TDataOwnerContainers */
+ RPointerArray<CPackageDataTransfer> iPackageDataOwners; /*<! An array of package data transfer objects */
+ TDOMState iState; /*!< The state of the DataOwnerManager */
+
+ // Current backup options (set in SetBURModeL -> needed for active clients)
+ TDriveList iDriveList; /*<! Drive list for backup */
+ TBURPartType iBURType; /*<! Backup/restore type */
+ TBackupIncType iIncType; /*<! Incrementatl type */
+
+ // Resources
+ CABServer* ipABServer; /*!< The active backup server */
+ RFs iFs; /*!< A RFs used in this class and all DataOwners */
+ CBufferFileReader* iBufferFileReader; /*<! Used to restore registration files */
+ CSBEDecompressAndEncrypt* iDecompressor;
+
+ /** Set to true if we need to reset the device after a restore */
+ TBool iResetAfterRestore;
+
+ /** Object to handle Java data owners */
+ CJavaManagerInterface* iJavaDOM;
+
+ /** List of Secure IDs for Partial Restore */
+ RSIDArray* iSIDListForPartial;
+
+ /** Config for SBE */
+ CSBEConfig* iConfig;
+
+ /** Base Backup Session Wrapper */
+ CBaBackupSessionWrapper* iBaBackupSession;
+
+ /** Backup Registration Parser Proxy */
+ CSBEParserProxy* iParserProxy;
+ };
+
+ inline TDriveList& CDataOwnerManager::DriveList()
+ /**
+ Return the list of drives specified for the operation
+ @return Drivelist
+ */
+ {
+ return iDriveList;
+ }
+
+ inline TBURPartType CDataOwnerManager::BURType() const
+ /**
+ Return the partial backup type
+ @return The partial backup type
+ */
+ {
+ return iBURType;
+ }
+
+ inline TBackupIncType CDataOwnerManager::IncType() const
+ /**
+ Return the incremental backup type
+ @return The incremental backup type
+ */
+ {
+ return iIncType;
+ }
+
+ /**
+ Return Active Backup Server
+ @return reference to Active Backup Server
+ */
+ inline CABServer& CDataOwnerManager::ABServer()
+ {
+ return *ipABServer;
+ }
+
+ /**
+ Return Parser Proxy
+ @return reference to Parser Proxy
+ */
+ inline CSBEParserProxy& CDataOwnerManager::ParserProxy()
+ {
+ return *iParserProxy;
+ }
+
+ } // namespace conn
+#endif // __DATAOWNERMANAGER_H__