cbs/CbsServer/ServerInc/CCbsDbImpTopicList.h
changeset 46 2fa1fa551b0b
parent 42 35488577e233
child 48 78df25012fda
--- a/cbs/CbsServer/ServerInc/CCbsDbImpTopicList.h	Mon Aug 23 15:50:31 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,852 +0,0 @@
-/*
-* Copyright (c) 2003 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:  This file contains the header file of the CCbsDmImpTopicList class
-*    
-*                This class represents the topic list stored in the database.
-*
-*/
-
-
-#ifndef     CCBSDBIMPTOPICLIST_H
-#define     CCBSDBIMPTOPICLIST_H
-
-// INCLUDES
-#include <f32file.h>
-
-#ifndef __SECURE_BACKUP__
-#include <babackup.h>
-#endif
-
-#include "CbsCommon.h"
-#include "CCbsDbImp.H"
-
-// FORWARD DECLARATIONS
-//class CCbsDbImp;
-class CCbsDbImpTopicMessages;
-class MCbsDbTopicListObserver;
-class CFileStore;
-//  CLASS DECLARATION 
-
-/**
-*   CCbsDbImpTopicList is the database topic list manager.
-*   
-*/
-class CCbsDbImpTopicList : public CBase
-#ifndef __SECURE_BACKUP__
-, public MBackupObserver
-#endif
-    {
-    #ifndef __SECURE_BACKUP__
-    public: // MBackupObserver
-        /**
-        *   Closes or reopens the settings file if requested by a backup.
-        *
-        *   @param aFileName                The name of the file to close.
-        *   @param aFlags                   The action to be performed.
-        *
-        */
-        void ChangeFileLockL( const TDesC& aFileName, TFileLockFlags aFlags );
-    #else
-    
-    public:
-        /**
-        *   Closes or reopens the settings file if requested by a backup.
-        *
-        *   @param aRequest                 Current request        
-        *
-        */
-        void ChangeFileLockL( const TCbsBackupRequest& aRequest );
-        
-    #endif
-
-    private: 
-        /**
-        *   Check if the server has a file lock. Leaves with
-        *   KErrLocked if not.
-        */
-        void CheckFileLockL() const;
-
-    public:     // New functions
-        
-        /**
-        *   Creates an instance of the class.
-        *
-        *   @param aFs                      Open file server session.
-        *   @param aTopicsFile              Name of the file containing topics.
-        *   @param aUnsavedMessagesFile     Name of the file containing unsaved
-        *                                   messages.
-        *   @param aDatabase                Reference to database object
-        *   @return                         Pointer to the created instance.
-        */
-        static CCbsDbImpTopicList* NewL( RFs& aFs, 
-            const TDesC& aTopicsFile, 
-            const TDesC& aUnsavedMessagesFile,
-            CCbsDbImp& aDatabase );
-
-        /**
-        *   Destructor.
-        */
-        ~CCbsDbImpTopicList();
-
-    public:
-
-        /**
-        *   Creates a new topic list
-		*
-        *	@param	aTopicListName		Name of the new topic list
-		*	@param	aTopicListIndex		Returns: Index number of the new list
-        */
-        void CreateNewTopicListL( const TDesC& aTopicListName );
-
-
-		/**
-        *	Deletes old read messages. The clean up interval is set
-		*	by the user.
-		*
-        */
-        void CleanupReadMessagesL();        
-
-        /**
-        *   Sets the topic messages manager.
-        *
-        *   Note that this function does not transfer ownership
-        *   of aMessages.
-        *
-        *   @param aMessages            Pointer to the topic messages 
-        *                               manager.
-        */
-        void SetTopicMessages( CCbsDbImpTopicMessages* aMessages );
-
-        /**
-        *   Returns pointer to the current store which contains topics
-        *   of the server (i.e., Topics-file) and saved messages. 
-        *   Leaves with KErrLocked if the store is locked by backup.
-        *
-        *   @return                     Pointer to topics store.
-        */
-        CFileStore* TopicStoreL() const;
-
-        /**
-        *   Returns a pointer to the name of the file, which contains unsaved
-        *   messages of the server.
-        *
-        *   @return                     Reference to the file name.
-        */
-        const TDesC& TopicFilename() const;
-
-        /**
-        *   Returns a pointer to the store, which contains unsaved
-        *   messages of the server.
-        *
-        *   @return                     Pointer to unsaved messages store.
-        */
-        CFileStore* UnsavedMessagesStore() const;
-
-        /**
-        *   Returns a pointer to the name of the file, which contains unsaved
-        *   messages of the server (Unsaved Messages-file, "cbs4.dat").
-        *
-        *   @return                     Reference to the file name.
-        */
-        const TDesC& UnsavedMessagesFilename() const;
-
-        /**
-        *   Returns the topic messages stream id by topic handle.
-        *
-        *   @param  aNumber             Topic number
-        *   @param  aId                 Returns: the stream id to the topic
-        *                               messages stream.
-        */
-        void GetTopicMessagesIdL( TCbsDbTopicNumber aNumber,
-            TStreamId& aId ) const;
-
-        /**
-        *   Updates the topic messages stream id by topic handle. The new 
-        *   identifier is expected not to be a null id.
-        *
-        *   Note that the method will not commit changes to the store. 
-        *   It also changes the internal state and thus if the method leaves, 
-        *   it is good to reload the whole root stream.
-        *
-        *   The method will delete the old topic messages stream.
-        *
-        *   @param aNumber              Topic number
-        *   @param aNewId               New stream id.
-        */
-        void UpdateTopicMessagesIdL( TCbsDbTopicNumber aNumber, 
-            const TStreamId& aNewId );
-
-        /**
-        *   Generates a message handle.
-        *
-        *   Note that it must be checked that the message handle is unique 
-        *   in that topic.
-        *
-        *   @param  aNumber             Topic number
-        *   @param  aRandom             Number generated in some way.
-        *   @return                     New message handle.
-        */
-        TCbsDbMessageHandle GenerateMessageHandle( 
-            const TCbsDbTopicNumber aNumber, TUint16 aRandom ) const;
-
-        /**
-        *   Informs that a new message has been received in a topic.
-        *
-        *   @param  aMessageHandle      Handle of the received message.
-        */
-        void InformNewMessageReceivedL(
-            const TCbsDbMessageHandle& aMessageHandle  );
-
-        /**
-        *   Informs that a message has been set as saved.
-        *
-        *   @param  aMessageHandle      Handle of the saved message.
-        */
-        void InformMessageSavedL( const TCbsDbMessageHandle& aMessageHandle );
-
-        /**
-        *   Informs that an unread message has been read.
-        *
-        *   @param  aMessageHandle      Handle of the read message.
-        */
-        void InformUnreadMessageReadL( 
-            const TCbsDbMessageHandle& aMessageHandle );
-
-        /**
-        *   Informs that a message has been deleted.
-        *
-        *   @param  aMessageHandle      Handle of the deleted message.
-        *   @param  aPermanent          ETrue, if the message was permanent.
-        *   @param  aRead               ETrue, if the message was read.
-        */
-        void InformMessageDeletedL( 
-            const TCbsDbMessageHandle& aMessageHandle, 
-            TBool aPermanent, TBool aRead );
-
-        /**
-        *   Extracts topic handle from message handle.
-        *
-        *   Note that the method does not check that the message exists.
-        *
-        *   @param  aHandle             Handle to a message.
-        *   @return                     Returns the number of the topic to 
-        *                               which the message belongs.
-        */
-        TCbsDbTopicNumber ExtractTopicNumber( 
-            const TCbsDbMessageHandle& aHandle ) const;
-        
-        /**
-        *   Initialises the whole topic list. 
-        */
-        void InitializeListL( const TBool aFileOpenFailed );
-
-        /**
-        *   Returns the total amount of saved messages.
-        *
-        *   @return                     Number of saved messages.
-        */
-        TInt TotalSavedMessages() const;
-
-        /**
-        *   Returns the amount of topics the list contains.
-        *
-        *   @param  aCount              Returns: number of topics in topic list
-        */
-        void GetTopicCount( TInt& aCount ) const;
-    
-        /**
-        *   Returns a topic by index.
-        *
-        *   Return values:
-        *   KErrNone                    Parameter aTopic contains the requested
-        *                               topic.
-        *   KErrArgument                Index out of bounds.
-        *
-        *   Leaves if file read fails.
-        *
-        *   @param  aIndex              Index to the topic.
-        *   @param  aTopic              Returns: topic information.
-        */
-        void GetTopicL( TInt aIndex, TCbsDbTopic& aTopic );
-
-        /**
-        *   Returns a topic by topic number.
-        *
-        *   Leaves with KErrNotFound, if a topic with the given number
-        *   is not found.
-        *
-        *   @param    aNumber           Number of the topic.
-        *   @param    aTopic            Returns: topic information.
-        */
-        void FindTopicByNumberL( TCbsDbTopicNumber aNumber, 
-            TCbsDbTopic& aTopic );
-
-        /**
-        *   Reads the name of the index topic from resource.
-        *
-        *   @return     Name of the index topic
-        */
-        HBufC* ReadIndexTopicNameLC();
-
-        /**
-        *   Adds a new topic to the list.
-        *
-        *   @param    aTopic            Topic information.
-        *   @param    aDetected         Was the topic detected automatically
-        */
-        void AddTopicL( TCbsDbTopic& aTopic, const TBool aDetected );
-
-        /**
-        *   Updates the topic name and number.
-        *
-        *   @param    aOldNumber        Old number of the topic.
-        *   @param    aNewNumber        New number of the topic.
-        *   @param    aName             New name of the topic.
-        */
-        void UpdateTopicNameAndNumberL( 
-            TCbsDbTopicNumber aOldNumber, 
-            TCbsDbTopicNumber aNewNumber, 
-            const TCbsDbTopicName& aName );
-
-        /**
-        *   Updates the topic subscription status.
-        *
-        *   @param    aNumber           Topic number
-        *   @param    aStatus           New subscription status.
-        */
-        void UpdateTopicSubscriptionStatusL( 
-            TCbsDbTopicNumber aNumber, 
-            TBool aStatus );
-
-        /**
-        *   Updates the topic hotmark status.
-        *
-        *   @param    aNumber           Topic number
-        *   @param    aStatus           New hotmark status.
-        */
-        void UpdateTopicHotmarkStatusL( 
-            TCbsDbTopicNumber aNumber, 
-            TBool aStatus );
-
-        /**
-        *   Deletes an existing topic and all its messages.
-        *
-        *   @param    aNumber           Number of the topic to be deleted.
-        */
-        void DeleteTopicL( TCbsDbTopicNumber aNumber );
-
-        /**
-        *   Gets the total amount of unread messages.
-        *
-        *   @param  aCount              Returns: number of unread topics. 
-        */
-        void GetUnreadMessageCount( TInt& aCount ) const;
-
-        /**
-        *   Returns the handle to the latest hotmarked message. 
-        *   
-        *   The method leaves if there is no such message.
-        *
-        *   @param  aMessage            Returns: Handle to a message that has         
-        *                               been  received under a hotmarked topic
-        */
-        void GetHotmarkedMessageHandleL( TCbsDbMessageHandle& aMessage );
-
-        /**
-        *   Adds a topic list observer. 
-        *   
-        *   After an observer is added to the topic list, it will be notified 
-        *   whenever an event occurs.
-        *
-        *   @param  aObserver           New observer for the list.
-        */
-        void AddObserverL( MCbsDbTopicListObserver* aObserver );
-
-        /**
-        *   Removes a topic list observer. 
-        *   
-        *   If aObserver is not in the list, the method will panic.
-        *
-        *   @param  aObserver           Pointer to the observer to be removed.
-        */
-        void RemoveObserver( const MCbsDbTopicListObserver* aObserver );
-
-        /**
-        *   Adds numbers of subscribed topics to the given array.
-        *
-        *   @param aSubscriptions       Dynamic array into which the topic
-        *                               numbers are inserted.
-        */
-        void AppendSubscribedTopicsL( CArrayFixFlat< TUint16 >& aSubscriptions )
-            const;
-
-        /**
-        *   Reverts all changes made to three datafiles handled by this
-        *   class.
-        */
-        void RevertFilesL();
-
-        /**
-        *   Commits all changes made to three datafiles handled by this
-        *   class.
-        */
-        void CommitFilesL();
-
-        /**
-        *   Returns the number of the topic that was added last
-        *   to the database by topic detection feature.
-        *
-        *   Result code KErrNotFound indicates that no topic has ever
-        *   been added to the database.
-        *
-        *   @param aNumber              Returns: topic number
-        *   @return                     Result code
-        */
-        TInt GetLatestTopicNumber( TCbsTopicNumber& aNumber ) const;
-
-        /**
-        *   Finds the index of the topic matching the given topic number
-        *   in the topic list.
-        *
-        *   @param aNumber              Topic number
-        *   @return                     Index to the position of topic in 
-        *                               the topic list.
-        */
-        TInt TopicIndexInList( TCbsDbTopicNumber aNumber ) const;
-
-        /**
-        *   Returns the number of unread messages in hotmarked topics.
-        */
-        TInt UnreadHotmarkedMessageCount() const;
-
-        /**
-        *   Retrieves numbers of topics that precede and succeed the topic
-        *   with number aCurrentTopic.
-        *
-        *   @param  aCurrentTopic   Topic number of current topic
-        *   @param  aNextTopic      Topic number of next topic
-        *   @param  aPrevTopic      Topic number of previous topic
-        *   @param  aPosition       Position of topic in the topic list
-        */
-        void GetNextAndPrevTopicNumberL( const TCbsTopicNumber& aCurrentTopic,
-            TCbsTopicNumber& aNextTopic, TCbsTopicNumber& aPrevTopic,
-            TInt& aPosition );
-
-        /**
-        *   Notifies each observer that a new message has arrived to a topic.
-        *
-        *   @param    aHandle                    Handle to the topic.
-        */
-        void NotifyNewMessageArrivedL( const TCbsDbMessageHandle& aHandle );
-
-        /**
-        *   Notifies each observer that a topic has been modified.
-        *
-        *   @param    aNumber                    Topic number
-        */
-        void NotifyTopicModifiedL( TCbsDbTopicNumber aNumber );
-
-        /**
-        *   Loads the topic stream to the memory.
-        *
-        */
-        void LoadDefaultTopicStreamL();
-
-    private:                
-
-        /**
-        *   Constructor.
-        *
-        *   @param aFs                  Open file server session.
-        *   @param aDatabase            Reference to database object
-        */
-        CCbsDbImpTopicList( RFs& aFs, CCbsDbImp& aDatabase );
-
-        /**
-        *   Returns the total amount of topics the list contains.
-        *
-        *   @return                     The total amount of topics in the list.
-        */
-        TInt TopicCount() const;
-
-		/**
-        *   Returns the total amount of topic lists.
-        *
-        *   @return                     The total amount of topic lists.
-        */
-        TInt TopicListCount() const;
-
-        /**    
-        *   Finalizes the construction.
-        *
-        *   @param aTopicFile           File name of the topic file
-        *   @param aUnsavedMessagesFile File name of the unsaved messages file.
-        */
-        void ConstructL( const TDesC& aTopicsFile, 
-            const TDesC& aUnsavedMessagesFile );
-
-        /**
-        *   Loads the root stream to the memory.
-        *
-        *   Root stream contains stream ids for each topic list and the total
-        *   count of topic lists.        
-        */
-        void LoadRootStreamL();
-
-        /**
-        *   Reloads the root stream to the memory.
-        */
-        void ReloadRootStreamL();
-       
-		/**
-        *   Reads all information on topic list found with stream ID.        
-        *
-        *   @param aId                  Stream id to the topic information
-        *   @param aTopicList           Returns: topic list information
-        */
-		void ReadTopicListInformationL(const TStreamId& aId, 
-			TCbsDbImpTopicList& aTopicList ) const;
-
-        /**
-        *   Reads all information on topic found in stream aId
-        *   into aTopic.
-        *
-        *   This function is called when details of a topic are needed.
-        *
-        *   @param aId                  Stream id to the topic information
-        *   @param aTopic               Returns: topic information.
-        */
-        void ReadTopicInformationL( const TStreamId& aId, TCbsDbImpTopic& aTopic ) const;
-
-        /**
-        *   Adds a topic to the database.
-        *
-        *   @param aTopic               Information on added topic.
-        */
-        void DoAddTopicL( const TCbsDbTopic& aTopic );
-
-        /**
-        *   Updates a topic information.
-        *
-        *   @param aTopic               Contains topic information.
-        *   @param aNeedToChange        Indicates whether or not it is required
-        *                               to change position in the array
-        *   @param aOldPosition         Old position.
-        *   @param aDeleting            Whether the call is due to a deletion.
-        */
-        void DoUpdateTopicL( const TCbsDbTopic& aTopic, 
-            TBool aNeedToChange, TInt aOldPosition, TBool aDeleting );
-
-        /**
-        *   Deletes an existing topic.
-        *
-        *   @param aPosition            Position of the topic to be deleted.
-        */
-        void DoDeleteTopicL( TInt aPosition );
-
-        /**
-        *   Updates a topic list information.
-        *
-        *   @param aTopicList       Contains topic list information.
-        *   @param aDeleting        Info if we are deleting an entry.
-        */
-        void UpdateTopicListStreamL( TCbsDbImpTopicList& aTopicList, 
-            TBool aDeleting );
-
-        /**
-        *   Updates the root stream.
-        *   If required, it will create a new stream.
-        *
-        *   @param aDeleting        Info if we are deleting an entry.
-        */
-        void UpdateRootStreamL( TBool aDeleting );
-
-        /**
-        *   Updates the topic information.
-        *
-        *   @param aTopic               Updated topic information.
-        */
-        void UpdateTopicL( TCbsDbTopicNumber aTopicNumber, 
-            TCbsDbTopic& aTopic );
-
-        /**
-        *   Checks that the topic number is valid. 
-        *
-        *   @param  aNumber             The topic number.
-        *   @return                     Boolean value indicating if number 
-        *                               is ok.
-        */
-        TBool CheckTopicNumber( TCbsDbTopicNumber aNumber ) const;
-
-        /**
-        *   Write the root stream.
-        *
-        *   @param    aOut              The stream to which the data is 
-        *                               written.
-        */
-        void WriteRootStreamL( RWriteStream& aOut ) const;
-
-        /**
-        *   Write the Topic list stream
-        *
-        *   @param    aOut              The stream to which the data is 
-        *                               written.
-        */
-        void WriteTopicListStreamL( RWriteStream& aOut, TCbsDbImpTopicList& aTopicList ) const;
-
-        /**
-        *   Notifies each observer that the topic list has been initialized.
-        */
-        void NotifyTopicListInitializedL();
-
-        /**
-        *   Notifies each observer that a topic has been added.
-        *
-        *   @param    aNumber                    Topic number
-        */
-        void NotifyTopicAddedL( TCbsDbTopicNumber aNumber );
-
-        /**
-        *   Notifies each observer that a topic has been deleted.
-        *
-        *   @param    aNumber                    Topic number
-        */
-        void NotifyTopicDeletedL( TCbsDbTopicNumber aNumber );
-
-        /**
-        *   Sets the hotmarked message handle.
-        *
-        *   @param    aMessageHandle             Handle to the message.
-        */
-        void SetHotmarkedMessage( const TCbsDbMessageHandle& aMessageHandle );
-
-        /**
-        *   Creates a default root stream.
-        *
-        *   The method may leave, if the creation or writing fails.
-        *
-        *   @param    aStore            The stream to to which the root
-        *                               stream is written.
-        *   @return                     Returns the stream identifier to 
-        *                               that created stream.
-        */
-        TStreamId CreateDefaultRootStreamL( CStreamStore& aStore ) const;
-
-        /**
-        *   Writes topic information to the stream.
-        *
-        *   @param    aOutstream        The stream to which the data is written.
-        *   @param    aTopic            Topic information.
-        *   @param    aTopicMessagesId  The stream identifier to the 
-        *                               topic messages.
-        */
-        void WriteTopicInformationL( RWriteStream& aOutstream, 
-            const TCbsDbTopic& aTopic, const TStreamId& aTopicMessagesId ) const;
-
-        /**
-        *   Extracts topic information (name, number, subscription and
-        *   hotmark status) from a factory defaults topics line
-        *   and adds that topic to the topic list.
-        *
-        *   @param aLine                Factory defaults line.
-        */
-        void AddDefaultTopicL( const TDesC& aLine );
-
-        /**
-        *   After a call to this function, the file stores can be assumed
-        *   to be open and initialized.
-        *
-        *   @param aDeleteExistingFiles     A flag whether to recreate and 
-        *                                   initialize the files or not
-        *   @param  aCreateNewTopicList     ETrue, if the first topic list
-        *                                   needs to be created
-        */
-        void OpenFilesL( TBool aDeleteExistingFiles, TBool aCreateNewTopicList );
-
-        /**
-        *   Creates CBS files, if appropriate.
-        *
-        *   @param  aUnsavedMsgFileExisted  Returns ETrue if unsaved messages
-        *                                   file already existed.
-        */
-        void CreateFilesIfNecessaryL( TBool& aUnsavedMsgFileExisted );
-
-        /**
-        *   Tries to open topic and unsaved messages files.
-        *
-        *   @param  aDeleteUnsavedMsgStreamIds  ETrue, if unsaved msg file 
-        *                                       has been deleted
-        *   @param  aCreateNewTopicList         ETrue, if the first topic list
-        *                                       needs to be created
-        */
-        void TryToOpenFilesL( TBool aDeleteUnsavedMsgStreamIds, TBool aCreateNewTopicList );
-
-        /**
-        *   Adds index topic to topic list.
-        */
-        void AddIndexTopicL();
-
-        /**
-        *   Creates an empty file store with the given filename.
-        *
-        *   @param aFilename            Filename to be created.
-        */
-        void DoCreateStoreL( const TDesC& aFilename );
-
-        /**
-        *   Deletes the unsaved messages' store and rebuilds it.
-        */
-        void RebuildUnsavedMessageStoreL();
-
-        /**
-        *   Deletes the topics' and unsaved messages' store and rebuilds them.
-        */
-        void RebuildTopicAndUnsavedStoresL();
-
-        /**
-        *  Called to repair the database when Unsaved messages -file
-        *  has been deleted, but Topics-file still contains information
-        *  on unsaved messages.
-        * 
-        *  Things that are done here: 
-        *       - Reset unread message counters, because a saved message
-        *         is always also read.
-        *       - Remove stream ids to unsaved messages from 
-        *         Topic messages -streams.
-        */
-        void HandleDeletionOfUnsavedMessagesFileL();
-
-        /**
-        *   Called by HandleDeletionOfUnsavedMessagesFileL().
-        *   Executes the necessary file operations.
-        */
-        void DoHandleDeletionOfUnsavedMessagesFileL();
-
-        /**
-        *   Replaces the given Topic message -stream with a stream which
-        *   contains all ids of saved messages but no ids of unsaved messages.
-        *
-        *   @param  aMsgStreamId        Topic messages -stream id
-        */
-        void DeleteUnsavedMessageStreamIdsL( const TStreamId& aMsgStreamId ) const;
-
-        /**
-        *   Resolves the topic position in topic list and uses this information
-        *   to call DoUpdateTopicL. Changes to stores are NOT commited.
-        *   Call to DoUpdateTopicL is not trapped.
-        *
-        *   @param  aTopic              Topic to be written into stream.
-        *   @param  aDeleting           Whether the call is due to a deletion.
-        */
-        void UpdateTopicCountersL( const TCbsDbTopic& aTopic,
-            const TBool aDeleting );
-
-        /**
-        *   Creates a standard topic list, which has it's topics and other settings
-        *   stored in Shared Data.
-        *
-        */
-        void CreateStandardTopicListL();
-
-        /**
-        *   Load the topic IDs belonging to a specified topic list
-        *
-        *   @param aTopicListStreamId   Stream ID of the topic list
-        */
-        void LoadTopicsIdsL( const TStreamId& aTopicListStreamId );
-
-        /**
-        *   Load the topics specified by the topic list stream ID
-        *
-        *   @param aTopicListStreamId   Stream ID of the topic list
-        */
-        void LoadTopicsL( const TStreamId& aTopicListStreamId );
-
-        /**
-        *   Updates the topic stream IDs in topic lists
-        *   
-        *   @param  aTopicNumber    The topic number
-        */
-        void UpdateTopicStreamIdsL( const TCbsDbTopicNumber aTopicNumber );
-
-    private:    // Data
-
-        // Ref: Database
-        CCbsDbImp& iDatabase;
-
-        // Ref: Topic messages manager.
-        CCbsDbImpTopicMessages* iMessages;
-        
-        // Session to the file server.
-        RFs& iFs;
-        
-        // Own: Store which contains topics.
-        CFileStore* iTopicStore;
-
-		// Own: Store which contains unsaved messages.
-        CFileStore* iUnsavedMessageStore;
-
-        // The last time iTopicStore and iUnsavedMessageStore were compacted
-        TTime iPreviousCompact;
-
-        // Current topic list in use
-        TCbsDbImpTopicList iCurrentTopicList;
-
-        // Own: Cached topic information.
-        CArrayFixFlat< TCbsDbImpTopic >* iTopics;
-
-        // Own: Registered topic list observers.
-        CArrayFixFlat< MCbsDbTopicListObserver* >* iObservers;
-
-        // Last topic added to topic list with topic detection.
-        TCbsTopicNumber iLastTopicNumber;
-
-        // Indicates whether there is a hotmarked message
-        TBool iIsHotmarkedMessage;
-
-        // Handle to the hotmarked message.
-        TCbsDbMessageHandle iMessageHandle;
-
-        // Own: Buffer containing the filename of topics file
-        HBufC* iTopicsFilename;
-
-        // Own: Buffer containing the filename of unsaved messages file
-        HBufC* iUnsavedMessagesFilename;
-
-        // Own: Cached topic list information.
-        CArrayFixFlat< TCbsDbImpTopicList >* iTopicLists;
-
-        // Own: Cached topic IDs
-        CArrayFixFlat< TStreamId >* iTopicIds;               
-
-        // Global topic count
-        TInt iTopicCount;
-
-        // Are we initializing Standard Topic list
-        TBool iInitializing; 
-
-        // Are we deleting all topics from current topic list
-        TBool iDeleteAllTopics;
-        
-        // Local variation bits
-        TInt iLVBits;
-
-        __DECLARE_TEST;
-    };
-
-#endif      // CCBSDBIMPTOPICLIST_H
-            
-// End of File
-
-