os/persistentdata/persistentstorage/centralrepository/common/inc/heaprepos.h
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/persistentdata/persistentstorage/centralrepository/common/inc/heaprepos.h	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,141 @@
     1.4 +// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.5 +// All rights reserved.
     1.6 +// This component and the accompanying materials are made available
     1.7 +// under the terms of "Eclipse Public License v1.0"
     1.8 +// which accompanies this distribution, and is available
     1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
    1.10 +//
    1.11 +// Initial Contributors:
    1.12 +// Nokia Corporation - initial contribution.
    1.13 +//
    1.14 +// Contributors:
    1.15 +//
    1.16 +// Description:
    1.17 +//
    1.18 +
    1.19 +#ifndef HEAPREPOS_H_
    1.20 +#define HEAPREPOS_H_
    1.21 +
    1.22 +#include <e32base.h>
    1.23 +#include "setting.h"
    1.24 +#include "datatype.h"
    1.25 +#include "cregen.h"
    1.26 +#include "inifile.h"
    1.27 +
    1.28 +/**
    1.29 +@internalTechnology
    1.30 +*/
    1.31 +class CHeapRepository : public CBase
    1.32 +	{
    1.33 +	friend class CCreGenerator;
    1.34 +	friend class TConvToolTester;
    1.35 +	
    1.36 +public:	
    1.37 +	static CHeapRepository* NewL(TUid aUid);
    1.38 +	~CHeapRepository();
    1.39 +	void ResetContent();	
    1.40 +
    1.41 +	//-------------general get/set function-------------------------------------
    1.42 +	TBool IsEmpty();
    1.43 +	inline TUid Uid() const {return iUid;};
    1.44 +	inline void SetUid(TUid aUid){iUid=aUid;};
    1.45 +	inline TUid Owner() {return iOwner ;} ;
    1.46 +	inline void SetOwner(TUid aOwner){iOwner=aOwner;};
    1.47 +	
    1.48 +	inline RSettingsArray& SettingsArray();
    1.49 +	inline RArray<TUint32>& DeletedSettingsArray();
    1.50 +	inline RPointerArray<TSettingsAccessPolicy>& SinglePolicyArray();
    1.51 +	inline RRangePolicyArray& RangePolicyArray();
    1.52 +	inline RDefaultMetaArray& RangeMetaArray();
    1.53 +	inline TUint32 DefaultMeta() {return iDefaultMeta;};
    1.54 +	inline void SetDefaultMeta(TUint32 aMeta){iDefaultMeta=aMeta;};
    1.55 +	
    1.56 +	inline TTime TimeStamp() const {return iTimeStamp;};
    1.57 +	inline void SetTimeStamp(const TTime& aTime){iTimeStamp=aTime;};
    1.58 +	
    1.59 +
    1.60 +	//-------------security retrieval function-----------------------------
    1.61 +	static TBool SinglePolicyMatchOnKey(const TSettingsAccessPolicy& aSinglePolicy, const TSettingsAccessPolicy& aSinglePolicyIndexItem);
    1.62 +	static TInt CompareKeyIds(const TSettingsAccessPolicy& aSinglePolicy, const TSettingsAccessPolicy& aSinglePolicyIndexItem);	
    1.63 +	TSettingsAccessPolicy* GetFallbackAccessPolicy(TUint32 aId
    1.64 +#ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS	
    1.65 +	,TBool aSkipSingle=EFalse
    1.66 +#endif	
    1.67 +	);
    1.68 +	const TSecurityPolicy& GetFallbackReadAccessPolicy(TUint32 aId);
    1.69 +	inline const TSecurityPolicy& GetReadAccessPolicy(const TServerSetting& aSetting);
    1.70 +	inline const TSecurityPolicy& GetReadAccessPolicy(TUint32 aId);
    1.71 +	inline const TSecurityPolicy& GetDefaultReadAccessPolicy();
    1.72 +	const TSecurityPolicy& GetFallbackWriteAccessPolicy(TUint32 aId);
    1.73 +	inline const TSecurityPolicy& GetWriteAccessPolicy(const TServerSetting& aSetting);
    1.74 +	inline const TSecurityPolicy& GetWriteAccessPolicy(TUint32 aId);
    1.75 +	inline const TSecurityPolicy& GetDefaultWriteAccessPolicy();
    1.76 +	inline void SetDefaultPolicy(const TSettingsAccessPolicy& aDefaultPolicy)
    1.77 +		{
    1.78 +		iDefaultPolicy.iReadAccessPolicy=aDefaultPolicy.iReadAccessPolicy;
    1.79 +		iDefaultPolicy.iWriteAccessPolicy=aDefaultPolicy.iWriteAccessPolicy;		
    1.80 +		}
    1.81 +	inline TSettingsAccessPolicy& GetDefaultAccessPolicy()
    1.82 +		{	
    1.83 +		return iDefaultPolicy;
    1.84 +		}
    1.85 +
    1.86 +	//-------------file i/o cre read/write and ini read write---------------
    1.87 +	void ExternalizeCre(TUint8 aPersistVersion,RWriteStream& aStream) const;
    1.88 +	void InternalizeCreL(RReadStream& aStream) ;
    1.89 +	TInt CommitChanges(RFs& aFs,TUint8 aPersistVersion,const TDesC& aTargetFilePath);
    1.90 +	void CreateRepositoryFromCreFileL(RFs& aFs,const TDesC& aFilePath);
    1.91 +#ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS	
    1.92 +	void CreateRepositoryFromCreFileL(RFs& aFs,const TDesC& aFilePath,TUint8& aCreVersion);	
    1.93 +	void InternalizeCreL(RReadStream& aStream,TUint8& aCreVersion)
    1.94 +		{
    1.95 +		CCreGenerator::InternalizeCreL(*this, aStream,aCreVersion);
    1.96 +		}
    1.97 +#endif			
    1.98 +	void ReloadContentL(CIniFileIn& aIniFile);
    1.99 +	TInt ReloadContentExceptSettingsL(CIniFileIn& aIniFile);
   1.100 +
   1.101 +	void SetMetaDataOnRead(TServerSetting& aSetting, TBool aSingleMetaFound);
   1.102 +	static void SinglePoliciesCleanup(TAny *aPtr);	 
   1.103 +
   1.104 +	TInt ReadSettingSavePolicyL(CIniFileIn& aFile,TServerSetting& aSetting, TSettingsAccessPolicy* &aPolicy, TBool& aSingleMetaFound);	
   1.105 +	TInt Create(TServerSetting& s, TSettingsAccessPolicy* &aPolicy, TBool aSingleMetaFound=EFalse);
   1.106 +
   1.107 +	//only used for the conv tool so configured out here using macro	
   1.108 +#ifdef CENTREP_CONV_TOOL	
   1.109 +	void DoCommitChangesToIniFileL(RFs& aFs,const TDesC& aOutFileName
   1.110 +#ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS
   1.111 +	,TUint32 aCreVersion
   1.112 +#endif	
   1.113 +	);
   1.114 +#endif
   1.115 +	
   1.116 +private:
   1.117 +	void DoCommitChangesL(RFs& aFs,TUint8 aPersistVersion,const TDesC& aFilePath);
   1.118 +	CHeapRepository(TUid aUid);
   1.119 +		
   1.120 +private:
   1.121 +	enum {KGranularity=8};
   1.122 +	RSettingsArray iSettings;
   1.123 +	TUid iUid;
   1.124 +	TUid iOwner;
   1.125 +		
   1.126 +	//security policy
   1.127 +	TSettingsAccessPolicy iDefaultPolicy;	
   1.128 +	RPointerArray<TSettingsAccessPolicy> iSinglePolicies;
   1.129 +	RRangePolicyArray iRangePolicies;
   1.130 +	
   1.131 +	//meta data
   1.132 +	TUint32 iDefaultMeta ;
   1.133 +	RDefaultMetaArray iRangeMeta ;
   1.134 +	
   1.135 +	// Keep track of deleted keys so that deletions can be propagated across
   1.136 +	// a Backup/Restore cycle when backup data is merged with initialisation
   1.137 +	// file during restore process.
   1.138 +	RArray<TUint32> iDeletedSettings ;
   1.139 +	TTime iTimeStamp;
   1.140 +	};
   1.141 +
   1.142 +#include "heaprepos.inl"
   1.143 +
   1.144 +#endif /*HEAPREPOS_H_*/