--- /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;
+ }