diff -r 000000000000 -r d0791faffa3f backupandrestore/backupengine/inc/sbeclientsession.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/backupandrestore/backupengine/inc/sbeclientsession.h Tue Feb 02 01:11:40 2010 +0200 @@ -0,0 +1,168 @@ +/** +* Copyright (c) 2004-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 RSBEClientSession +* +* +*/ + + + +/** + @file +*/ +#ifndef __SBECLIENTSESSION_H__ +#define __SBECLIENTSESSION_H__ + +#include +#include +#include +#include "sbheapwrapper.h" + +namespace conn + { + class CSBECallbackHandler; + /** List of Operations for Active Callback execution + + @internalComponent + */ + enum TState + { + ENone, + EListOfDataOwners, + EPublicFileList, + ELargePublicFileList + }; + + class TServerStart; + class CSBECallbackHandler; + + /** The client to the Secure Backup Engine + + This class should be accessed only through the CSBEClient class. These two classes make up + a facade pattern to protect against Binary Compatibility breaks. As large chunks of data are + transferred using the global shared heap, this class owns an instantiation of CHeapWrapper + that wraps access to the Global Shared Heap, providing an easier to use common interface. + + @internalComponent + */ + class RSBEClientSession : public RSessionBase + { + public: + static RSBEClientSession* NewL(); + TInt Connect(); + void Close(); + TVersion Version() const; + TPtr8& TransferDataAddressL(); + TPtrC8& TransferDataInfoL(CSBGenericTransferType*& aGenericTransferType, TBool& aFinished); + void ListOfDataOwnersL(RPointerArray& aDataOwners); + void PublicFileListL(TDriveNumber aDrive, CSBGenericDataType& aGenericDataType, RFileArray& aFiles); + void RawPublicFileListL(TDriveNumber aDrive, CSBGenericDataType& aGenericDataType, RRestoreFileFilterArray& aFileFilter); + void PublicFileListXMLL(TDriveNumber aDrive, TSecureId aSID, HBufC*& aFileList); + void SetBURModeL(const TDriveList& aDriveList, TBURPartType aBURType, TBackupIncType aBackupIncType); + void SetSIDListForPartialBURL(RSIDArray& aSIDs); + void SIDStatusL(RSIDStatusArray& aSIDStatus); + void RequestDataL(CSBGenericTransferType& aGenericTransferType, TRequestStatus& aStatus); + void RequestDataL(CSBGenericTransferType& aGenericTransferType); + void SupplyDataL(CSBGenericTransferType& aGenericTransferType, TBool aFinished); + void SupplyDataL(CSBGenericTransferType& aGenericTransferType, TBool aFinished, TRequestStatus& aStatus); + TUint ExpectedDataSizeL(CSBGenericTransferType& aGenericTransferType); + void AllSnapshotsSuppliedL(); + void AllSystemFilesRestored(); + + void ListOfDataOwnersL(RPointerArray& aDataOwners, TRequestStatus& aStatus); + void PublicFileListL(TDriveNumber aDrive, CSBGenericDataType& aGenericDataType, RFileArray& aFiles, TRequestStatus& aStatus); + void SetBURModeL(const TDriveList& aDriveList, TBURPartType aBURType, + TBackupIncType aBackupIncType, TRequestStatus& aStatus); + void AllSnapshotsSuppliedL(TRequestStatus& aStatus); + void AllSystemFilesRestoredL(TRequestStatus& aStatus); + + void PublicFileListL(TDriveNumber aDrive, CSBGenericDataType& aGenericDataType, RPointerArray& aFileList, + TBool& aFinished, TInt aTotalListCursor, TInt aMaxResponseSize, TRequestStatus& aStatus); + + friend class CSBECallbackHandler; + + ~RSBEClientSession(); + + private: + RSBEClientSession(); + static TInt StartServer(); + TInt GetGlobalSharedHeapHandle(); + void ConstructL(); + + protected: + // callback functions + void PopulateListOfDataOwnersL(TUint aBufferSize); + void PopulatePublicFileListL(TUint aBufferSize); + void PopulateLargePublicFileListL(TInt aResult); + + private: + /** Handle to the Global Shared Heap */ + RChunk iGlobalSharedHeap; + + /** Pointer to a CheapWrapper object that marshalls access to the Global Shared Heap */ + CHeapWrapper* iGSHInterface; + + /** Pointer to the Client's Data Owners Array */ + RPointerArray* iDataOwnersArray; + /** Poitner to the Client's File Array */ + RFileArray* iFileArray; + + /** Async callback handler for handling responses from the sbengine */ + CSBECallbackHandler* iCallbackHandler; + /** Attributes that store parameters passed into async methods */ + RPointerArray* iFileList; + TBool* iFinished; + TInt* iTotalListCursor; + }; + + + /** The Callback Handler for the RSBEClientSession + + This class implements an Active Object interface in order to perform asynchronous calls in a callback manner. + + @internalComponent + */ + class CSBECallbackHandler : public CActive + { + public: + + static CSBECallbackHandler* NewL(RSBEClientSession& aClientSession); + ~CSBECallbackHandler(); + + void StartL(TRequestStatus& aStatus, TState aState); + void CancelRequest(); + + private: + + CSBECallbackHandler(RSBEClientSession& aClientSession); + void ConstructL(); + + // From CActive + void RunL(); + void DoCancel(); + TInt RunError(TInt aError); + void CompleteObserver(TInt aError); + private: + /** Reference to the Client Session Class */ + RSBEClientSession& iClientSession; + /** Observer's TRequestStatus */ + TRequestStatus* iObserver; + /** State to know which function to run */ + TState iState; + }; + + } // end namespace + +#endif // __SBECLIENTSESSION_H__