diff -r 13d7c31c74e0 -r b183ec05bd8c devicediagnosticsfw/diagframework/inc/diagpluginloaderdependencyparser.h --- a/devicediagnosticsfw/diagframework/inc/diagpluginloaderdependencyparser.h Thu Aug 19 10:44:50 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,341 +0,0 @@ -/* -* Copyright (c) 2007 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: XML Parser for opaque data field of Plug-ins. This field -* contains information about depdendencies and ordering. -* -*/ - - -#ifndef DIAGPLUGINLOADERDEPENDENCYPARSER_H -#define DIAGPLUGINLOADERDEPENDENCYPARSER_H - -// INCLUDES -#include -#include - -// FORWARD DECLARATION -class CDesC16ArrayFlat; - -namespace Xml - { - class CParser; - class RAttribute; - } - -namespace DiagPluginPool - { -/** -* Plugin Loader Depdenency Parser -* Parse dependency information and other data out of plug-ins via the -* opaque_data field. -* -* @since S60 v5.0 -*/ -NONSHARABLE_CLASS( CDependencyParser ) : public CBase, - public Xml::MContentHandler - { -public: - - /** - * Two-phased constructor. - * - * @return New instance of CDependencyParser - */ - static CDependencyParser* NewL(); - - /** - * Two-phased constructor. - * - * @return New instance of CDependencyParser and pop onto cleanup stack - */ - static CDependencyParser* NewLC(); - - /** - * Destructor. - */ - virtual ~CDependencyParser(); - - /** - * Parse out Plug-in Information from XML. - * - * @param aOpaqueData Contains text with opaque data for Dependencies/Order Number - * @param aDefaultData Contains text with default data for Parent UID - * Leave Codes: KErrNone Valid data was parsed - * KErrNotFound No valid fields found - * KErrArgument Text is NULL or empty - * KErrCorrupt XML was determined to be corrupt - * - */ - void ParseL( const TDesC8& aOpaqueData, const TDesC8& aDefaultData ); - - /** - * Return parsed order number - * - * @return orrder number - */ - TInt GetOrderNumber() const; - - /** - * Return parsed parent UID - * - * @return parent UID - */ - const TUid& GetParentUid() const; - - /** - * Return parsed service provided. Ownership is transferred to the caller - * - * @return service provided - */ - HBufC* GetServiceProvided(); - - /** - * Return parsed services required. Caller assumes ownership. - * - * @return services required - */ - CDesC16ArrayFlat* GetServicesRequired(); - -private: // from Base Class Xml::MContentHandler - /** - * Callback from XML Parser that indicates a Plugin element is starting - * - * @param aElement handle to element's details - * @param aAttributes contains attributes for element - * @param aErrorCode indicates error, if any - */ - virtual void OnStartElementL( const Xml::RTagInfo& aElement, - const Xml::RAttributeArray& aAttributes, - TInt aErrorCode ); - - /** - * Callback from XML Parser that indicates the end of a plug-in element - * - * @param aElement handle to element's details - * @param aErrorCode indicates error, if any - */ - virtual void OnEndElementL( const Xml::RTagInfo& aElement, TInt aErrorCode ); - - /** - * Callback from XML Parser that indicates content in an XML element - * - * @param aBytes simple stream of data indicating the content - * @param aErrorCode indicates error, if any - */ - virtual void OnContentL( const TDesC8& aBytes, TInt aErrorCode ); - - /** - * Callback from XML Parser that indicates a parsing error - * - * @param aErrorCode indicates error, if any - * Note: The XmlFramework has been allocated error codes in the range: -17550 to -17599 - */ - virtual void OnError( TInt aErrorCode ); - - // Unused virtual member functions - - /** - * @see Xml::MContentHandler::OnStartDocumentL - */ - virtual void OnStartDocumentL( const Xml::RDocumentParameters& aDocParam, TInt aErrorCode ); - - /** - * @see Xml::MContentHandler::OnEndDocumentL - */ - virtual void OnEndDocumentL( TInt aErrorCode ); - - /** - * @see Xml::MContentHandler::OnEndDocumentL - */ - virtual void OnStartPrefixMappingL( const RString& aPrefix, - const RString& aUri, - TInt aErrorCode ); - /** - * @see Xml::MContentHandler::OnEndDocumentL - */ - virtual void OnEndPrefixMappingL( const RString& aPrefix, TInt aErrorCode ); - - /** - * @see Xml::MContentHandler::OnEndDocumentL - */ - virtual void OnIgnorableWhiteSpaceL( const TDesC8& aBytes, TInt aErrorCode ); - - /** - * @see Xml::MContentHandler::OnEndDocumentL - */ - virtual void OnSkippedEntityL( const RString& aName, TInt aErrorCode ); - - /** - * @see Xml::MContentHandler::OnEndDocumentL - */ - virtual void OnProcessingInstructionL( const TDesC8& aTarget, - const TDesC8& aData, - TInt aErrorCode ); - /** - * @see Xml::MContentHandler::OnEndDocumentL - */ - virtual void OnExtensionL( const RString& aData, TInt aToken, TInt aErrorCode ); - - /** - * @see Xml::MContentHandler::OnEndDocumentL - */ - virtual TAny* GetExtendedInterface( const TInt32 aUid ); - -private: // private utility functions - - /** - * Simple utility function to allocate and pop onto the stack a 16 bit buffer descriptor - * from an 8 bit descriptor. - * - * @param aDes 8 bit descriptor to be converted to 16 bits - * @return Newly allocated 16-bit buffer containing converted contents of aDes - */ - HBufC* Convert8BitTo16BitBufferLC( const TDesC8& aDes ) const; - - /** - * Parse a numeric attribute from XML text with specific notation for diagnostics framework - * plug-ins. - * - * @param aAttribute XML attribute - * @param aNumericAttribute Parsed out integer - * @return Indicates whether or not attribute was parsed correctly - */ - TBool ParseNumericAttribute( const Xml::RAttribute& aAttribute, TInt& aNumericAttribute ); - - /** - * Parse a string attribute from XML text with specific notation for diagnostics framework - * plug-ins. - * - * @param aAttribute XML attribute - * @param aStringAttribute Parsed out string - * @return Indicates whether or not attribute was parsed correctly - */ - TBool ParseStringAttributeL( const Xml::RAttribute& aAttribute, HBufC*& aStringAttribute ); - - /** - * Parse a hex UID from given descriptor - * - * @param aSource String containing UID - * @param aTarget Parsed out UID - * @return Error Code - */ - TInt ParseToUid( const TDesC8& aSource, TUid& aTarget ); - - /** - * Parse a hex UID from given descriptor - * - * @param aAttributes List of attributes to parse - * @param aFoundTag Reference to some class variable that indicates if a given tag has been found. - * @return ETrue==XML OK/EFalse==XML not validated - */ - TBool ValidateXmlTag( const Xml::RAttributeArray& aAttributes, TBool& aFoundTag ); - - /** - * Reset all data - * - */ - void ResetL(); - -private: // private constructors - - /** - * Construct a CDependencyParser object - * - */ - CDependencyParser(); - - /** - * 2nd phase constructor - * - */ - void ConstructL(); - -private: // data - - /** - * Pointer to XML Parser from SDK - * owns - */ - Xml::CParser* iParser; - - /** - * Error code indicates error in parsing - */ - TInt iParseStatus; - - /** - * Parsed order number - */ - TInt iOrderNumber; - - /** - * Parsed provided service - * owns - */ - HBufC* iServiceProvided; - - /** - * Parsed required service - * owns - */ - CDesC16ArrayFlat* iServicesRequired; - - /** - * Parsed parent uid - */ - TUid iParentUid; - - /** - * Indicates that parsing is happening within services required blocks - */ - TBool iParsingServicesRequired; - - /** - * Indicates that there was some problem with the parsing - */ - TBool iBadXML; - - /** - * Indicates that root node has been found and we are inside it - */ - TBool iInsideRootNode; - - /** - * Indicates that order number has been found - */ - TBool iFoundOrderNumber; - - /** - * Indicates that services provided has been found - */ - TBool iFoundServiceProvided; - - /** - * Indicates that services required has been found - */ - TBool iFoundServicesRequired; - - /** - * Indicates that parser has been run at least once - */ - TBool iHasBeenRun; - - }; - - } // namespace DiagPluginPool - -#endif // DIAGPLUGINLOADERDEPENDENCYPARSER_H - -// End of File -