diff -r 000000000000 -r b16258d2340f applayerprotocols/httptransportfw/Test/t_httpmessage/cmessagecomposerdriver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/httptransportfw/Test/t_httpmessage/cmessagecomposerdriver.h Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,140 @@ +// Copyright (c) 2002-2009 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: +// + +#ifndef __CMESSAGECOMPOSERDRIVER_H__ +#define __CMESSAGECOMPOSERDRIVER_H__ + +#include +#include +#include + +#include "mbodydatasupplierobserver.h" + +class MDriverObserver; +class CBodyDataSupplier; + +class CMessageComposerDriver : public CActive, + public MHttpMessageComposerObserver, + public MBodyDataSupplierObserver + { +public: // methods + + static CMessageComposerDriver* NewL(MDriverObserver& aObserver); + + virtual ~CMessageComposerDriver(); + + void SetMessageData(const TDesC8& aMessageData); + void SetStartLine(const TDesC8& aToken1, const TDesC8& aToken2, const TDesC8& aToken3); + void SetHeaderL(const TDesC8& aFieldName, const TDesC8& aFieldValue); + void SetBodyDataL(const TDesC8& aBodyPart); + void SetBodySize(TInt aSize); + void SetTrailerL(const TDesC8& aFieldName, const TDesC8& aFieldValue); + + void Start(TInt aExpectedError, TBool aTestReset = EFalse); + +private: // methods from CActive + + virtual void RunL(); + virtual void DoCancel(); + virtual TInt RunError(TInt aError); + +private: // methods from MHttpMessageComposerObserver + + virtual void StartLineL(TPtrC8& aToken1, TPtrC8& aToken2, TPtrC8& aToken3); + virtual TInt NextHeaderL(TPtrC8& aHeaderName, TPtrC8& aHeaderValue); + virtual MHTTPDataSupplier* HasBodyL(); + virtual TInt NextTrailerL(TPtrC8& aHeaderName, TPtrC8& aHeaderValue); + virtual void MessageComplete(); + virtual void MessageDataReadyL(); + + virtual TInt HandleComposeError(TInt aError); + + virtual void Reserved_MHttpMessageComposerObserver(); + +private: // methods from MBodyDataSupplierObserver + + virtual void NotifyMoreData(); + +private: // enums + + enum TMessageState + { + EPendingStartLine = 0, + EPendingNextHeader, + EPendingHasBody, + EPendingNextTrailer, + EPendingMessageComplete, + EDone + }; + +private: // helper classes + + class THeaderField + { + public: // methods + + THeaderField(const TDesC8& aName, const TDesC8& aValue) : iName(aName), iValue(aValue) {}; + + public: // attributes + + TPtrC8 iName; + TPtrC8 iValue; + + }; + +private: // methods + + CMessageComposerDriver(MDriverObserver& aObserver); + void ConstructL(); + + void CompleteSelf(); + void DoReset(); + +private: + + MDriverObserver& iObserver; + RHttpMessageComposer iMessageComposer; + TMessageState iState; + + TPtrC8 iMessageData; + TPtrC8 iExpectedData; + TPtrC8 iStartLine1; + TPtrC8 iStartLine2; + TPtrC8 iStartLine3; + + RArray iHeaders; + TInt iHeaderIndex; + + RArray iTrailers; + TInt iTrailerIndex; + CBodyDataSupplier* iBodyData; + + TInt iExpectedError; + TBool iTestFailed; + + TInt iResetIndex; + TBool iDoReset; + TBool iReset; + TMessageState iResetState; + + TInt iChunkCount; + TInt iChunkIndex; + + TInt iMessageChunk; + TInt iMessageIndex; + + }; + +#endif // __CMESSAGECOMPOSERDRIVER_H__