--- /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 <e32base.h>
+#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<TUint32>& DeletedSettingsArray();
+ inline RPointerArray<TSettingsAccessPolicy>& 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<TSettingsAccessPolicy> 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<TUint32> iDeletedSettings ;
+ TTime iTimeStamp;
+ };
+
+#include "heaprepos.inl"
+
+#endif /*HEAPREPOS_H_*/