diff -r 6ca72c0fe49a -r a941bc465d9f PECengine/StorageManager2/ClientInc/MPEngStorageManager.h --- /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 +#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