policymanagement/policyengine/policyengineserver/inc/SettingEnforcementManager.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:27:42 +0100
branchRCL_3
changeset 26 19bba8228ff0
parent 0 b497e44ab2fc
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2000 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: Implementation of policymanagement components
*
*/


#ifndef _SETTING_ENFORCEMENT_MANAGER_HEADER__
#define _SETTING_ENFORCEMENT_MANAGER_HEADER__

// INCLUDES

#include "CentRepToolClient.h"

#include <e32base.h>
#include <ssl.h>

// CONSTANTS
//DM client UID
const TUid KDMClientUiD = { 0x101f9a02 };


// DATA TYPES
typedef RPointerArray<HBufC8> RAccessControlList;


// FORWARD DECLARATIONS
class CElementBase;
class CPolicyStorage;
class CEnforcementBase;

class CSettingEnforcementManager : public CActive
{
	public:
		//constructors
		CSettingEnforcementManager();
		~CSettingEnforcementManager();
		static CSettingEnforcementManager* NewL();
		
		//enforcement management

	    /**
		* Start setting enforcement session 
        */		
		void StartEnforcementSessionL( TRequestStatus& aRequestStatus, const TCertInfo& aCertInfo);
		
	    /**
		* Check if changed element is a element, which affect to setting enforcements 
		* aElement Pointer to modified element. Function doesn't reserve element, only get element name.
        */		

		void AddModifiedElementL( const CElementBase* aElement);

	    /**
		* Execute setting enforcement for all elements added to session
        */		
		void ExecuteEnforcementSessionL();

	    /**
		* Commit changes
        */		
		void CommitChanges();

	    /**
		* Finish execution session
        */		
		void EndEnforcementSession( TBool aFlushSettings);
		
	protected:
		//Derived from CActive
		void RunL();
		TInt RunError( TInt aError);
		void DoCancel();
		
		//certificate
		TCertInfo& SessionCertificate();
	private:
		void ResolveValidEditorsForSettingL( TUint32 iElementId);
		void SetActiveEnforcementBaseL( const TDesC8& aEnforcementId);
	private:
		RPointerArray<HBufC8> iEnforcementElements;
		RAccessControlList iValidEditorsForSetting;
		CEnforcementBase* iActiveEnforcementBase;
		
		//certificate info
		TCertInfo iCertInfo;
		
		//active state variables
		HBufC8 * iActivelementName;
		TInt iOperationCounter;
		TInt iOperationState;
		TRequestStatus* iExternalRequestStatus;
};

class CEnforcementBase : public CBase
{
	public:
		virtual ~CEnforcementBase() {}
	
		virtual void InitEnforcementL( TRequestStatus& aRequestStatus) = 0;
		virtual void DoEnforcementL( TRequestStatus& aRequestStatus) = 0;
		virtual TBool InitReady() = 0;
		virtual TBool EnforcementReady() = 0;
		virtual void FinishEnforcementL( TBool aFlushSettings) = 0;
		virtual void ResetEnforcementL() = 0;
				
		virtual void AccessRightList( RAccessControlList& aAccessControlList) = 0;		
		
		void SetSessionCertificate( TCertInfo& aCertInfo);
	protected:
		TCertInfo& SessionCertificate();	
	
	private:
		TCertInfo* iCertInfo;
};


#endif