williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #if !defined(__BABACKUP_H__) williamr@2: #define __BABACKUP_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: /** williamr@2: Backup server wrapper observer interface. williamr@2: williamr@2: MBackupObserver defines the interface to be implemented by any code that will williamr@2: hold file locks or may attempt to access files regardless of other device state williamr@2: e.g. a phone app may always attempt to access the contacts database for caller id williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class MBackupObserver williamr@2: { williamr@2: public: williamr@2: /** Flags indicating how to change a file lock. */ williamr@2: enum TFileLockFlags williamr@2: { williamr@2: /** Owner can reopen/resume writing to the file. */ williamr@2: ETakeLock =0, williamr@2: /** Owner should stop writing to the file. */ williamr@2: EReleaseLockReadOnly =0x01, williamr@2: /** Owner should close the file. */ williamr@2: EReleaseLockNoAccess =0x02, williamr@2: }; williamr@2: public: williamr@2: /** Called by the server to request the file owner to change the lock on the specified williamr@2: file. williamr@2: williamr@2: @param aFileName Filename of affected file williamr@2: @param aFlags Flag indicating how to change the file lock */ williamr@2: virtual void ChangeFileLockL(const TDesC& aFileName,TFileLockFlags aFlags)=0; williamr@2: }; williamr@2: williamr@2: class TBackupOperationAttributes; williamr@2: williamr@2: /** Backup operation observer interface. williamr@2: williamr@2: Programs should implement this interface to receive notifications when a backup williamr@2: or restore operation either starts or ends. williamr@2: williamr@2: @see CBaBackupSessionWrapper::RegisterBackupOperationObserverL() williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class MBackupOperationObserver williamr@2: { williamr@2: public: williamr@2: /** Backup operation event types. */ williamr@2: enum TOperationType williamr@2: { williamr@2: /** None. */ williamr@2: ENone =0x00, williamr@2: /** Operation start. */ williamr@2: EStart =0x01, williamr@2: /** Operation end. */ williamr@2: EEnd =0x02, williamr@2: /** Operation aborted. */ williamr@2: EAbort =0x04, williamr@2: }; williamr@2: public: williamr@2: /** Called when a backup or restore operation either starts or ends. williamr@2: williamr@2: @param aBackupOperationAttributes Operation attributes */ williamr@2: virtual void HandleBackupOperationEventL(const TBackupOperationAttributes& aBackupOperationAttributes)=0; williamr@2: private: williamr@2: IMPORT_C virtual void Reserved1(); williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: Attributes for a backup operation. williamr@2: williamr@2: @see MBackupOperationObserver williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class TBackupOperationAttributes williamr@2: { williamr@2: public: williamr@2: inline TBackupOperationAttributes(); williamr@2: inline TBackupOperationAttributes(MBackupObserver::TFileLockFlags aFileFlag, MBackupOperationObserver::TOperationType aOperation); williamr@2: public: williamr@2: /** File locking flags requested by the operation. */ williamr@2: MBackupObserver::TFileLockFlags iFileFlag; williamr@2: /** Operation type. */ williamr@2: MBackupOperationObserver::TOperationType iOperation; williamr@2: }; williamr@2: williamr@2: williamr@2: class RBaBackupSession; williamr@2: class CBaLockChangeNotifier; williamr@2: class CBaBackupOperationNotifier; williamr@2: williamr@2: /** williamr@2: CBaBackupSessionWrapper provides the APIs necessary to enable a backup or restore/install williamr@2: by allowing broadcast requests for some or all files to either remain untouched or have williamr@2: their locks released for an arbitrary period. williamr@2: williamr@2: The class should be used by both code driving a backup/install and any engines that will williamr@2: hold files locks or may access files regardless of the presence of (non-system) client apps williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: class CBaBackupSessionWrapper : public CBase williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CBaBackupSessionWrapper* NewL(); williamr@2: IMPORT_C ~CBaBackupSessionWrapper(); williamr@2: IMPORT_C void RegisterFileL(const TDesC& aFileName,MBackupObserver& aObserver); williamr@2: IMPORT_C void DeregisterFile(const TDesC& aFileName); williamr@2: IMPORT_C void CloseAll(MBackupObserver::TFileLockFlags aFlags,TRequestStatus& aStatus); williamr@2: IMPORT_C void RestartAll(); williamr@2: IMPORT_C void CloseFileL(const TDesC& aFileName,MBackupObserver::TFileLockFlags aFlags); williamr@2: IMPORT_C void RestartFile(const TDesC& aFileName); williamr@2: IMPORT_C void RegisterBackupOperationObserverL(MBackupOperationObserver& aBackupOperationObserver); williamr@2: IMPORT_C void DeRegisterBackupOperationObserver(MBackupOperationObserver& aBackupOperationObserver); williamr@2: IMPORT_C TBool IsBackupOperationRunning() const; williamr@2: IMPORT_C void NotifyBackupOperationL(const TBackupOperationAttributes& aBackupOperationAttributes); williamr@2: private: williamr@2: CBaBackupSessionWrapper(); williamr@2: void ConstructL(); williamr@2: private: williamr@2: RBaBackupSession* iBackupSession; williamr@2: CBaLockChangeNotifier* iLockChangeNotifier; williamr@2: TAny* iReserved; // needed to preserve BC williamr@2: CBaBackupOperationNotifier* iBackupOperationNotifier; williamr@2: }; williamr@2: williamr@2: williamr@2: // williamr@2: // TBackupOperationAttributes williamr@2: // williamr@2: williamr@2: inline TBackupOperationAttributes::TBackupOperationAttributes() williamr@2: : iFileFlag(MBackupObserver::ETakeLock), iOperation(MBackupOperationObserver::ENone) williamr@2: /** Default constructor. */ williamr@2: { williamr@2: } williamr@2: williamr@2: inline TBackupOperationAttributes::TBackupOperationAttributes(MBackupObserver::TFileLockFlags aFileFlag, MBackupOperationObserver::TOperationType aOperation) williamr@2: : iFileFlag(aFileFlag), iOperation(aOperation) williamr@2: /** Constructor that specifies operation attributes. williamr@2: williamr@2: @param aFileFlag File locking flags requested by the operation williamr@2: @param aOperation Operation type */ williamr@2: { williamr@2: } williamr@2: williamr@2: williamr@2: williamr@2: #endif williamr@4: