diff -r 000000000000 -r 08ec8eefde2f persistentstorage/dbms/inc/D32STOR.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/dbms/inc/D32STOR.H Fri Jan 22 11:06:30 2010 +0200 @@ -0,0 +1,178 @@ +// Copyright (c) 1998-2009 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: +// The Store-Database +// +// + +#ifndef __D32STOR_H__ +#define __D32STOR_H__ +#ifndef __D32TABLE_H__ +#include "D32TABLE.H" +#endif +#ifndef __S32STOR_H__ +#include +#endif + +// other classes referenced +class MDbStreamFilter; +class CDbStoreCompression; +class CClusterCache; + +// classes defined +class CDbStoreDatabase; +class CDbFileStoreDatabase; + +/** +@internalComponent +*/ +enum TDbStoreVersion { EDbStoreVersion2=3,EDbStoreSecure,EDbStoreCompressed }; + +/** +@internalComponent +*/ +class CDbStoreDatabase : public CDbTableDatabase + { +public: + enum TZipType {EDeflate,EInflate}; + +private: + #ifndef PAGE_CACHE_SIZE + #define PAGE_CACHE_SIZE 16 + #else + #if PAGE_CACHE_SIZE < 8 + #error "PAGE_CACHE_SIZE macro value can't be less than 8" + #endif + #endif + enum {EPageCachePages=PAGE_CACHE_SIZE}; + enum {EModified=0x1,EDamaged=0x2,ESharedStore=0x80000000}; + class CCompactor; + +public: +// factory functions for pure StoreDatabase + static CDbDatabase* CreateL(CStreamStore* aStore,TStreamId& aStreamId); + static CDbSource* OpenL(CStreamStore* aStore,TStreamId aStreamId); + static void CompressL(CStreamStore* aStore,TStreamId aStreamId,TZipType aZip); +// accessors + inline CStreamStore& Store(); + inline MDbStreamFilter* Filter(); + CClusterCache& ClusterCacheL(); + MPagePool& PagePoolL(); +// user-class's transaction protocol + void MarkL(); + void IndexRecoveredL(); + +protected: + IMPORT_C CDbStoreDatabase(); + IMPORT_C ~CDbStoreDatabase(); +// phase 2 c'tors + IMPORT_C TStreamId ConstructL(); +// framework: authentication + IMPORT_C void AuthenticateL(); + IMPORT_C void RestoreL(TStreamId aStreamId); +// framework: pure delegated functions + IMPORT_C TInt Property(CDbDatabase::TProperty aProperty); + IMPORT_C void DestroyL(); +// framework: transaction protocol + IMPORT_C void LoadSchemaL(); + IMPORT_C void SynchL(TDbLockType aLock); + IMPORT_C void Revert(TDbLockType aLock); + IMPORT_C void Idle(); +// framework: object factory + IMPORT_C CDbTableDef* CreateTableL(const TDesC& aName,const CDbColSet& aColSet,const CDbKey* aPrimaryKey); + IMPORT_C CDbTableIndexDef* CreateIndexL(const CDbTableDef& aTable,const TDesC& aName,const CDbKey& aKey); + IMPORT_C CDbTable* TableL(const CDbTableDef& aDef); +// framework: incremental factory + IMPORT_C CStepper* TableAlterL(CDbTableDef& aTable,const HDbColumnSet& aNewSet,TInt& aStep); + IMPORT_C CStepper* RecordDiscarderL(const CDbTableDef& aTable,TInt& aStep); + IMPORT_C CStepper* IndexDiscarderL(const CDbTableDef& aTable,const CDbTableIndexDef& anIndex,TInt& aStep); + IMPORT_C CStepper* UtilityL(CDbDatabase::TUtility aType,TInt& aStep); + +private: +// framework: reserved + IMPORT_C void Reserved_1(); + IMPORT_C void Reserved_2(); +// implementationp functions + static CDbStoreDatabase* NewLC(CStreamStore* aStore); +// + void CompressTablesL(); + void CompressL(TStreamId aStreamId,TZipType aZip); +// + void ReadHeaderL(RReadStream& aStream); + void InitPagePoolL(); + void ReplaceSchemaL(); + void ReplaceTokenL(TUint aFlags); + void SynchStoreL(TDbLockType aLock); + CDbStoreCompression& CompressionL(); + CStepper* RecoverL(TInt& aStep); + +protected: + CStreamStore* iStore; + TInt iReclaim; + +private: + TUint8 iVersion; + TUint8 iFlags; + TUint8 iSharedStore; + TStreamId iSchemaId; + TStreamId iTokenId; + TStorePagePoolToken iPoolToken; + RStorePagePool* iPagePool; + CPageCache* iPageCache; + CClusterCache* iClusterCache; + MDbStreamFilter* iFilter; + CDbStoreCompression* iCompression; + + }; + +/** +The general file-store database class +@internalComponent +*/ +const TInt32 KDbmsFileDatabaseUidValue=0x10000EBE; +const TUid KDbmsFileDatabaseUid={KDbmsFileDatabaseUidValue}; + +/** +@internalComponent +*/ +class CDbFileStoreDatabase : public CDbStoreDatabase + { +public: + IMPORT_C static CDbDatabase* CreateL(RFs& aFs, const TDesC& aName, TDbFormat::TCreate aMode, + const TUidType& aType); + IMPORT_C static CDbSource* OpenL(RFs& aFs,const TDesC& aName,TDbFormat::TOpen aMode); + +protected: + IMPORT_C CDbFileStoreDatabase(RFs& aFs); + IMPORT_C ~CDbFileStoreDatabase(); +// + IMPORT_C void CreateL(const TDesC& aName, TDbFormat::TCreate aMode, const TUidType& aType); + IMPORT_C virtual TStreamId CreateRootL(TStreamId aDatabaseId); +// + IMPORT_C void OpenL(const TDesC& aName,TDbFormat::TOpen aMode); + IMPORT_C virtual TStreamId DatabaseIdL(TStreamId aRootId); +// from CDbStoreDatabase + IMPORT_C TInt Property(CDbDatabase::TProperty aProperty); + IMPORT_C void DestroyL(); + +private: + static CDbFileStoreDatabase* NewLC(RFs& aFs); + +private: + RFs& iFs; + HBufC* iName; + TBool iDelete; + + }; + +#endif