lowlevellibsandfws/apputils/inc/babackup.h
changeset 0 e4d67989cc36
--- /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 <e32std.h>
+#include <e32base.h>
+
+/** 
+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
+