persistentstorage/centralrepository/cenrepsrv/shrepos.inl
changeset 0 08ec8eefde2f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/persistentstorage/centralrepository/cenrepsrv/shrepos.inl	Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,163 @@
+// Copyright (c) 2004-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:
+//
+
+inline const TSecurityPolicy& CSharedRepository::GetReadAccessPolicy(const TServerSetting& aSetting)
+	{
+	return iSimRep->GetReadAccessPolicy(aSetting);
+	}
+
+inline const TSecurityPolicy& CSharedRepository::GetReadAccessPolicy(TUint32 aId)
+	{
+	return iSimRep->GetReadAccessPolicy(aId);
+	}
+
+inline const TSecurityPolicy& CSharedRepository::GetDefaultReadAccessPolicy()
+	{
+	return iSimRep->GetDefaultReadAccessPolicy();
+	}
+
+inline const TSecurityPolicy& CSharedRepository::GetWriteAccessPolicy(const TServerSetting& aSetting)
+	{
+	return iSimRep->GetWriteAccessPolicy(aSetting);
+	}
+
+inline const TSecurityPolicy& CSharedRepository::GetWriteAccessPolicy(TUint32 aId)
+	{
+	return iSimRep->GetWriteAccessPolicy(aId);
+	}
+	
+inline const TSecurityPolicy& CSharedRepository::GetDefaultWriteAccessPolicy()
+	{
+	return iSimRep->GetDefaultWriteAccessPolicy();
+	}
+
+inline void CSharedRepository::WriteBackupStream(RWriteStream& aStream) const
+	{
+	iSimRep->SettingsArray().WriteBackupStream(aStream) ;
+	aStream << iSimRep->Uid() ;
+	aStream << iSimRep->Owner() ;
+	aStream << iSimRep->TimeStamp().Int64() ;
+		
+	aStream << iSimRep->RangePolicyArray() ;
+	aStream << iSimRep->GetDefaultReadAccessPolicy().Package() ;
+	aStream << iSimRep->GetDefaultWriteAccessPolicy().Package() ;
+	
+	aStream << iSimRep->DefaultMeta() ;
+	aStream << iSimRep->RangeMetaArray();
+
+	// placeholders for 3 booleans that should never have been externalised
+	TInt8 dummyBoolValue = 0;
+	aStream << dummyBoolValue;
+	aStream << dummyBoolValue;
+	aStream << dummyBoolValue;	
+	}
+	
+inline void CSharedRepository::WriteDeletedSettingsStream(RWriteStream& aStream) const
+	{
+	TCardinality numDeletedSettings = iSimRep->DeletedSettingsArray().Count() ;
+	aStream << numDeletedSettings ;
+	for (TInt i = 0; i < numDeletedSettings; i++)
+		{
+		aStream << iSimRep->DeletedSettingsArray()[i] ;	
+		}	
+	}	
+
+inline void CSharedRepository::InternalizeL(RReadStream& aStream, CRestoredRepository& aRstRepos)
+	{
+ 	RSettingsArray mergeArray;
+
+ 
+ 	aStream >> mergeArray ;
+ 	// Many keys-value pairs were restored from the backup file to mergeArray. But most of 
+ 	// the pairs are the same as what are currently in the repository. To prevent too many 
+ 	// notifications with no changed values, we only merge the keys whose values are going
+ 	// to be changed by passing EFalse to parameter aKeyOnly. Thus, mergeArray will only 
+ 	// contains the really changed keys after merging.
+ 	
+	// For CommsDat repository(KCommsDatUid) and test repository(KTestUid) ,replace all the
+	// current settings with the settings from the backup file
+ 	
+#ifdef _DEBUG
+	if((iSimRep->Uid() == KCommsDatUid) || (iSimRep->Uid() == KTestUid))
+#else
+	if (iSimRep->Uid() == KCommsDatUid)
+#endif					
+		{
+		User::LeaveIfError(iSimRep->SettingsArray().ReplaceMerge(mergeArray, iSimRep->DeletedSettingsArray()));
+		}
+	else
+		{        
+		User::LeaveIfError(iSimRep->SettingsArray().MergeArray(mergeArray, iSimRep->DeletedSettingsArray(), ERestoreMerge));
+		}
+
+ 	TInt numChanges = mergeArray.Count();
+	for (TInt i = 0; i < numChanges; i++)
+		{
+		aRstRepos.AddKeyL(mergeArray[i].Key());
+		}
+	TUid repUid;
+ 	aStream >> repUid ;
+ 	iSimRep->SetUid(repUid);
+ 	TUid repOwner;
+	aStream >> repOwner ;
+	iSimRep->SetOwner(repOwner);
+	
+	TInt64 timeStampInt ;
+	aStream >> timeStampInt ;
+	iSimRep->SetTimeStamp(timeStampInt);
+
+	TInt32 numElements = iSimRep->SettingsArray().Count();
+	for (TInt32 count = 0; count < numElements; count++)
+		{
+		iSimRep->SettingsArray()[count].SetAccessPolicy(GetFallbackAccessPolicy(count));
+		}
+	iSimRep->RangePolicyArray().Reset();		
+	iSimRep->RangePolicyArray().InternalizeL(aStream);
+	
+	HBufC8* securityPolicyPackage ;
+	securityPolicyPackage = HBufC8::NewLC(aStream, 10000) ;
+	TSecurityPolicy defaultReadPolicy;
+	defaultReadPolicy.Set(securityPolicyPackage->Des()) ;
+	CleanupStack::PopAndDestroy(securityPolicyPackage) ;
+	securityPolicyPackage = HBufC8::NewLC(aStream, 10000) ;
+	TSecurityPolicy defaultWritePolicy;
+	defaultWritePolicy.Set(securityPolicyPackage->Des()) ;
+	CleanupStack::PopAndDestroy(securityPolicyPackage) ;
+	
+	iSimRep->SetDefaultPolicy(TSettingsAccessPolicy(defaultReadPolicy,defaultWritePolicy, KUnspecifiedKey));
+	
+	TUint32 defaultMeta;
+	aStream >> defaultMeta ;
+	iSimRep->SetDefaultMeta(defaultMeta);
+	
+	iSimRep->RangeMetaArray().Reset();
+	iSimRep->RangeMetaArray().InternalizeL(aStream);
+
+	// placeholders for 3 booleans that should never have been externalised
+	TInt8 dummyBoolValue;
+	aStream >> dummyBoolValue;
+	aStream >> dummyBoolValue;
+	aStream >> dummyBoolValue;
+	}
+
+inline void CSharedRepository::SetSize(TInt aSize) 
+	{ 
+	iSize=aSize;
+	}
+
+inline TInt CSharedRepository::Size() const 
+	{ 
+	return iSize;
+	}