policymanagement/policyengine/policyengineserver/inc/PolicyManager.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 _POLICY_MANAGER_HEADER__
#define _POLICY_MANAGER_HEADER__

// INCLUDES

#include "PolicyEngineServer.h"
#include "PolicyStorage.h"
#include "PolicyEngineClientServer.h"
#include "OperationParser.h"
#include <e32base.h>

// CONSTANTS
// MACROS
// DATA TYPES
// FUNCTION PROTOTYPES
// FORWARD DECLARATIONS

class CElementBase;
class CTrustedSession;
class CPolicyProcessor;
class CSettingEnforcementManager;

// CLASS DECLARATION

class CPolicyManager : public CActive
{
	public:
	
		static CPolicyManager * NewL( CPolicyProcessor * aPolicyProcessor);
		void ConstructL();
		CPolicyManager( CPolicyProcessor * aPolicyProcessor);
		~CPolicyManager();
	
		void ExecuteOperation( CTrustedSession * aSession, const RMessage2& aMessage);

		void NewElementL( const TInt& aLineOffset, const TDesC8& aTargetElement, const TDesC8& aElementDescription, const TBool& aUseBearerCertificate);
		void ReplaceElementL( const TInt& aLineOffset, const TDesC8& aTargetElement, const TDesC8& aElementDescription );
		void RemoveElementL( const TDesC8& aTargetElement);

		void GetElementListL( const RMessage2& aMessage);
		void GetElementInfoL( const RMessage2& aMessage);
		void GetElementXACMLDescriptionL( const RMessage2& aMessage);
		void IsServerIdValidL( const RMessage2& aMessage);
		void GetCertificateRoleL( const RMessage2& aMessage);
	protected:	
		// Derived from CActiveObject
		void RunL();
		void DoCancel();
		TInt RunError( TInt aError);		
	private:
		void CommitChangesL();
	
		void ReAssignElementL( const TDesC8& aTargetElement, CElementBase * aElement);
		void AssignElementL( const TDesC8& aTargetElement, CElementBase * aElement);
		void IsAssigmentAcceptableL( CElementBase * aParentElement, CElementBase * aElement, TBool aNewElement);

		void IsRemoveAcceptableL( CElementBase * aParentElement, CElementBase * aElement);
	
		void MakeEnforcementL(TInt aError);
		void CompleteOperation( TInt aError);
		
		void UpdateStateFlagsL();
		void AddSilentDMOperationServerIdL();
		TBool IsCurrentServerIdTrustedL();
		
	private:
		CPolicyProcessor* iPolicyProcessor;
		CTrustedSession* iTrustedSession;
		CSettingEnforcementManager* iSEManager;

		//for management operations which need two calls from client side
		HBufC8 * iActiveXACMLContent;
		HBufC8 * iActiveDescription;
		HBufC8 * iActiveChildList;
		HBufC8 * iActiveElementList;
		
		//management handling
		TBuf8<KMaxReturnMessageLength> iMsg;
		TBool iUseBearerCertificate;
		TBool iCertificateUpdates;
		CPolicyStorage* iPolicyStorage;
		
		//active object related
		const RMessage2 * iMessage;
		TInt iOperationStatus;
		HBufC8* iCurrentManagementCommand;
		COperationParser* iOperationParser;
};


#endif