diff -r 000000000000 -r 08ec8eefde2f persistentstorage/centralrepository/common/inc/heaprepos.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/centralrepository/common/inc/heaprepos.h Fri Jan 22 11:06:30 2010 +0200 @@ -0,0 +1,141 @@ +// Copyright (c) 2008-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: +// + +#ifndef HEAPREPOS_H_ +#define HEAPREPOS_H_ + +#include +#include "setting.h" +#include "datatype.h" +#include "cregen.h" +#include "inifile.h" + +/** +@internalTechnology +*/ +class CHeapRepository : public CBase + { + friend class CCreGenerator; + friend class TConvToolTester; + +public: + static CHeapRepository* NewL(TUid aUid); + ~CHeapRepository(); + void ResetContent(); + + //-------------general get/set function------------------------------------- + TBool IsEmpty(); + inline TUid Uid() const {return iUid;}; + inline void SetUid(TUid aUid){iUid=aUid;}; + inline TUid Owner() {return iOwner ;} ; + inline void SetOwner(TUid aOwner){iOwner=aOwner;}; + + inline RSettingsArray& SettingsArray(); + inline RArray& DeletedSettingsArray(); + inline RPointerArray& SinglePolicyArray(); + inline RRangePolicyArray& RangePolicyArray(); + inline RDefaultMetaArray& RangeMetaArray(); + inline TUint32 DefaultMeta() {return iDefaultMeta;}; + inline void SetDefaultMeta(TUint32 aMeta){iDefaultMeta=aMeta;}; + + inline TTime TimeStamp() const {return iTimeStamp;}; + inline void SetTimeStamp(const TTime& aTime){iTimeStamp=aTime;}; + + + //-------------security retrieval function----------------------------- + static TBool SinglePolicyMatchOnKey(const TSettingsAccessPolicy& aSinglePolicy, const TSettingsAccessPolicy& aSinglePolicyIndexItem); + static TInt CompareKeyIds(const TSettingsAccessPolicy& aSinglePolicy, const TSettingsAccessPolicy& aSinglePolicyIndexItem); + TSettingsAccessPolicy* GetFallbackAccessPolicy(TUint32 aId +#ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS + ,TBool aSkipSingle=EFalse +#endif + ); + const TSecurityPolicy& GetFallbackReadAccessPolicy(TUint32 aId); + inline const TSecurityPolicy& GetReadAccessPolicy(const TServerSetting& aSetting); + inline const TSecurityPolicy& GetReadAccessPolicy(TUint32 aId); + inline const TSecurityPolicy& GetDefaultReadAccessPolicy(); + const TSecurityPolicy& GetFallbackWriteAccessPolicy(TUint32 aId); + inline const TSecurityPolicy& GetWriteAccessPolicy(const TServerSetting& aSetting); + inline const TSecurityPolicy& GetWriteAccessPolicy(TUint32 aId); + inline const TSecurityPolicy& GetDefaultWriteAccessPolicy(); + inline void SetDefaultPolicy(const TSettingsAccessPolicy& aDefaultPolicy) + { + iDefaultPolicy.iReadAccessPolicy=aDefaultPolicy.iReadAccessPolicy; + iDefaultPolicy.iWriteAccessPolicy=aDefaultPolicy.iWriteAccessPolicy; + } + inline TSettingsAccessPolicy& GetDefaultAccessPolicy() + { + return iDefaultPolicy; + } + + //-------------file i/o cre read/write and ini read write--------------- + void ExternalizeCre(TUint8 aPersistVersion,RWriteStream& aStream) const; + void InternalizeCreL(RReadStream& aStream) ; + TInt CommitChanges(RFs& aFs,TUint8 aPersistVersion,const TDesC& aTargetFilePath); + void CreateRepositoryFromCreFileL(RFs& aFs,const TDesC& aFilePath); +#ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS + void CreateRepositoryFromCreFileL(RFs& aFs,const TDesC& aFilePath,TUint8& aCreVersion); + void InternalizeCreL(RReadStream& aStream,TUint8& aCreVersion) + { + CCreGenerator::InternalizeCreL(*this, aStream,aCreVersion); + } +#endif + void ReloadContentL(CIniFileIn& aIniFile); + TInt ReloadContentExceptSettingsL(CIniFileIn& aIniFile); + + void SetMetaDataOnRead(TServerSetting& aSetting, TBool aSingleMetaFound); + static void SinglePoliciesCleanup(TAny *aPtr); + + TInt ReadSettingSavePolicyL(CIniFileIn& aFile,TServerSetting& aSetting, TSettingsAccessPolicy* &aPolicy, TBool& aSingleMetaFound); + TInt Create(TServerSetting& s, TSettingsAccessPolicy* &aPolicy, TBool aSingleMetaFound=EFalse); + + //only used for the conv tool so configured out here using macro +#ifdef CENTREP_CONV_TOOL + void DoCommitChangesToIniFileL(RFs& aFs,const TDesC& aOutFileName +#ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS + ,TUint32 aCreVersion +#endif + ); +#endif + +private: + void DoCommitChangesL(RFs& aFs,TUint8 aPersistVersion,const TDesC& aFilePath); + CHeapRepository(TUid aUid); + +private: + enum {KGranularity=8}; + RSettingsArray iSettings; + TUid iUid; + TUid iOwner; + + //security policy + TSettingsAccessPolicy iDefaultPolicy; + RPointerArray iSinglePolicies; + RRangePolicyArray iRangePolicies; + + //meta data + TUint32 iDefaultMeta ; + RDefaultMetaArray iRangeMeta ; + + // Keep track of deleted keys so that deletions can be propagated across + // a Backup/Restore cycle when backup data is merged with initialisation + // file during restore process. + RArray iDeletedSettings ; + TTime iTimeStamp; + }; + +#include "heaprepos.inl" + +#endif /*HEAPREPOS_H_*/