diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/protocol/inc/ncdparserimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/protocol/inc/ncdparserimpl.h Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,199 @@ +/* +* Copyright (c) 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: CNcdParserImpl declaration +* +*/ + + +#ifndef NcdPARSERIMPL_H +#define NcdPARSERIMPL_H + +#include +#include + + +#include "ncdparser.h" +#include "ncdparserobserver.h" +#include "ncdsubparser.h" + +class CNcdParserObserverBundleImpl; +class MNcdProtocolDefaultObserver; + +/** + * Parser implementation class. + */ +class CNcdParserImpl : //public CBase, + public CActive, + public MNcdParser, + public MNcdSubParserObserver + + { +public: + /** + * Constructor + * + * @param Default observer. Ownership is transferred to parser + * @return CNcdParserImpl* + */ + static CNcdParserImpl* NewL( + MNcdProtocolDefaultObserver* aDefaultObserver ); + /** + * Destructor + */ + virtual ~CNcdParserImpl(); + +protected: + /** + * Constructor + */ + CNcdParserImpl( MNcdProtocolDefaultObserver* aDefaultObserver ); + /** + * Constructor + */ + void ConstructL(); + +private: // From CActive + + /** + * @see CActive::DoCancel() + */ + void DoCancel(); + /** + * @see CActive::RunL() + */ + void RunL(); + /** + * @see CActive::RunError() + */ + TInt RunError( TInt aError ); + + +public: // From MNcdParser + /** + * @see MNcdParser::Observers() + */ + MNcdParserObserverBundle& Observers() const; + /** + * @see MNcdParser::DefaultObserver() + */ + MNcdProtocolDefaultObserver& DefaultObserver() const; + + /** + * @see MNcdParser::BeginAsyncL() + */ + void BeginAsyncL(); + + /** + * @see MNcdParser::BeginAsyncL() + */ + void BeginAsyncL( CNcdSubParser* aSubParser ); + + /** + * @see MNcdParser::BeginSyncL() + */ + void BeginSyncL(); + + /** + * @see MNcdParser::BeginSyncL() + */ + void BeginSyncL( CNcdSubParser* aSubParser ); + /** + * @see MNcdParser::ParseL() + */ + void ParseL( const TDesC8& aData ); + /** + * @see MNcdParser::ParseL() + */ + void ParseL( const TDesC16& aData ); + /** + * @see MNcdParser::EndL() + */ + void EndL(); + /** + * @see MNcdParser::CancelParsing() + */ + void CancelParsing(); + + /** + * @see MNcdParser::SetOriginL + */ + void SetOriginL( const TDesC& aOrigin ); + + +public: // From MNcdParserObserver + + /** + * @see MNcdSubParserObserver::SubParserFinishedL + */ + void SubParserFinishedL( const TDesC8& aTag, TInt aErrorCode ); + +private: + + void BeginL( CNcdSubParser* aSubParser ); + +protected: + /** + * Observer for parser events + */ + CNcdParserObserverBundleImpl* iObservers; + + /** + * Default observer for parser events + * Owned. + */ + MNcdProtocolDefaultObserver* iDefaultObserver; + + /** + * Subparser used for further parsing + */ + CNcdSubParser* iSubParser; + + /** + * XML parser instance + */ + Xml::CParser* iXmlParser; + + /** + * Data buffer + */ + CBufBase* iInputBuffer; + + /** + * Set to ETrue by user when all data has been fed to the parser. + * After processing the data, observer is called to indicate comlpetion. + */ + TBool iPleaseFinish; + /** + * Status flag to indicate running in synchronous or asynchronous mode. + */ + TBool iSynchronous; + + /** + * Status flag indicating cancellation. The parsing should be stopped. + */ + TBool iCancelled; + + /** + * Origin data field, set according to SetOriginL(). Passed to some + * observers. + */ + HBufC* iOrigin; + +private: + HBufC8* iFeedBuffer; + + + }; + +#endif