diff -r 0e6c5a9328b5 -r deec7e509f66 authenticationservices/authenticationserver/source/server/evaluator.h --- a/authenticationservices/authenticationserver/source/server/evaluator.h Thu Aug 19 11:18:56 2010 +0530 +++ /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* iRpnStack; - }; - -} // namespace AuthServer - -#endif // #ifndef AUTHSERVER_EVALUATOR_H - -