persistentstorage/centralrepository/common/inc/heaprepos.h
changeset 0 08ec8eefde2f
child 55 44f437012c90
equal deleted inserted replaced
-1:000000000000 0:08ec8eefde2f
       
     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_*/