PECengine/StorageManager2/ClientInc/MPEngStorageManager.h
branchRCL_3
changeset 13 a941bc465d9f
parent 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/StorageManager2/ClientInc/MPEngStorageManager.h	Wed Sep 01 12:31:13 2010 +0100
@@ -0,0 +1,261 @@
+/*
+* Copyright (c) 2002 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:  Storage Manager interface
+*
+*/
+
+
+#ifndef __MPENGSTORAGEMANAGER_H__
+#define __MPENGSTORAGEMANAGER_H__
+
+//class CPEngStoreEntry;
+#include <badesca.h>
+#include "CPEngStoreEntry.h"
+
+// FORWARD DECLARATIONS
+class MPEngStorageManagerWatcher;
+class CPEngSessionSlotId;
+
+// CLASS DECLARATION
+/**
+*  MPEngStorageManager defines the interface for Storing / Retrieving.
+*  Through this interface Storage Entries can be stored / retrieved.
+*  Storage entries implement CPENGSTOREENTRY interface. For more
+*  information about storage entries see CPEngStoreEntry class.
+*
+*  @lib PEngStorMan.lib
+*  @since 3.0
+*/
+class MPEngStorageManager
+    {
+        // Storage Manager can be deleted by this interface
+    public:
+
+        virtual ~MPEngStorageManager() {};
+
+    public: // New functions
+
+        /**
+        *	Opens one more reference to this storage Manager
+        *
+        *	@since 3.0
+        */
+        virtual void Open() = 0;
+
+        /**
+        *	Closes one reference to this storage manager and deletes
+        *	if it is no more needed
+        *
+        *	@since 3.0
+        */
+        virtual void Close() = 0;
+
+        /**
+         *	Stores StoreEntry given as an argument.
+         *	If StoreEntry has been locked, lock is obeyed
+         *
+         *	@since 3.0
+         *	@param aStoreEntry Store entry to store.
+         */
+        virtual void StoreL( const CPEngStoreEntry& aStoreEntry ) = 0;
+
+        /**
+         *	Stores Exclusively StoreEntry given as an argument.
+         *	This store function does NOT obey Lock of the store entry
+         *
+         *	@since 3.0
+         *	@param aStoreEntry Store entry to store.
+         */
+        virtual void StoreExclusiveL(
+            const CPEngStoreEntry& aStoreEntry ) = 0;
+
+
+        /**
+         *	Retrieves the state of Storage Entry given as an argument.
+         *  If obey version flag is on, before InternalizeL is called
+         *  on the Store Entry, version is checked, if version from
+         *  store and one Store Entry was already internalized with
+         *  is same, InternalizeL is not called on the Store Entry.
+         *  This feature is by default on.
+         *
+         *	@since 3.0
+         *	@param aStoreEntry Store entry to retrieve.
+         *  @param aObeyVersion flag to obey version numbers
+         *	@return KErrNone if successful or KErrNotFound if store
+         *		entry does not exists in the storage
+         */
+        virtual TInt RetrieveL( CPEngStoreEntry& aStoreEntry,
+                                TBool aObeyVersion = ETrue ) = 0;
+
+        /**
+         *	Deletes Storage Entry from store.
+         *
+         *	@since 3.0
+         *	@param aId id of Store entry to delete.
+         *	@param aStorageType storage type of Store entry to delete.
+         *	@return KErrNone if successful.
+         */
+        virtual TInt Delete( const CPEngStoreEntry& aStoreEntry ) = 0;
+
+        /**
+         *	Deletes Storage Entry from store.
+         *
+         *	@since 3.0
+         *	@param aStoreEntryId Storage ID of entry to delete
+         *	@return KErrNone if successful.
+         */
+        virtual TInt Delete( const TDesC& aStoreEntryId ) = 0;
+
+        /*
+         *	Used to check if certain storage entry is locked
+         *  Function leaves if some error while communicating with
+         *  server occures.
+         *
+         *	@since 3.0
+         *	@param aStoreEntry store entry to be locked
+         *  @param aPriority lock priority
+         *	@return ETrue if entry is locked
+         */
+        virtual TBool LockedL( const CPEngStoreEntry& aStoreEntry,
+                               TPengStorageLockPriority aPriority =
+                                   EStorageLockLevelBasic ) const = 0;
+
+        /**
+         *	Used to check if certain storage entry is locked
+         *  Function returns EFalse if some error while communicating with
+         *  server occures.
+         *
+         *	@since 3.0
+         *	@param aStoreID is id of the storage entry
+         *  @param aPriority lock priority
+         *	@return ETrue if entry is locked
+         *          EFalse if not entry is not locked or error has occured
+         *          while communicating with the server.
+         */
+        virtual TBool Locked( const CPEngStoreEntry& aStoreEntry,
+                              TPengStorageLockPriority aPriority =
+                                  EStorageLockLevelBasic ) const = 0;
+
+
+        /*
+         *	Used to lock certain storage entry
+         *	Lock is reference counted, so in order to release lock
+         *	same number of Unlock() calls needs to be done as Lock()
+         *	If Store Entry is already locked with lower priority, no matter
+         *	by which client, previous lock is removed and replaced by
+         *	the new lock with the new higher priority.
+         *	If passed priority is lower or same as already active of the
+         *	store entry, this will fail with KErrLocked
+         *
+         *	@since 3.0
+         *	@param aStoreEntry store entry to be locked
+         *	@param aPriority priority of the Lock to be done
+         *  @param aCreateEntry if store entry does not exists, it is created
+         *         default value is ETrue = store entry is created if needed
+         *	@return count of the lock on the server side, KErrDisconected or
+         *       KErrNotFound if aCreateEntry = EFalse and entry does not exist.
+         */
+        virtual TInt Lock( const CPEngStoreEntry& aStoreEntry,
+                           TPengStorageLockPriority aPriority =
+                               EStorageLockLevelBasic,
+                           TBool aCreateEntry = ETrue  ) const = 0;
+
+        /*
+         *	Used to unlock certain storage entry
+         *	UnLock is reference counted and need to be called as many
+         *	times ad Lock was called
+         *
+         *	@since 3.0
+         *	@param aStoreEntry store entry to be un-locked
+         *	@return Reference count of the lock, or if negative
+         *			then some system wide error code
+         */
+        virtual TInt Unlock( const CPEngStoreEntry& aStoreEntry ) const = 0;
+
+        /**
+         *  Notifies about storage IDs change
+         *  This call returns without waiting if notification was delivered
+         *  to the Presence Server.
+         *  Only one SID can be notified at the time, when same function
+         *  is called in sequence multiple times client shall keep passed
+         *  descriptors valid, if those descriptors will be deleted after
+         *  call, notification will not be delivered to the listeners,
+         *  Since Storage server was not able to read Store Id from client
+         *
+         *	@since 3.0
+         *	@param aChangedSId changed Store Id to be notified,
+         *  @param aSidStorageType storage type of the storage entry
+         *	@return KErrDisconnected if there is not any observer registered
+         *			KErrNone if it went OK
+         */
+        virtual TInt NotifyChangedSId( const TDesC& aChangedSId,
+                                       TPEngStorageType aSidStorageType ) = 0;
+
+
+        /*
+         *	Stops sending of SID changes done through this Storage Manager
+         *	Instance, how ever all notification will be buffered on the
+         *	server side and will be sent all when ReleaseServerSideBuffering
+         *	is called
+         *	Multiple calling of this function increases counter on the
+         *	client side and by specified counter
+         *	Notifications are resumbed by the ReleaseServerSideBuffering()
+         *
+         *	@since 3.0
+         *	@param	aCount count by which counter of the server will be
+         *			increased, by default set to 1
+         *	@return positive number represents number on the server side
+         *		counter, negative some system wide error
+         */
+        virtual TInt BufferServerSideNotifications( TInt aCount = 1 ) = 0;
+
+
+        /*
+         *	Decreases counter of the Server Side Notification buffering,
+         *	when counter reaches zero, all buffered notifications are
+         *	notified to the listeners.
+         *	If Bufferering of the SID changes is not active, this function
+         *	Does nothing
+         *
+         *	@since 3.0
+         *	@param	aCount count by which counter of the server will be
+         *			decreased, by default set to 1
+         *	@return positive number represents number on the server side
+         *		ounter, negative some system wide error
+         */
+        virtual TInt ReleaseServerSideBuffering( TInt aCount = 1 ) = 0 ;
+
+        /*
+         *	Used to unlock certain storage entry
+         *
+         *	@since 3.0
+         *	@return reference to the Storage Manager Watcher
+         */
+        virtual MPEngStorageManagerWatcher& StorageManagerWatcher() = 0;
+
+        /*
+         *	Get Session slot Id class
+         *	Returned class carries information about the session of this
+         *	instance of the storage manager
+         *
+         *	@since 3.0
+         *	@return CPEngSessionSlotId& Session ID slot reference
+         */
+        virtual const CPEngSessionSlotId& SessionSlotId() const = 0;
+
+    };
+
+#endif      // __MPENGSTORAGEMANAGER_H__
+
+// End of File
\ No newline at end of file