diff -r 000000000000 -r e4d67989cc36 lowlevellibsandfws/apputils/inc/babackup.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lowlevellibsandfws/apputils/inc/babackup.h Tue Feb 02 02:01:42 2010 +0200 @@ -0,0 +1,173 @@ +// Copyright (c) 1997-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: +// + +#if !defined(__BABACKUP_H__) +#define __BABACKUP_H__ + +#include +#include + +/** +Backup server wrapper observer interface. + +MBackupObserver defines the interface to be implemented by any code that will +hold file locks or may attempt to access files regardless of other device state +e.g. a phone app may always attempt to access the contacts database for caller id + +@publishedAll +@released +*/ +class MBackupObserver + { +public: +/** Flags indicating how to change a file lock. */ + enum TFileLockFlags + { + /** Owner can reopen/resume writing to the file. */ + ETakeLock =0, + /** Owner should stop writing to the file. */ + EReleaseLockReadOnly =0x01, + /** Owner should close the file. */ + EReleaseLockNoAccess =0x02, + }; +public: + /** Called by the server to request the file owner to change the lock on the specified + file. + + @param aFileName Filename of affected file + @param aFlags Flag indicating how to change the file lock */ + virtual void ChangeFileLockL(const TDesC& aFileName,TFileLockFlags aFlags)=0; + }; + +class TBackupOperationAttributes; + +/** Backup operation observer interface. + +Programs should implement this interface to receive notifications when a backup +or restore operation either starts or ends. + +@see CBaBackupSessionWrapper::RegisterBackupOperationObserverL() +@publishedAll +@released +*/ +class MBackupOperationObserver + { +public: +/** Backup operation event types. */ + enum TOperationType + { + /** None. */ + ENone =0x00, + /** Operation start. */ + EStart =0x01, + /** Operation end. */ + EEnd =0x02, + /** Operation aborted. */ + EAbort =0x04, + }; +public: + /** Called when a backup or restore operation either starts or ends. + + @param aBackupOperationAttributes Operation attributes */ + virtual void HandleBackupOperationEventL(const TBackupOperationAttributes& aBackupOperationAttributes)=0; +private: + IMPORT_C virtual void Reserved1(); + }; + + +/** +Attributes for a backup operation. + +@see MBackupOperationObserver +@publishedAll +@released +*/ +class TBackupOperationAttributes + { +public: + inline TBackupOperationAttributes(); + inline TBackupOperationAttributes(MBackupObserver::TFileLockFlags aFileFlag, MBackupOperationObserver::TOperationType aOperation); +public: + /** File locking flags requested by the operation. */ + MBackupObserver::TFileLockFlags iFileFlag; + /** Operation type. */ + MBackupOperationObserver::TOperationType iOperation; + }; + + +class RBaBackupSession; +class CBaLockChangeNotifier; +class CBaBackupOperationNotifier; + +/** +CBaBackupSessionWrapper provides the APIs necessary to enable a backup or restore/install +by allowing broadcast requests for some or all files to either remain untouched or have +their locks released for an arbitrary period. + +The class should be used by both code driving a backup/install and any engines that will +hold files locks or may access files regardless of the presence of (non-system) client apps + +@publishedAll +@released +*/ +class CBaBackupSessionWrapper : public CBase + { +public: + IMPORT_C static CBaBackupSessionWrapper* NewL(); + IMPORT_C ~CBaBackupSessionWrapper(); + IMPORT_C void RegisterFileL(const TDesC& aFileName,MBackupObserver& aObserver); + IMPORT_C void DeregisterFile(const TDesC& aFileName); + IMPORT_C void CloseAll(MBackupObserver::TFileLockFlags aFlags,TRequestStatus& aStatus); + IMPORT_C void RestartAll(); + IMPORT_C void CloseFileL(const TDesC& aFileName,MBackupObserver::TFileLockFlags aFlags); + IMPORT_C void RestartFile(const TDesC& aFileName); + IMPORT_C void RegisterBackupOperationObserverL(MBackupOperationObserver& aBackupOperationObserver); + IMPORT_C void DeRegisterBackupOperationObserver(MBackupOperationObserver& aBackupOperationObserver); + IMPORT_C TBool IsBackupOperationRunning() const; + IMPORT_C void NotifyBackupOperationL(const TBackupOperationAttributes& aBackupOperationAttributes); +private: + CBaBackupSessionWrapper(); + void ConstructL(); +private: + RBaBackupSession* iBackupSession; + CBaLockChangeNotifier* iLockChangeNotifier; + TAny* iReserved; // needed to preserve BC + CBaBackupOperationNotifier* iBackupOperationNotifier; + }; + + +// +// TBackupOperationAttributes +// + +inline TBackupOperationAttributes::TBackupOperationAttributes() + : iFileFlag(MBackupObserver::ETakeLock), iOperation(MBackupOperationObserver::ENone) + /** Default constructor. */ + { + } + +inline TBackupOperationAttributes::TBackupOperationAttributes(MBackupObserver::TFileLockFlags aFileFlag, MBackupOperationObserver::TOperationType aOperation) + : iFileFlag(aFileFlag), iOperation(aOperation) + /** Constructor that specifies operation attributes. + + @param aFileFlag File locking flags requested by the operation + @param aOperation Operation type */ + { + } + + + +#endif +