cbs/cbsserver/ServerInc/CCbsDbImp.H
author hgs
Tue, 10 Aug 2010 13:19:41 +0300
changeset 38 bc103bfb69cf
parent 33 8d5d7fcf9b59
permissions -rw-r--r--
201031_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  This file contains the header file of the CCbsDbImp class
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#ifndef     CCBSDBIMP_H
hgs
parents:
diff changeset
    22
#define     CCBSDBIMP_H
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
// INCLUDES
hgs
parents:
diff changeset
    25
#include <f32file.h>
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// CONSTANTS
hgs
parents:
diff changeset
    28
enum TCbsBackupRequest
hgs
parents:
diff changeset
    29
    {
hgs
parents:
diff changeset
    30
    ECbsNoBackup,
hgs
parents:
diff changeset
    31
    ECbsBackup,
hgs
parents:
diff changeset
    32
    ECbsRestore,
hgs
parents:
diff changeset
    33
    ECbsBackupNotDefined
hgs
parents:
diff changeset
    34
    };
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    37
class CCbsDbImpSettings;
hgs
parents:
diff changeset
    38
class CCbsDbImpTopicList;
hgs
parents:
diff changeset
    39
class CCbsDbImpTopicCollection;
hgs
parents:
diff changeset
    40
class CCbsDbImpTopicMessages;
hgs
parents:
diff changeset
    41
class CBaBackupSessionWrapper;
hgs
parents:
diff changeset
    42
class CCbsBackupMonitor;
hgs
parents:
diff changeset
    43
class CCbsDiskSpaceMonitor;
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
//  CLASS DECLARATION 
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
/**
hgs
parents:
diff changeset
    48
*   Basis for the implementation of the database.
hgs
parents:
diff changeset
    49
*
hgs
parents:
diff changeset
    50
*   Constructs instances of database subclasses CCbsDbImpSettings,
hgs
parents:
diff changeset
    51
*   CCbsDbImpTopicCollection, CCbsDbTopicList and CCbsDbTopicMessages.
hgs
parents:
diff changeset
    52
*   On initialization determines whether datafiles already exist.
hgs
parents:
diff changeset
    53
*   If all of them are present and valid, no special action is taken.
hgs
parents:
diff changeset
    54
*
hgs
parents:
diff changeset
    55
*   If some or all datafiles are missing or corrupt, all datafiles
hgs
parents:
diff changeset
    56
*   are deleted and new files created.
hgs
parents:
diff changeset
    57
*   Factory default settings, if available, are then loaded from
hgs
parents:
diff changeset
    58
*   Shared Data and stored in server datafiles. This is done by
hgs
parents:
diff changeset
    59
*   database subinstances.
hgs
parents:
diff changeset
    60
*/
hgs
parents:
diff changeset
    61
class CCbsDbImp : public CBase
hgs
parents:
diff changeset
    62
    {
hgs
parents:
diff changeset
    63
    public:        // New functions
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
        /**
hgs
parents:
diff changeset
    66
        *   Creates an instance of the class.
hgs
parents:
diff changeset
    67
        */
hgs
parents:
diff changeset
    68
        static CCbsDbImp* NewL();
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
        /**
hgs
parents:
diff changeset
    71
         *   The destructor.
hgs
parents:
diff changeset
    72
         */
hgs
parents:
diff changeset
    73
        ~CCbsDbImp();
hgs
parents:
diff changeset
    74
    
hgs
parents:
diff changeset
    75
    public:
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
        /**
hgs
parents:
diff changeset
    78
        *   Returns a reference to the current active topic list. 
hgs
parents:
diff changeset
    79
        *   
hgs
parents:
diff changeset
    80
        *   Using that instance the clients of the database can manage the 
hgs
parents:
diff changeset
    81
        *   topic list such as add and delete topics.
hgs
parents:
diff changeset
    82
        *
hgs
parents:
diff changeset
    83
        *   @return reference to the topic list.
hgs
parents:
diff changeset
    84
        */
hgs
parents:
diff changeset
    85
        CCbsDbImpTopicList& TopicListL();
hgs
parents:
diff changeset
    86
    
hgs
parents:
diff changeset
    87
        /**
hgs
parents:
diff changeset
    88
        *   Returns a reference to the current topic messages DB object.
hgs
parents:
diff changeset
    89
        *
hgs
parents:
diff changeset
    90
        *   @return reference to the topic messages.
hgs
parents:
diff changeset
    91
        */
hgs
parents:
diff changeset
    92
        CCbsDbImpTopicMessages& TopicMessagesL();
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
        /**
hgs
parents:
diff changeset
    95
        *   Returns a reference to the settings DB object.
hgs
parents:
diff changeset
    96
        *    
hgs
parents:
diff changeset
    97
        *   @return reference to the settings.
hgs
parents:
diff changeset
    98
        */
hgs
parents:
diff changeset
    99
        CCbsDbImpSettings& SettingsL();
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
        /**
hgs
parents:
diff changeset
   102
        *   Returns a reference to the topic collection. 
hgs
parents:
diff changeset
   103
        *   
hgs
parents:
diff changeset
   104
        *   @return reference to the topic collection.
hgs
parents:
diff changeset
   105
        */
hgs
parents:
diff changeset
   106
        CCbsDbImpTopicCollection& TopicCollectionL();
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
        /**
hgs
parents:
diff changeset
   109
        *   Returns a reference to the backup wrapper. 
hgs
parents:
diff changeset
   110
        *   
hgs
parents:
diff changeset
   111
        *   @return reference to the backup wrapper.
hgs
parents:
diff changeset
   112
        */
hgs
parents:
diff changeset
   113
        CBaBackupSessionWrapper& BackupWrapperL();
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
        /**
hgs
parents:
diff changeset
   116
        *   Checks if the database is initialized.
hgs
parents:
diff changeset
   117
        *
hgs
parents:
diff changeset
   118
        *   @return     ETrue if database has been initialized.
hgs
parents:
diff changeset
   119
        */
hgs
parents:
diff changeset
   120
        TBool IsInitialized() const;
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
        /**
hgs
parents:
diff changeset
   123
        *   Registers for a notification for critical level.
hgs
parents:
diff changeset
   124
        */
hgs
parents:
diff changeset
   125
        void WaitForCriticalLevel();
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
        /**
hgs
parents:
diff changeset
   128
        *   Deregisters from critical level notification.
hgs
parents:
diff changeset
   129
        */
hgs
parents:
diff changeset
   130
        void WaitForCriticalLevelCancel();
hgs
parents:
diff changeset
   131
        
hgs
parents:
diff changeset
   132
        /**
hgs
parents:
diff changeset
   133
        *   Changes file lock states as requested.
hgs
parents:
diff changeset
   134
        */
hgs
parents:
diff changeset
   135
        void ChangeFileLocksL( const TCbsBackupRequest& aRequest );
hgs
parents:
diff changeset
   136
        
hgs
parents:
diff changeset
   137
        /**
hgs
parents:
diff changeset
   138
        *   Constructs DB components.
hgs
parents:
diff changeset
   139
        *
hgs
parents:
diff changeset
   140
        */
hgs
parents:
diff changeset
   141
        void CreateComponentsL();
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
    private:
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
        /**
hgs
parents:
diff changeset
   146
        *   Constructor.
hgs
parents:
diff changeset
   147
        */
hgs
parents:
diff changeset
   148
        CCbsDbImp();
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
        /**
hgs
parents:
diff changeset
   151
        *   The method creates the member variables and so finalizes 
hgs
parents:
diff changeset
   152
        *   the construction. It will leave if the construction fails.
hgs
parents:
diff changeset
   153
        */
hgs
parents:
diff changeset
   154
        void ConstructL();
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
        /**
hgs
parents:
diff changeset
   157
        *   Constructs CCbsDbImpSettings.
hgs
parents:
diff changeset
   158
        *
hgs
parents:
diff changeset
   159
        *   @param  aFileName               Name of the settings file.
hgs
parents:
diff changeset
   160
        *   @return                         A ready-made CCbsDbImpSettings object.
hgs
parents:
diff changeset
   161
        */
hgs
parents:
diff changeset
   162
        CCbsDbImpSettings* CreateSettingsL();
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
        /**
hgs
parents:
diff changeset
   165
        *   Constructs CCbsDbImpTopicList.
hgs
parents:
diff changeset
   166
        *
hgs
parents:
diff changeset
   167
        *   @param  aTopicsFile             Name of the topics file.
hgs
parents:
diff changeset
   168
        *   @param  aMessagesFile           Name of the messages file.
hgs
parents:
diff changeset
   169
        *   @return                         A ready-made CCbsDbImpTopicList object.
hgs
parents:
diff changeset
   170
        */
hgs
parents:
diff changeset
   171
        CCbsDbImpTopicList* CreateTopicListL( const TDesC& aTopicsFile,
hgs
parents:
diff changeset
   172
                                              const TDesC& aMessagesFile );
hgs
parents:
diff changeset
   173
hgs
parents:
diff changeset
   174
        /**
hgs
parents:
diff changeset
   175
        *   Constructs CCbsDbImpTopicMessages.
hgs
parents:
diff changeset
   176
        *
hgs
parents:
diff changeset
   177
        *   @param  aTopicList              The CCbsDbImpTopicList to link to.
hgs
parents:
diff changeset
   178
        *   @return                         A ready-made CCbsDbImpTopicMessages object.
hgs
parents:
diff changeset
   179
        */
hgs
parents:
diff changeset
   180
        CCbsDbImpTopicMessages* CreateTopicMessagesL( CCbsDbImpTopicList& aTopicList );
hgs
parents:
diff changeset
   181
hgs
parents:
diff changeset
   182
        /**
hgs
parents:
diff changeset
   183
        *   Constructs CCbsDbImpTopicCollection.
hgs
parents:
diff changeset
   184
        *
hgs
parents:
diff changeset
   185
        *   @param  aTopicList              The CCbsDbImpTopicList to link to.
hgs
parents:
diff changeset
   186
        *   @return                         A ready-made CCbsDbImpTopicCollection object.
hgs
parents:
diff changeset
   187
        */
hgs
parents:
diff changeset
   188
        CCbsDbImpTopicCollection* CreateTopicCollectionL();
hgs
parents:
diff changeset
   189
hgs
parents:
diff changeset
   190
        /**
hgs
parents:
diff changeset
   191
        *   Free DB components.
hgs
parents:
diff changeset
   192
        */
hgs
parents:
diff changeset
   193
        void DeleteComponents();        
hgs
parents:
diff changeset
   194
        
hgs
parents:
diff changeset
   195
    private:
hgs
parents:
diff changeset
   196
        // Owns: DB settings object.
hgs
parents:
diff changeset
   197
        CCbsDbImpSettings* iSettings;
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
        // Owns: DB topic list object.
hgs
parents:
diff changeset
   200
        CCbsDbImpTopicList* iTopicList;
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
        // Owns: DB topic collection object. 
hgs
parents:
diff changeset
   203
        CCbsDbImpTopicCollection* iTopicCollection;
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
        // Owns: DB topic messages object.
hgs
parents:
diff changeset
   206
        CCbsDbImpTopicMessages* iTopicMessages;
hgs
parents:
diff changeset
   207
hgs
parents:
diff changeset
   208
        // File server session shared by all DB objects. 
hgs
parents:
diff changeset
   209
        RFs iFs;
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
        // Owns: The backup wrapper
hgs
parents:
diff changeset
   212
        CBaBackupSessionWrapper* iBackupWrapper;
hgs
parents:
diff changeset
   213
        
hgs
parents:
diff changeset
   214
        // Owns: The backup monitor, uses PubSub
hgs
parents:
diff changeset
   215
        CCbsBackupMonitor* iBackupMonitor;
hgs
parents:
diff changeset
   216
        
hgs
parents:
diff changeset
   217
        // Owns: Disk space monitor, uses PubSub
hgs
parents:
diff changeset
   218
        CCbsDiskSpaceMonitor* iDiskSpaceMonitor;
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
    };
hgs
parents:
diff changeset
   221
hgs
parents:
diff changeset
   222
#endif      //  CCBSDBIMP_H   
hgs
parents:
diff changeset
   223
            
hgs
parents:
diff changeset
   224
// End of File