diff -r 000000000000 -r 99ef825efeca rtsecuritymanager/rtsecuritymanagerserver/src/rtsecmgrpolicy.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rtsecuritymanager/rtsecuritymanagerserver/src/rtsecmgrpolicy.cpp Mon Mar 30 12:51:20 2009 +0300 @@ -0,0 +1,117 @@ +/* +* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Defines security policy data structure + * +*/ + + + + + + +#include +#include "rtsecmgrpolicy.h" +#include "rtsecmgrserverdef.h" + +CPolicy::CPolicy(TPolicyID aPolicyID) : + iPolicyID(aPolicyID) + { + } + +void CPolicy::ConstructL(const RProtectionDomains& aProtectionDomains, RAliasGroup& aAliasGroup) + { + iAccessPolicy.Reset(); + iAliasGroup.Reset(); + iAccessPolicy = aProtectionDomains; + iAliasGroup = aAliasGroup; + } + +CPolicy* CPolicy::NewL(TPolicyID aPolicyID, + const RProtectionDomains& aProtectionDomains, RAliasGroup& aAliasGroup) + { + CPolicy* self = CPolicy::NewLC (aPolicyID, aProtectionDomains, aAliasGroup); + CleanupStack::Pop (self); + return self; + } + +CPolicy* CPolicy::NewLC(TPolicyID aPolicyID, + const RProtectionDomains& aProtectionDomains, RAliasGroup& aAliasGroup) + { + CPolicy* self = new (ELeave) CPolicy(aPolicyID); + CleanupStack::PushL (self); + self->ConstructL (aProtectionDomains, aAliasGroup); + return self; + } + +CPolicy* CPolicy::NewL(TPolicyID aPolicyID, RStoreReadStream& aSource) + { + CPolicy* self = CPolicy::NewLC (aPolicyID, aSource); + CleanupStack::Pop (self); + return self; + } + +CPolicy* CPolicy::NewLC(TPolicyID aPolicyID, RStoreReadStream& aSource) + { + CPolicy* self = new (ELeave) CPolicy(aPolicyID); + CleanupStack::PushL (self); + self->InternalizeL (aSource); + return self; + } + +void CPolicy::InternalizeL(RStoreReadStream& aSource) + { + //Read version of the policy + TReal version(aSource.ReadReal32L()); + TInt aliasCnt(aSource.ReadInt32L()); + + for (TInt i(0); iInternalizeL(aSource); + iAliasGroup.Append (alias); + } + + TInt domainCnt(aSource.ReadInt32L ()); + for (TInt i(0); iDomainName().CompareF (aDomainName)) + { + return iAccessPolicy[idx]; + } + } + + return NULL; + } + +CPermission* CPolicy::AliasGroup(const TDesC& aAliasName) const + { + for (TInt idx(0); idxPermName().CompareF (aAliasName)) + { + return iAliasGroup[idx]; + } + } + + return NULL; + }