williamr@4: // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@4: // All rights reserved. williamr@4: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@4: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: // williamr@4: // Initial Contributors: williamr@4: // Nokia Corporation - initial contribution. williamr@4: // williamr@4: // Contributors: williamr@4: // williamr@4: // Description: williamr@4: // williamr@4: williamr@4: #if !defined(__DIRECTFILESTORE_H__) williamr@4: #define __DIRECTFILESTORE_H__ williamr@4: williamr@4: #include williamr@4: #include williamr@4: #include williamr@4: williamr@4: namespace PCStore williamr@4: { williamr@4: class TUidType; williamr@4: class CStoreWriteStream; williamr@4: class CStoreReadStream; williamr@4: class CFileStreamBuf; williamr@4: williamr@4: const TInt KDirectFileStoreLayoutUidValue=0x10000037; //268435511; williamr@4: const TUid KDirectFileStoreLayoutUid={KDirectFileStoreLayoutUidValue}; williamr@4: williamr@4: /** williamr@4: @internalAll williamr@4: williamr@4: Direct file store. williamr@4: williamr@4: A direct file store implements a set of the operations to open store, create streams(CStoreWriteStream williamr@4: and CStoreReadStream), set root stream id to the store. williamr@4: williamr@4: Objects can be externalized to streams represented by class CStoreWriteStream. Once the streams williamr@4: have been closed, they cannot subsequently be changed, i.e. streams cannot be replaced, deleted, williamr@4: extended or changed in any way. williamr@4: williamr@4: Existing direct file stores can be opened with this class. Objects can be restored with class williamr@4: CStoreReadStream. williamr@4: williamr@4: Before closing a new store, the root stream id must be set. After opening an existing store, the williamr@4: first thing done is to look up the root stream id. The root stream can then be opened and data williamr@4: read from the store. williamr@4: williamr@4: @see CStoreWriteStream williamr@4: @see CStoreReadStream williamr@4: */ williamr@4: class CDirectFileStore williamr@4: { williamr@4: public: williamr@4: //Enumerations for the store open mode williamr@4: enum TStoreMode williamr@4: { williamr@4: EReadStore=0, williamr@4: EWriteStore=1 williamr@4: }; williamr@4: williamr@4: public: williamr@4: ~CDirectFileStore(); williamr@4: williamr@4: void SetRoot(TStreamId aId); williamr@4: TStreamId Root() const; williamr@4: static CDirectFileStore* Open(const char* aFileName); williamr@4: static CDirectFileStore* Replace(const char* aFileName); williamr@4: static CDirectFileStore* Replace(const char* aFileName, const TUidType& aType); williamr@4: CStoreWriteStream* CreateWriteStream(TStreamId& aId); williamr@4: CStoreReadStream* CreateReadStream(TStreamId aId); williamr@4: williamr@4: private: williamr@4: CDirectFileStore(const char* aFileName, TStoreMode aMode); williamr@4: CStoreWriteStream* CreateIdWriteStream(TStreamId aId); williamr@4: williamr@4: void SetType(const TUidType& aType); williamr@4: void CheckType(); williamr@4: void Externalize(CStoreWriteStream& aWs) const; williamr@4: void Internalize(CStoreReadStream& aRs); williamr@4: williamr@4: private: williamr@4: TStoreMode iMode; williamr@4: TStreamId iRoot; williamr@4: CFileStreamBuf* iFileStreamBuf; williamr@4: }; williamr@4: } williamr@4: #endif // !defined(__DIRECTFILESTORE_H__)