diff -r 000000000000 -r f5a58ecadc66 upnp/upnpstack/serviceframework/inc/upnpbasecontenthandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/upnp/upnpstack/serviceframework/inc/upnpbasecontenthandler.h Tue Feb 02 01:12:20 2010 +0200 @@ -0,0 +1,219 @@ +/** @file +* Copyright (c) 2005-2006 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: Declares the CUpnpBaseContentHandler class +* +*/ + + +#ifndef __UPNPBASECONTENTHANDLER_H__ +#define __UPNPBASECONTENTHANDLER_H__ + +#include "upnperrors.h" +#include "upnpcommonupnplits.h" + +#include +#include +#include +#include + +#include +#include +#include + +// CLASS DECLARATION + +/** +* This class implements the interface MContentHandler required by a client of the xml framework +* It is designed to be used by xml parser that generates events using callback methods +* +* @since Series60 2.6 +*/ + +// for upnpcontenthandlers +_LIT8(KUpnpRoot, "root"); +_LIT8(KUpnpIconList, "iconList"); +_LIT8(KUpnpUpc, "UPC"); +_LIT8(KUpnpInmpro3, "INMPR03"); +_LIT8(KUpnpScpd, "scpd"); +_LIT8(KUpnpActionList, "actionList"); +_LIT8(KUpnpArgument, "argument"); +_LIT8(KUpnpArgumentList, "argumentList"); +_LIT8(KUpnpServiceStateTable, "serviceStateTable"); +_LIT8(KUpnpName, "name"); +_LIT8(KUpnpIn, "in"); +_LIT8(KUpnpDirection, "direction"); +_LIT8(KUpnpRelatedStateVariable, "relatedStateVariable"); +_LIT8(KUpnpDataType, "dataType"); +_LIT8(KUpnpAllowedValue, "allowedValue"); +_LIT8(KUpnpDefaultValue, "defaultValue"); +_LIT8(KUpnpValue, "value"); +_LIT8(KUpnpMinimum, "minimum"); +_LIT8(KUpnpMaximum, "maximum"); +_LIT8(KUpnpStep, "step"); + +using namespace Xml; + + +class CUpnpBaseContentHandler : public CBase, public MContentHandler +{ +public: + /** + * Destructor + */ + virtual ~CUpnpBaseContentHandler(); + + /** + * Removes all elements from the stack + */ + void ClearResultsL(); + +public: // from MContentHandler + + /** + * This method is a callback to indicate the start of the document. + * @param aDocParam Specifies the various parameters of the document. + * @arg aDocParam.iCharacterSetName The character encoding of the document. + * @param aErrorCode is the error code. + * If this is not KErrNone then special action may be required. + */ + virtual void OnStartDocumentL(const RDocumentParameters& aDocParam, TInt aErrorCode); + + /** + * This method is a callback to indicate the end of the document. + * @param aErrorCode is the error code. + * If this is not KErrNone then special action may be required. + */ + virtual void OnEndDocumentL(TInt aErrorCode); + + /** + * This method is a notification of the beginning of the scope of a prefix-URI Namespace mapping. + * This method is always called before the corresponding OnStartElementL method. + * @param aPrefix is the Namespace prefix being declared. + * @param aUri is the Namespace URI the prefix is mapped to. + * @param aErrorCode is the error code. + * If this is not KErrNone then special action may be required. + */ + virtual void OnStartPrefixMappingL(const RString& aPrefix, const RString& aUri, + TInt aErrorCode); + /** + * This method is a notification of the end of the scope of a prefix-URI mapping. + * This method is called after the corresponding DoEndElementL method. + * @param aPrefix is the Namespace prefix that was mapped. + * @param aErrorCode is the error code. + * If this is not KErrNone then special action may be required. + */ + virtual void OnEndPrefixMappingL(const RString& aPrefix, TInt aErrorCode); + + /** + * This method is a notification of ignorable whitespace in element content. + * @param aBytes are the ignored bytes from the document being parsed. + * @param aErrorCode is the error code. + * If this is not KErrNone then special action may be required. + */ + virtual void OnIgnorableWhiteSpaceL(const TDesC8& aBytes, TInt aErrorCode); + + /** + * This method is a notification of a skipped entity. If the parser encounters an + * external entity it does not need to expand it - it can return the entity as aName + * for the client to deal with. + * @param aName is the name of the skipped entity. + * @param aErrorCode is the error code. + * If this is not KErrNone then special action may be required. + */ + virtual void OnSkippedEntityL(const RString& aName, TInt aErrorCode); + + /** + This method is a receive notification of a processing instruction. + * @param aTarget is the processing instruction target. + * @param aData is the processing instruction data. If empty none was supplied. + * @param aErrorCode is the error code. + * If this is not KErrNone then special action may be required. + */ + virtual void OnProcessingInstructionL(const TDesC8& aTarget, const TDesC8& aData, + TInt aErrorCode); + /** + * This method indicates an error has occurred. + * @param aError is the error code + */ + virtual void OnError(TInt aErrorCode); + + /** + * This method obtains the interface matching the specified uid. + * @return 0 if no interface matching the uid is found. + * Otherwise, the this pointer cast to that interface. + * @param aUid the uid identifying the required interface. + */ + virtual TAny* GetExtendedInterface(const TInt32 aUid); + + /** + * Removes all elements from the stack if parsing failed + */ + virtual void ClearStack(); + +protected: + + /** + * Default C++ constructor + */ + CUpnpBaseContentHandler(); + + /** + * 2nd phase constructor dedicated to future, inherited class + */ + void BaseConstructL(); + + /** + * Gets an object most recently pushed onto the stack + * @return + */ + CBase* GetElementL(); + + /** + * This method shows whether parsing of a xml document is finished + * @since Series60 3.2 + * @return TBool + */ + virtual TBool IsReady() = 0; + + /** + * Sets a flag to indicate that parsing of the xml document has thrown an error + * @since Series60 3.2 + */ + virtual void SetError() = 0; + + /** + * Sets a flag to indicate that parsing of the xml document has finished + * @since Series60 3.2 + */ + virtual void SetFinish() = 0; + + /** + * Get content value. + * @since Series60 3.2 + */ + HBufC8* GetContentL(); + +protected: + + CStack *iStack; + HBufC8* iContent; + CParser* iParser; + TBuf8 iInfo; + HBufC8* iBodyTag1; + HBufC8* iBodyTag2; + TBool iChunk; + +}; + +#endif //__UPNPBASECONTENTHANDLER_H__ \ No newline at end of file