os/persistentdata/persistentstorage/centralrepository/common/inc/heaprepos.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 //
    15 
    16 #ifndef HEAPREPOS_H_
    17 #define HEAPREPOS_H_
    18 
    19 #include <e32base.h>
    20 #include "setting.h"
    21 #include "datatype.h"
    22 #include "cregen.h"
    23 #include "inifile.h"
    24 
    25 /**
    26 @internalTechnology
    27 */
    28 class CHeapRepository : public CBase
    29 	{
    30 	friend class CCreGenerator;
    31 	friend class TConvToolTester;
    32 	
    33 public:	
    34 	static CHeapRepository* NewL(TUid aUid);
    35 	~CHeapRepository();
    36 	void ResetContent();	
    37 
    38 	//-------------general get/set function-------------------------------------
    39 	TBool IsEmpty();
    40 	inline TUid Uid() const {return iUid;};
    41 	inline void SetUid(TUid aUid){iUid=aUid;};
    42 	inline TUid Owner() {return iOwner ;} ;
    43 	inline void SetOwner(TUid aOwner){iOwner=aOwner;};
    44 	
    45 	inline RSettingsArray& SettingsArray();
    46 	inline RArray<TUint32>& DeletedSettingsArray();
    47 	inline RPointerArray<TSettingsAccessPolicy>& SinglePolicyArray();
    48 	inline RRangePolicyArray& RangePolicyArray();
    49 	inline RDefaultMetaArray& RangeMetaArray();
    50 	inline TUint32 DefaultMeta() {return iDefaultMeta;};
    51 	inline void SetDefaultMeta(TUint32 aMeta){iDefaultMeta=aMeta;};
    52 	
    53 	inline TTime TimeStamp() const {return iTimeStamp;};
    54 	inline void SetTimeStamp(const TTime& aTime){iTimeStamp=aTime;};
    55 	
    56 
    57 	//-------------security retrieval function-----------------------------
    58 	static TBool SinglePolicyMatchOnKey(const TSettingsAccessPolicy& aSinglePolicy, const TSettingsAccessPolicy& aSinglePolicyIndexItem);
    59 	static TInt CompareKeyIds(const TSettingsAccessPolicy& aSinglePolicy, const TSettingsAccessPolicy& aSinglePolicyIndexItem);	
    60 	TSettingsAccessPolicy* GetFallbackAccessPolicy(TUint32 aId
    61 #ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS	
    62 	,TBool aSkipSingle=EFalse
    63 #endif	
    64 	);
    65 	const TSecurityPolicy& GetFallbackReadAccessPolicy(TUint32 aId);
    66 	inline const TSecurityPolicy& GetReadAccessPolicy(const TServerSetting& aSetting);
    67 	inline const TSecurityPolicy& GetReadAccessPolicy(TUint32 aId);
    68 	inline const TSecurityPolicy& GetDefaultReadAccessPolicy();
    69 	const TSecurityPolicy& GetFallbackWriteAccessPolicy(TUint32 aId);
    70 	inline const TSecurityPolicy& GetWriteAccessPolicy(const TServerSetting& aSetting);
    71 	inline const TSecurityPolicy& GetWriteAccessPolicy(TUint32 aId);
    72 	inline const TSecurityPolicy& GetDefaultWriteAccessPolicy();
    73 	inline void SetDefaultPolicy(const TSettingsAccessPolicy& aDefaultPolicy)
    74 		{
    75 		iDefaultPolicy.iReadAccessPolicy=aDefaultPolicy.iReadAccessPolicy;
    76 		iDefaultPolicy.iWriteAccessPolicy=aDefaultPolicy.iWriteAccessPolicy;		
    77 		}
    78 	inline TSettingsAccessPolicy& GetDefaultAccessPolicy()
    79 		{	
    80 		return iDefaultPolicy;
    81 		}
    82 
    83 	//-------------file i/o cre read/write and ini read write---------------
    84 	void ExternalizeCre(TUint8 aPersistVersion,RWriteStream& aStream) const;
    85 	void InternalizeCreL(RReadStream& aStream) ;
    86 	TInt CommitChanges(RFs& aFs,TUint8 aPersistVersion,const TDesC& aTargetFilePath);
    87 	void CreateRepositoryFromCreFileL(RFs& aFs,const TDesC& aFilePath);
    88 #ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS	
    89 	void CreateRepositoryFromCreFileL(RFs& aFs,const TDesC& aFilePath,TUint8& aCreVersion);	
    90 	void InternalizeCreL(RReadStream& aStream,TUint8& aCreVersion)
    91 		{
    92 		CCreGenerator::InternalizeCreL(*this, aStream,aCreVersion);
    93 		}
    94 #endif			
    95 	void ReloadContentL(CIniFileIn& aIniFile);
    96 	TInt ReloadContentExceptSettingsL(CIniFileIn& aIniFile);
    97 
    98 	void SetMetaDataOnRead(TServerSetting& aSetting, TBool aSingleMetaFound);
    99 	static void SinglePoliciesCleanup(TAny *aPtr);	 
   100 
   101 	TInt ReadSettingSavePolicyL(CIniFileIn& aFile,TServerSetting& aSetting, TSettingsAccessPolicy* &aPolicy, TBool& aSingleMetaFound);	
   102 	TInt Create(TServerSetting& s, TSettingsAccessPolicy* &aPolicy, TBool aSingleMetaFound=EFalse);
   103 
   104 	//only used for the conv tool so configured out here using macro	
   105 #ifdef CENTREP_CONV_TOOL	
   106 	void DoCommitChangesToIniFileL(RFs& aFs,const TDesC& aOutFileName
   107 #ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS
   108 	,TUint32 aCreVersion
   109 #endif	
   110 	);
   111 #endif
   112 	
   113 private:
   114 	void DoCommitChangesL(RFs& aFs,TUint8 aPersistVersion,const TDesC& aFilePath);
   115 	CHeapRepository(TUid aUid);
   116 		
   117 private:
   118 	enum {KGranularity=8};
   119 	RSettingsArray iSettings;
   120 	TUid iUid;
   121 	TUid iOwner;
   122 		
   123 	//security policy
   124 	TSettingsAccessPolicy iDefaultPolicy;	
   125 	RPointerArray<TSettingsAccessPolicy> iSinglePolicies;
   126 	RRangePolicyArray iRangePolicies;
   127 	
   128 	//meta data
   129 	TUint32 iDefaultMeta ;
   130 	RDefaultMetaArray iRangeMeta ;
   131 	
   132 	// Keep track of deleted keys so that deletions can be propagated across
   133 	// a Backup/Restore cycle when backup data is merged with initialisation
   134 	// file during restore process.
   135 	RArray<TUint32> iDeletedSettings ;
   136 	TTime iTimeStamp;
   137 	};
   138 
   139 #include "heaprepos.inl"
   140 
   141 #endif /*HEAPREPOS_H_*/