diff -r 000000000000 -r 4e1aa6a622a0 hwrmhaptics/hapticspluginmanager/inc/hwrmhapticspolicy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hwrmhaptics/hapticspluginmanager/inc/hwrmhapticspolicy.h Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,263 @@ +/* +* Copyright (c) 2008 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: Haptics policy header file. +* This class is designed to parse the associated text file +* and determine the HWRMHaptics clients priorities for +* reservation of resources. +* +*/ + + +#ifndef C_HWRMHAPTICSPOLICY_H +#define C_HWRMHAPTICSPOLICY_H + +#include + +class RFs; + +/** + * This class is intended to parse the associated priority text file and + * provide an API to return the clients priority. + * + * @since S60 5.1 + */ +class CHWRMHapticsPolicy : public CBase + { +public: + + /** + * Two-phased constructor. + * + * @param aFilename Filename of policy file, which should not + * include the path as the file is stored in + * the private directory. + */ + static CHWRMHapticsPolicy* NewL( const TDesC& aFilename ); + + /** + * Two-phased constructor. + * Leaves instance on the cleanup stack. + * + * @param aFilename Filename of policy file, which should not + * include the path as the file is stored in + * the private directory. + */ + static CHWRMHapticsPolicy* NewLC( const TDesC& aFilename ); + + /** + * Destructor. + */ + virtual ~CHWRMHapticsPolicy(); + +public: + + /** + * Method to retrieve the priority of a client with the given ID. + * This ID can be the UID or SID defined in the policy file. + * + * @param aSid Secure id of the client. + * @param aTrusted Returns ETrue if client is trusted, i.e. + * it is specified in policy file. + * @param Priority of client. If client does not exist, + * default priority is returned. + */ + void GetPriority( const TSecureId aSid, TBool& aTrusted, TInt& aPriority ) const; + +private: + + /** + * C++ constructor. + */ + CHWRMHapticsPolicy(); + + /** + * By default Symbian 2nd phase constructor is private. + * + * @param aFilename Filename of policy file, which should not + * include the path as the file is stored in + * the private directory. + */ + void ConstructL( const TDesC& aFilename ); + + /** + * Method constructs the array of policy clients from the + * given stream (usually an RFileReadStream) + * + * @param aFs File server session + * @param aFilename Filename to read + */ + void ParsePriorityFileL( RFs& aFs, const TDesC& aFilename ); + + /** + * Helper method to convert and validate SID from a descriptor. + * + * @param aSidDes The Sid to be converted + * @param aSid Reference that will contain the SID + * @return KErrNone if successful, KErrCorrupt if invalid + */ + TInt ConvertId( const TDesC8& aSidDes, TSecureId& aSid ) const; + + /** + * Adds a policy client to the array, first checks that no other + * client has been registered with the identical id. If one already + * exists KErrAlreadyExists is returned. + * + * @param aPriority Clients priority + * @param aSid Clients SID or KAllPolicySid + * @param aFeedbackClient Indication whether feedback client + * @param aAppName Clients application name + * @return KErrNone if successful + * KErrAlreadyExists if client id already exists + */ + TInt AddPolicyClientL( const TInt aPriority, const TSecureId& aSid, + const TBool aFeedbackClient, + const TDesC8& aAppName ); + + /** + * Searches for client with the given id. + * + * @param aSid Clients SID or KAllPolicySid. + * @return Client position in iClientArray, + * KErrNotFound if client does not exist. + */ + TInt FindClient( const TSecureId& aSid ) const; + +private: + + /** + * Embedded class to contain policy client data intended + * to be read from the policy file. + * + * @since S60 5.1 + */ + class CPolicyClient : public CBase + { + public: + + /** + * Two-phased constructor. + * + * @param aPriority Clients priority + * @param aSid Clients SID or KAllPolicySid + * @param aFeedbackClient Indication whether feedback client + * @param aAppName Clients application name + */ + static CPolicyClient* NewL( const TInt aPriority, + const TSecureId& aSid, + const TBool aFeedbackClient, + const TDesC8& aAppName ); + + /** + * Two-phased constructor. + * Leaves instance on the cleanup stack. + * + * @param aPriority Clients priorty + * @param aSid Clients SID or KAllPolicySid + * @param aFeedbackClient Indication whether feedback client + * @param aAppName Clients application name + */ + static CPolicyClient* NewLC( const TInt aPriority, + const TSecureId& aSid, + const TBool aFeedbackClient, + const TDesC8& aAppName ); + + /** + * Destructor. + */ + virtual ~CPolicyClient(); + + public: + + /** + * Method to return the clients priority. + * + * @return Priority of client + */ + TInt Priority() const; + + /** + * Returns the client's SID. + * + * @return SID of client + */ + TSecureId Sid() const; + + /** + * Returns indication whether feedback client. + * + * @return ETrue if feedback client, otherwise EFalse. + */ + TBool FeedbackClient() const; + + /** + * Returns the client application name. + * + * @return Application name of the client. + */ + const TDesC& AppName() const; + + private: + + /** + * C++ constructor. + * + * @param aPriority Clients priority + * @param aSid Clients SID or KAllPolicySid + * @param aFeedbackClient Indication whether feedback client. + */ + CPolicyClient( const TInt aPriority, + const TSecureId& aSid, + const TBool aFeedbackClient ); + + /** + * By default Symbian 2nd phase constructor is private. + * + * @param aAppName Clients application name + */ + void ConstructL( const TDesC8& aAppName ); + + private: // Data + + /** + * Priority of client + */ + TInt iPriority; + + /** + * SID of client + */ + TSecureId iSid; + + /** + * Whether or not the client is tactile feedback clien. + */ + TBool iFeedbackClient; + + /** + * Client's application name. Owned. + */ + HBufC* iAppName; + }; + +private: + + /** + * Array of objects representing each client from the policy file. + */ + RPointerArray iClientArray; + }; + +#endif // C_HWRMHAPTICSPOLICY_H + +// End of File