sl@0: // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #ifndef HEAPREPOS_H_ sl@0: #define HEAPREPOS_H_ sl@0: sl@0: #include sl@0: #include "setting.h" sl@0: #include "datatype.h" sl@0: #include "cregen.h" sl@0: #include "inifile.h" sl@0: sl@0: /** sl@0: @internalTechnology sl@0: */ sl@0: class CHeapRepository : public CBase sl@0: { sl@0: friend class CCreGenerator; sl@0: friend class TConvToolTester; sl@0: sl@0: public: sl@0: static CHeapRepository* NewL(TUid aUid); sl@0: ~CHeapRepository(); sl@0: void ResetContent(); sl@0: sl@0: //-------------general get/set function------------------------------------- sl@0: TBool IsEmpty(); sl@0: inline TUid Uid() const {return iUid;}; sl@0: inline void SetUid(TUid aUid){iUid=aUid;}; sl@0: inline TUid Owner() {return iOwner ;} ; sl@0: inline void SetOwner(TUid aOwner){iOwner=aOwner;}; sl@0: sl@0: inline RSettingsArray& SettingsArray(); sl@0: inline RArray& DeletedSettingsArray(); sl@0: inline RPointerArray& SinglePolicyArray(); sl@0: inline RRangePolicyArray& RangePolicyArray(); sl@0: inline RDefaultMetaArray& RangeMetaArray(); sl@0: inline TUint32 DefaultMeta() {return iDefaultMeta;}; sl@0: inline void SetDefaultMeta(TUint32 aMeta){iDefaultMeta=aMeta;}; sl@0: sl@0: inline TTime TimeStamp() const {return iTimeStamp;}; sl@0: inline void SetTimeStamp(const TTime& aTime){iTimeStamp=aTime;}; sl@0: sl@0: sl@0: //-------------security retrieval function----------------------------- sl@0: static TBool SinglePolicyMatchOnKey(const TSettingsAccessPolicy& aSinglePolicy, const TSettingsAccessPolicy& aSinglePolicyIndexItem); sl@0: static TInt CompareKeyIds(const TSettingsAccessPolicy& aSinglePolicy, const TSettingsAccessPolicy& aSinglePolicyIndexItem); sl@0: TSettingsAccessPolicy* GetFallbackAccessPolicy(TUint32 aId sl@0: #ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS sl@0: ,TBool aSkipSingle=EFalse sl@0: #endif sl@0: ); sl@0: const TSecurityPolicy& GetFallbackReadAccessPolicy(TUint32 aId); sl@0: inline const TSecurityPolicy& GetReadAccessPolicy(const TServerSetting& aSetting); sl@0: inline const TSecurityPolicy& GetReadAccessPolicy(TUint32 aId); sl@0: inline const TSecurityPolicy& GetDefaultReadAccessPolicy(); sl@0: const TSecurityPolicy& GetFallbackWriteAccessPolicy(TUint32 aId); sl@0: inline const TSecurityPolicy& GetWriteAccessPolicy(const TServerSetting& aSetting); sl@0: inline const TSecurityPolicy& GetWriteAccessPolicy(TUint32 aId); sl@0: inline const TSecurityPolicy& GetDefaultWriteAccessPolicy(); sl@0: inline void SetDefaultPolicy(const TSettingsAccessPolicy& aDefaultPolicy) sl@0: { sl@0: iDefaultPolicy.iReadAccessPolicy=aDefaultPolicy.iReadAccessPolicy; sl@0: iDefaultPolicy.iWriteAccessPolicy=aDefaultPolicy.iWriteAccessPolicy; sl@0: } sl@0: inline TSettingsAccessPolicy& GetDefaultAccessPolicy() sl@0: { sl@0: return iDefaultPolicy; sl@0: } sl@0: sl@0: //-------------file i/o cre read/write and ini read write--------------- sl@0: void ExternalizeCre(TUint8 aPersistVersion,RWriteStream& aStream) const; sl@0: void InternalizeCreL(RReadStream& aStream) ; sl@0: TInt CommitChanges(RFs& aFs,TUint8 aPersistVersion,const TDesC& aTargetFilePath); sl@0: void CreateRepositoryFromCreFileL(RFs& aFs,const TDesC& aFilePath); sl@0: #ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS sl@0: void CreateRepositoryFromCreFileL(RFs& aFs,const TDesC& aFilePath,TUint8& aCreVersion); sl@0: void InternalizeCreL(RReadStream& aStream,TUint8& aCreVersion) sl@0: { sl@0: CCreGenerator::InternalizeCreL(*this, aStream,aCreVersion); sl@0: } sl@0: #endif sl@0: void ReloadContentL(CIniFileIn& aIniFile); sl@0: TInt ReloadContentExceptSettingsL(CIniFileIn& aIniFile); sl@0: sl@0: void SetMetaDataOnRead(TServerSetting& aSetting, TBool aSingleMetaFound); sl@0: static void SinglePoliciesCleanup(TAny *aPtr); sl@0: sl@0: TInt ReadSettingSavePolicyL(CIniFileIn& aFile,TServerSetting& aSetting, TSettingsAccessPolicy* &aPolicy, TBool& aSingleMetaFound); sl@0: TInt Create(TServerSetting& s, TSettingsAccessPolicy* &aPolicy, TBool aSingleMetaFound=EFalse); sl@0: sl@0: //only used for the conv tool so configured out here using macro sl@0: #ifdef CENTREP_CONV_TOOL sl@0: void DoCommitChangesToIniFileL(RFs& aFs,const TDesC& aOutFileName sl@0: #ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS sl@0: ,TUint32 aCreVersion sl@0: #endif sl@0: ); sl@0: #endif sl@0: sl@0: private: sl@0: void DoCommitChangesL(RFs& aFs,TUint8 aPersistVersion,const TDesC& aFilePath); sl@0: CHeapRepository(TUid aUid); sl@0: sl@0: private: sl@0: enum {KGranularity=8}; sl@0: RSettingsArray iSettings; sl@0: TUid iUid; sl@0: TUid iOwner; sl@0: sl@0: //security policy sl@0: TSettingsAccessPolicy iDefaultPolicy; sl@0: RPointerArray iSinglePolicies; sl@0: RRangePolicyArray iRangePolicies; sl@0: sl@0: //meta data sl@0: TUint32 iDefaultMeta ; sl@0: RDefaultMetaArray iRangeMeta ; sl@0: sl@0: // Keep track of deleted keys so that deletions can be propagated across sl@0: // a Backup/Restore cycle when backup data is merged with initialisation sl@0: // file during restore process. sl@0: RArray iDeletedSettings ; sl@0: TTime iTimeStamp; sl@0: }; sl@0: sl@0: #include "heaprepos.inl" sl@0: sl@0: #endif /*HEAPREPOS_H_*/