authenticationservices/authenticationserver/source/server/evaluator.h
branchRCL_3
changeset 62 a71299154b21
parent 61 641f389e9157
child 63 94225563cd41
--- a/authenticationservices/authenticationserver/source/server/evaluator.h	Tue Aug 31 17:00:08 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +0,0 @@
-/*
-* Copyright (c) 2005-2009 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: 
-* Evaluator mix-in classes implementation
-*
-*/
-
-
-/**
- @file 
- @released
- @internalComponent 
-*/
- 
-#ifndef AUTHSERVER_EVALUATOR_H
-#define AUTHSERVER_EVALUATOR_H
-
-#include "authexpression_impl.h"
-
-namespace AuthServer {
-
-class MEvaluatorPluginInterface
-/**
-	CEvaluator uses this interface to invoke a plugin,
-	which can be specified by type or ID.
-	
-	@see CEvaluator
- */
-	{
-public:
-	/**
-		Invoke the specified plugin and record the identity
-		which was returned.
-		
-		@param	aPluginId		Plugin to use.
-		@param	aIdentityId		On successful completion this
-								object is set to the returned
-								identity.
-		@param	aType			The type of plugin represented 
-								by this instance.						
-		@param	aStatus			On completion (successful or
-								otherwise) this object is
-								completed with the error code.
-	 */
-	virtual void Evaluate(TPluginId aPluginId, TIdentityId& aIdentityId, 
-						  CAuthExpressionImpl::TType aType, TRequestStatus& aStatus) = 0;
-
-	/**
-	    Cancel the plugin currently being invoked.
-	 **/
-	virtual void CancelEvaluate() = 0;
-	
-	/**
-		Invoke a plugin of the requested type and record
-		the identity which was returned.
-		
-		@param	aPluginType		Type of plugin to use.  The
-								implementation maps this to a
-								single, specific plugin.
-		@param	aIdentityId		On successful completion this
-								object is set to the returned
-								identity.
-		@param	aType			The type of plugin represented 
-								by this instance.						
-		@param	aStatus			On completion (successful or
-								otherwise) this object is
-								completed with the error code.
-	 */
-	virtual void Evaluate(TAuthPluginType aPluginType, TIdentityId& aIdentityId, 
-						  CAuthExpressionImpl::TType aType, TRequestStatus& aStatus) = 0;
-	};
-
-class MEvaluatorClientInterface
-/**
-	CEvaluator uses this interface to notify the server
-	when an evaluation has finished, successfully or otherwise.
-	
-	The server implements this interface to notify
-	the client that the authentication request has
-	completed.
- */
-	{
-public:
-	/**
-		This function is called by the evaluator when it
-		has successfully parsed and evaluated an expression.
-		
-		In this context, successful means there were no
-		errors in running the plugins, or otherwise in
-		evaluating the expression, such as OOM.  It does
-		not mean that a specific user was identified -
-		aIdentity can still be CIdentity::KUnknown.
-		
-		@param	aIdentityId		Identified user.  This can
-								be CIdentity::KUnknown.
-		@see EvaluationFailed
-	 */
-	virtual void EvaluationSucceeded(TIdentityId aIdentityId) = 0;
-	/**
-		This function is called by the evaluator when
-		it has failed to evaluate an expression.  Reasons
-		for failure include failing to run a plugin;
-		the user cancelling a plugin; OOM; and others.
-		
-		Failure in this sense does not means the expression
-		was evaluated but no specific user was identified.
-		That case is handled by EvaluationSucceeded.
-		
-		@param	aReason		Symbian OS error code.
-		
-		@see EvaluationSucceeded
-	 */
-	virtual void EvaluationFailed(TInt aReason) = 0;
-	};
-
-class CEvaluator : public CActive
-/**
-	Expression evaluator.  This asynchronously
-	evaluates the supplied expression by calling
-	the referenced plugins.
- */
-	{
-public:
-	static CEvaluator* NewL(MEvaluatorPluginInterface* aPluginInterface, MEvaluatorClientInterface* aClientInterface);
-	virtual ~CEvaluator();
-
-	void Evaluate(const CAuthExpressionImpl* aExpr);
-	
-private:
-	CEvaluator(MEvaluatorPluginInterface* aPluginInterface, MEvaluatorClientInterface* aClientInterface);
-	void ConstructL();
-	
-	void EvaluatedNode(TIdentityId aIdentity);
-	void EvaluateCompound(const CAuthExpressionImpl* aParent);
-	void ReplaceComplexIdentity(TIdentityId aIdentity);
-	
-	// complete client request
-	void NotifyClientSucceeded(TIdentityId aIdentity);
-	void NotifyClientFailed(TInt aReason);
-	
-	// manipulate RPN stack
-	TBool PushIdentity(TIdentityId aIdentity);
-	TIdentityId PopIdentity();
-	TIdentityId& LastIdentity();
-	void ResetRpnStack();
-	// implement CActive
-	virtual void RunL();
-	virtual void DoCancel();
-	
-#ifdef _DEBUG
-	enum TPanic
-		{
-		EENRpnStackNonZero = 0x10,
-		EECRpnStackTooLow = 0x20, EECBadParentType, EECRpnStackNotOneAtRoot, EECBadRightParent,
-		EBusy = 0x30,
-		};
-	static void Panic(TPanic aPanic);
-	TInt RpnDepth() const;
-#endif
-	
-private:
-	/** The evaluator uses this to invoke plugins. */
-	MEvaluatorPluginInterface*const iPluginInterface;
-	/**
-		The evaluator uses this to notify the server
-		when an evaluation has completed, successfully
-		or otherwise.
-	 */
-	MEvaluatorClientInterface*const iClientInterface;
-	
-	/** Constant value defined for short name readability only. */
-	static const CAuthExpressionImpl::TType KAnd;
-	/** Constant value defined for short name readability only. */
-	static const CAuthExpressionImpl::TType KOr;
-
-	/** The expression which is currently being evaluated. */
-	const CAuthExpressionImpl* iCurrentNode;
-	
-	/** The plugin sets this value to the returned identity. */
-	TIdentityId iIdentity;
-	
-	/**
-		Granularity of RPN stack.  This value should be large
-		to parse a reasonable expression without having to
-		reallocate, and without wasting too much memory.
-	 */
-	static const TInt KRPNGranularity;
-	/**
-		Intermediate results.  (A CArrayFixFlat is used here
-		instead of an RArray because, although it uses more
-		memory, it can be resized when items are popped.)
-	 */
-	CArrayFixFlat<TIdentityId>* iRpnStack;
-	};
-
-}	// namespace AuthServer
-
-#endif	// #ifndef AUTHSERVER_EVALUATOR_H
-
-