diff -r 000000000000 -r d0791faffa3f backupandrestore/backupengine/inc/absession.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/backupandrestore/backupengine/inc/absession.h Tue Feb 02 01:11:40 2010 +0200 @@ -0,0 +1,154 @@ +/** +* 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 CABSession class. +* +* +*/ + + + +/** + @file +*/ +#ifndef __ABSESSION_H__ +#define __ABSESSION_H__ + +#include +#include "abserver.h" +#include +#include + +namespace conn + { + class CDataOwner; + + /** Constant definition for the watchdog timer */ + const TTimeIntervalMicroSeconds32 KABCallbackWatchdogTimeout(200000000); + + class CABSession : public CSession2 + /** + @internalComponent + @ingroup Server + + A AB client Session. + */ + { + public: + virtual void CreateL(); + static CABSession* NewL(TSecureId aSecureId); + + // Methods + void RestoreCompleteL(TDriveNumber aDriveNumber); + void AllSnapshotsSuppliedL(); + void GetExpectedDataSizeL(TDriveNumber aDriveNumber, TUint& aSize); + void SupplyDataL(TDriveNumber aDriveNumber, TTransferDataType aTransferType, TDesC8& aBuffer, + TBool aLastSection, TBool aSuppressInitDataOwner, TSecureId aProxySID); + void RequestDataL(TDriveNumber aDriveNumber, TTransferDataType aTransferType, TPtr8& aBuffer, + TBool& aLastSection, TBool aSuppressInitDataOwner, TSecureId aProxySID); + void TerminateMultiStageOperationL(); + TUint GetDataChecksumL(TDriveNumber aDrive); + static TInt ABSessionStaticWatchdogCaller(TAny* aWatchdoggingObject); + TInt WatchdogExpired(); + TBool ConfirmedReadyForBUR() const; + TBool CallbackInterfaceAvailable() const; + void RestoreCompleteL(); + void SetInvalid(); + TBool Invalidated(); + + private: + CABSession(TSecureId aSecureId); + ~CABSession(); + void ConstructL(); + inline CABServer& Server() const; + CDataOwner& DataOwnerL() const; + void ServiceL(const RMessage2& aMessage); + void TakeOwnershipOfIPCMessage(const RMessage2& aMessage); + void CleanupClientSendState(); + + // Handle IPC messages + void HandleIPCBURModeInfoL(const RMessage2& aMessage); + void HandleIPCDoesPartialBURAffectMeL(const RMessage2& aMessage); + void HandleIPCConfirmReadyForBURL(const RMessage2& aMessage); + void HandleIPCPropagateLeaveL(const RMessage2& aMessage); + TInt HandleIPCGetDataSyncL(const RMessage2& aMessage); + TInt HandleIPCSendDataLengthL(const RMessage2& aMessage); + TInt HandleIPCClosingDownCallback(); + + // Callback methods + void MadeCallback(); + void ReturnFromCallback(); + void CheckCallbackAvailableL(); + void MakeCallbackAllSnapshotsSuppliedL(); + void MakeCallbackReceiveSnapshotDataL(TDriveNumber aDrive, TDesC8& aBuffer, TBool aLastSection); + TUint MakeCallbackGetExpectedDataSizeL(TDriveNumber aDrive); + void MakeCallbackGetSnapshotDataL(TDriveNumber aDrive, TPtr8& aBuffer, TBool& aFinished); + void MakeCallbackInitialiseGetBackupDataL(TDriveNumber aDrive); + void MakeCallbackGetBackupDataSectionL(TPtr8& aBuffer, TBool& aFinished); + void MakeCallbackInitialiseRestoreBaseDataL(TDriveNumber aDrive); + void MakeCallbackRestoreBaseDataSectionL(TDesC8& aBuffer, TBool aFinished); + void MakeCallbackInitialiseRestoreIncrementDataL(TDriveNumber aDrive); + void MakeCallbackRestoreIncrementDataSectionL(TDesC8& aBuffer, TBool aFinished); + void MakeCallbackRestoreCompleteL(TDriveNumber aDrive); + void MakeCallbackInitialiseGetProxyBackupDataL(TSecureId aSID, TDriveNumber aDrive); + void MakeCallbackInitialiseRestoreProxyBaseDataL(TSecureId aSID, TDriveNumber aDrive); + void MakeCallbackTerminateMultiStageOperationL(); + TUint MakeCallbackGetDataChecksumL(TDriveNumber aDrive); + + private: + /** Last message received from client. Stored and used when + the connection status changes. */ + RMessage2 iMessage; + + /** The SecureId of the client that should be connecting to this session */ + TSecureId iClientSID; + + /** Callback Timer used to determine whether a rogue client is attempting a denial of service */ + CPeriodic* iCallbackWatchdog; + + CActiveSchedulerWait* iActiveSchedulerWait; /*!< Inner scheduler for blocking on active callback */ + + /** The leave code that must persist so that leaves can be propagated from the abclient */ + TInt iABClientLeaveCode; + + /** Identifies the callback that is in progress. Used for validating multiple calls for a callback */ + TABCallbackCommands iCallbackInProgress; + + /** This flag records whether or not the client has finished sending data */ + TBool iReceiveFromClientFinished; + + /** Assign data to this TPtr so that it may be sent to the client */ + TPtrC8 iSendToClientBuffer; + + /** Function pointer to the handler function that */ + TCallBack iWatchdogHandler; + + /** Client has not responded - potentially allow some operations */ + TBool iMisbehavingClient; + + /** The drive that snapshot data has been supplied for */ + TDriveNumber iSuppliedSnapshotDriveNum; + + /** Flag to store whether or not client has called ConfirmReadyForBURL */ + TBool iConfirmedReadyForBUR; + + /** Flag to indicate whether this session is valid or not,invalid + * session means this session is for a backup/restore event which is + * already over, but not disconnect from the client + */ + TBool iInvalid; + }; + + } +#endif //__ABSESSION_H__