diff -r 000000000000 -r 094583676ce7 PECengine/StorageManager2/ClientSrc/CPEngStorageManager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PECengine/StorageManager2/ClientSrc/CPEngStorageManager.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,231 @@ +/* +* 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: See class description below. +* +*/ + + +#ifndef __CPENGSTORAGEMANAGER_H__ +#define __CPENGSTORAGEMANAGER_H__ + +// INCLUDES +#include +#include + +#include "MPEngStorageManager.h" // base class +#include "RPEngStorageSubFolderClient.h" + + +// FORWARD DECLARATIONS +class CPEngStoreEntry; + + +enum TPEngPermanentStorageType + { + EPEngNormal, + EPEngTemp, + EPEngGlobal + }; + +/** + * Implementation of Presence Storage Manager. + * CPEngStorageManager implements the Storage Manager presented at + * MPEngStorageManager. This version supports two different saving + * methods: to memory cache and disc drive. + * Usage: 1. construct + * 2. set store base (SetStorageBase()) if not set before use, raises panic. + * 3. Store/Retrieve + * + * See MPEngStorageManager class for method descriptions. + */ +NONSHARABLE_CLASS( CPEngStorageManager ) : + public CBase, + public MPEngStorageManager + { +public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CPEngStorageManager* NewL( + MPEngStorageManagerWatcher& aWatcher, + RPEngStorageClient& aStorageMainClient ); + + /** + * Two-phased constructor. + */ + static CPEngStorageManager* NewLC( + MPEngStorageManagerWatcher& aWatcher, + RPEngStorageClient& aStorageMainClient ); + + /** + * Destructor. + */ + virtual ~CPEngStorageManager(); + +protected: // Protected contructors + + /** + * C++ default constructor. + */ + CPEngStorageManager( MPEngStorageManagerWatcher& aWatcher ); + + /** + * Symbian 2nd phase constructor + */ + void ConstructL( RPEngStorageClient& aStorageMainClient ); + +public: // Functions from the MPEngStorageManager base classes + + /** + * Opens one more reference to this storage Manager + * @see + * @since 3.0 + */ + void Open(); + + /** + * Closes one reference to this storage manager + * @see + * @since 3.0 + */ + void Close(); + + /** + * Stores Storeable Entry given as an argument. + * @see + * @since 3.0 + */ + void StoreL( const CPEngStoreEntry& aStoreEntry ); + + /** + * Stores Exclusively StoreEntry given as an argument. + * @see + * @since 3.0 + */ + void StoreExclusiveL( const CPEngStoreEntry& aStoreEntry ); + + /** + * Retrieves the state of Storeable Entry given as an argument. + * @see + * @since 3.0 + */ + TInt RetrieveL( CPEngStoreEntry& aStoreEntry, + TBool aObeyVersion ); + + /** + * Deletes Storeable Entry from store. + * @see + * @since 3.0 + */ + TInt Delete( const CPEngStoreEntry& aStoreEntry ); + TInt Delete( const TDesC& aStoreEntryId ); + + + /** + * Used to check if certain storage entry is locked + * @see + * @since 3.0 + */ + TBool LockedL( const CPEngStoreEntry& aStoreEntry, + TPengStorageLockPriority aPriority ) const; + + TBool Locked( const CPEngStoreEntry& aStoreEntry, + TPengStorageLockPriority aPriority ) const; + + + /** + * Used to lock certain storage entry + * @see + * @since 3.0 + */ + TInt Lock( const CPEngStoreEntry& aStoreEntry, + TPengStorageLockPriority aPriority, + TBool aCreateEntry ) const; + + /** + * Used to unlock certain storage entry + * @see + * @since 3.0 + */ + TInt Unlock( const CPEngStoreEntry& aStoreEntry ) const; + + + /** + * Blind call to notify about storage IDs change + * @see + * @since 3.0 + */ + TInt NotifyChangedSId( const TDesC& aChangedSId, + TPEngStorageType aSidStorageType ); + + + /** + * Stops sending of SID changes done through this Storage Manager + * @see + * @since 3.0 + */ + TInt BufferServerSideNotifications( TInt aCount ); + + /** + * Decreases counter of the Server Side Notification buffering, + * @see + * @since 3.0 + */ + TInt ReleaseServerSideBuffering( TInt aCount ); + + /** + * Used to unlock certain storage entry + * @see + * @since 3.0 + */ + MPEngStorageManagerWatcher& StorageManagerWatcher(); + + /** + * Get Session slot Id class + * @see + * @since 3.0 + */ + const CPEngSessionSlotId& SessionSlotId() const; + + +private: // Ne private functions + + /** + * Stores Store Entry + * + * @since 3.0 + * @param aStoreEntry Store entry to store. + * @param aExlusiveLock if ETrue, lock is obeyed + */ + void StoreEntryL( const CPEngStoreEntry& aStoreEntry, + TBool aObeyLock ); + +private: // Data + + /// Access counter + TInt iAccessCount; + + /// OWN: Storage Manager Watcher, reference owned + MPEngStorageManagerWatcher& iStorageManagerWatcher; + + /// OWN: Sub Session client to Storage Server + RPEngStorageSubFolderClient iSubFolderClient; + + /// REF: Session Slot Id class + const CPEngSessionSlotId& iSessionSlot; + + }; + +#endif // __CPENGSTORAGEMANAGER_H__