diff -r 000000000000 -r b16258d2340f applayerpluginsandutils/httpprotocolplugins/WspProtocolHandler/CWspCOTransaction.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerpluginsandutils/httpprotocolplugins/WspProtocolHandler/CWspCOTransaction.h Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,420 @@ +// Copyright (c) 2001-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 __CWSPCOTRANSACTION_H__ +#define __CWSPCOTRANSACTION_H__ + +// System includes +#include +#include +#include +#include +#include + +// User includes +#include "mwspprimitivesendercallback.h" +#include "mwspcorxdatacallback.h" +#include "mwspcotxdatacallback.h" +#include "cwspheaderutils.h" + +// Forward declarations +class MWspCapabilityViewer; +class MWspCOMethodInvoker; +class CWspPrimitiveSender; +class MWspCOMethodObserver; + +// Types used for arguments in this file (e.g. TWspBearer) are from the Wap namespace +using namespace Wap; + +// @todo docing + +//##ModelId=3BBD80610048 +class CWspCOTransaction : public CProtTransaction, public MWspCOMethodCallback, + public MWspPrimitiveSenderCallback, + public MWspCORxDataCallback, + public MWspCOTxDataCallback + { +public: // Methods + +/** @fn NewL(RHTTPTransaction aTransaction, MWspCOMethodInvoker& aMethodInvoker, MWspCapabilityViewer& aNegotiatedCapInfo, CWspHeaderUtils& aHdrUtils) + Intended Usage : Static factory constructor. + @since 7.0 + @leave Leaves with KErrNoMemory if there was not enough memory to + create the object. + @param aTransaction The HTTP transaction object associated + with this WSP method transaction. + @param aMethodInvoker A reference to the method invoker object. + @param aNegotiatedCapInfo A reference to the negotiated capability + info. + @param aObserver A reference to the method observer. + @param aHdrUtils A reference to the WSP header utilities + @return A pointer to newly created object. +*/ + //##ModelId=3C4C41A3032A + static CWspCOTransaction* NewL( + RHTTPTransaction aTransaction, + MWspCOMethodInvoker& aMethodInvoker, + MWspCapabilityViewer& aNegotiatedCapInfo, + MWspCOMethodObserver& aObserver, + CWspHeaderUtils& aHdrUtils + ); + +/** @fn ~CWspCOTransaction() + Intended Usage : Standard destructor. + @since 7.0 +*/ + //##ModelId=3C4C41A3030C + ~CWspCOTransaction(); + +/** @fn InitRequestL() + + @since 7.0 +*/ + void InitRequestL(); + +/** @fn NotifyMoreRequestData() + + @since 7.0 +*/ + void NotifyMoreRequestData(); + +/** @fn AbortRequest() + + @since 7.0 +*/ + void AbortRequest(); + +/** @fn Suicide() + Intended Usage : The client has closed the RHTTPTransaction that this + object wraps. The protocol base base class has also + transferred ownership of this object to the sub-class, + the WSP protocol handler. This function ensures cleanup + of this object. If the WSP method transaction was in + the Null state, then the object deletes itself. If the + WSP method transaction is in the Aborting state, then + the object will delete itself once it receives the + S-MethodAbort.ind primitive. + @since 7.0 + @todo finish docing + @pre The client has closed the RHTTPTransaction that this object + wraps. + @post If the WSP method transaction was in the Null state, then + the object has deleted itself. If the WSP method transaction + is in the Aborting state, then the object will delete itself + once it receives the S-MethodAbort.ind primitive. +*/ + //##ModelId=3C4C41A3029E + void Suicide(); + +/** @fn GetWspHeaderUtils() const + Intended Usage : This method provides access to the WSP header utilities. + @since 7.0 + @return A reference to the WSP header utilities +*/ + //##ModelId=3C4C41A30276 + CWspHeaderUtils& GetWspHeaderUtils() const; + +private: // Methods from CProtTransaction + +/** @fn CreateTxDataL() + @see CProtTransaction +*/ + //##ModelId=3C4C41A3023A + virtual void CreateTxDataL(); + +/** @fn CreateRxDataL(MRxDataObserver& aObserver) + @see CProtTransaction +*/ + //##ModelId=3C4C41A301D5 + virtual void CreateRxDataL(MRxDataObserver& aObserver); + +private: // Methods from MWspCOMethodCallback + +/** @fn MethodInvokeCnf() + @see MWspCOMethodCallback +*/ + //##ModelId=3C4C41A30199 + virtual void MethodInvokeCnf(); + +/** @fn MethodInvokeDataCnf() + @see MWspCOMethodCallback +*/ + //##ModelId=3C4C41A30059 + virtual void MethodInvokeDataCnf(); + +/** @fn MethodAbortInd(TWSPReason aReason) + @see MWspCOMethodCallback +*/ + //##ModelId=3C4C41A203E7 + virtual void MethodAbortInd(TWspReason aReason); + +/** @fn MethodResultInd(TInt aStatus, const TDesC8& aResponseHeaders, MHTTPDataSupplier& aResponseBody, TBool aMoreData) + @see MWspCOMethodCallback +*/ + //##ModelId=3C4C41A2033D + virtual void MethodResultInd( + TInt aStatus, + const TDesC8& aResponseHeaders, + MHTTPDataSupplier& aResponseBody, + TBool aMoreData + ); + +/** @fn MethodResultDataInd(const TDesC8& aTrailerHeaders, TBool aMoreData) + @see MWspCOMethodCallback +*/ + //##ModelId=3C4C41A202EC + virtual void MethodResultDataInd(const TDesC8& aTrailerHeaders, TBool aMoreData); + +private: // Methods from MWspPrimitiveSenderCallback + +/** @fn SendPrimitiveL(TWspPrimitive aPrimitive) + @see MWspPrimitiveSenderCallback +*/ + //##ModelId=3C4C41A2029C + virtual void SendPrimitiveL(TWspPrimitive aPrimitive); + +/** @fn WspPrimitiveSenderCallbackError(TInt aError) + @see MWspPrimitiveSenderCallback +*/ + //##ModelId=3C4C41A20256 + virtual TInt WspPrimitiveSenderCallbackError(TInt aError); + +private: // Methods from MWspCORxDataCallback + +/** @fn AbortResponse() + @see MWspCORxDataCallback +*/ + //##ModelId=3C4C41A20210 + virtual void AbortResponse(); + +/** @fn SendResponsePrimitive() + @see MWspCORxDataCallback +*/ + //##ModelId=3C4C41A201F2 + virtual void SendResponsePrimitive(); + +private: // Methods from MWspCOTxDataCallback + +/** @fn SendInvokePrimitive() + Informs the Tx Data object observer that it should send a S-MethodInvoke or + S-MethodInvokeData primitive. + @since 7.0 +*/ + virtual void SendInvokePrimitive(); + +/** @fn AbortInvoke() + Informs the Tx Data object observer that the method should be aborted. + @see 7.0 +*/ + virtual void AbortInvoke(); + +private: // Methods + +/** @fn CWspCOTransaction(RHTTPTransaction aTransaction, MWspCOMethodInvoker& aMethodInvoker, MWspCapabilityViewer& aNegotiatedCapInfo, CWspHeaderUtils& aHdrUtils) + Intended Usage : First phase constructor. + @since 7.0 + @param aTransaction The HTTP transaction object associated + with this WSP method transaction. + @param aMethodInvoker A reference to the method invoker object. + @param aNegotiatedCapInfo A reference to the negotiated capability + info. + @param aObserver A reference to the method observer. + @param aHdrUtils A reference to the WSP header utilities +*/ + //##ModelId=3C4C41A20120 + CWspCOTransaction( + RHTTPTransaction aTransaction, + MWspCOMethodInvoker& aMethodInvoker, + MWspCapabilityViewer& aNegotiatedCapInfo, + MWspCOMethodObserver& aObserver, + CWspHeaderUtils& aHdrUtils + ); + +/** @fn ConstructL() + Intended Usage : Second phase constructor. Does any necessary allocations. + @since 7.0 + @pre First phase construction has been done. + @post The object is fully initialised. +*/ + //##ModelId=3C4C41A20116 + void ConstructL(); + +/** @fn MethodInvoke() + Intended Usage : Invokes the method. Sends the S-MethodInvoke.req + primitive. Ensures that the Server SDU size and the + Server message size are observed. Will leave if either + of these session capabilities are exceeded. + @since 7.0 + @pre The WSP method transaction is in the Null state. + @post The S-MethodInvoke.req primitive has been sent and the WSP + method transaction is in the Requesting state. +*/ + //##ModelId=3C4C41A302F8 + void MethodInvoke(); + +/** @fn MethodInvokeData() + Intended Usage : + @since 7.0 + @todo finish docing + @pre The WSP method transaction is in the Requesting state. + @post The S-MethodInvokeData.req primitive has been sent and the + WSP method transaction remains in the Requesting state. +*/ + //##ModelId=3C4C41A302D0 + void MethodInvokeData(); + +/** @fn MethodAbort() + Intended Usage : + @since 7.0 + @todo finish docing + @pre The WSP method transaction is not in the Null or Aborting + state. + @post The S-MethodAbort.req primitive has been sent and the WSP + method transaction is in the Aborting state. +*/ + //##ModelId=3C4C41A302BC + void MethodAbort(); + +/** @fn MethodResultRes() + Intended Usage : + @since 7.0 + @post The WSP method transaction is in the Waiting or Completing + state. + @pre The WSP method transaction is in the Waiting2 state if the + request response is not complete and there are subsequent + S-MethodResultData primitives to be received. If the request + response is complete, then the WSP method transaction is in + the Null state. +*/ + void MethodResultRes(); + +/** @fn MethodResultDataRes() + Intended Usage : + @since 7.0 + @post The WSP method transaction is in the Waiting2 or Completing + state. + @pre The WSP method transaction remains in the Waiting2 state if + the request response is not complete and there are + subsequent S-MethodResultData primitives to be received. If + the request response is complete, then the WSP method + transaction is in the Null state. +*/ + void MethodResultDataRes(); + +/** @fn ProcessResponseDataL(const TDesC8& aResponseHeaders, MHTTPDataSupplier& aResponseBody, TBool aMoreData) + + @since 7.0 + @param aResponseHeaders A reference to a buffer that provides + the encoded response headers. + @param aResponseBody A reference to a data supplier object + that provides the data associated + with the response. + @param aMoreData A flag to indicate whether subsequent + S-MethodResultData primitives are to be + received for this transaction. +*/ + void ProcessResponseDataL(const TDesC8& aResponseHeaders, MHTTPDataSupplier& aResponseBody, TBool aMoreData); + +/** @fn void PostResProcessing() + Does the necessary processing given that either a S-MethodResult.res or a + S-MethodResultData.res primitive has just been sent. If the method state is + Completing, then the method moves into the Null state, and if the self- + destruction has been flagged, the object deletes itself. If the method is + not in the Completing state, then it is in the Waiting2 state, and it does + not change state. + @since 7.0 + @pre The method is in either the Completing or the Waiting2 state. + @post The method is in either in the Null state or has remained in + the Waiting2 state. +*/ + void PostResProcessing(); + +/** @fn ResetFlags() + Intended Usage : Resets all the flags in the object. + @since 7.0 + @post All flags are set to EFalse. +*/ + //##ModelId=3C4C41A20057 + void ResetFlags(); + +private: // Attributes + + /** HTTP logger handle (debug only) + */ + __DECLARE_LOG + + /** A reference to the CO Transaction Invoker object. Owned by the transport + handler. + */ + //##ModelId=3C4C41A2004D + MWspCOMethodInvoker& iMethodInvoker; + + /** An object that holds the negotiated capabilties for the current Wsp + session. + */ + //##ModelId=3C4C41A20039 + MWspCapabilityViewer& iNegotiatedCapInfo; + + /** A reference to the method observer. + */ + //##ModelId=3C4C41A20025 + MWspCOMethodObserver& iObserver; + + /** A reference to the WSP header utilities + */ + //##ModelId=3C4C438001E5 + CWspHeaderUtils& iHdrUtils; + + /** The state of the WSP method transaction. + */ + //##ModelId=3C4C41A20007 + TWspMethodState iMethodState; + + /** A flag to indicate whether there is more data to send in subsequent + S-MethodInvokeData primitives. + */ + //##ModelId=3C4C41A103DB + TBool iMoreRequestData; + + /** A flag to incidcate whether the S-MethodResult.res primitive has been sent. + */ + TBool iSentMethodResultRes; + + /** A flag to indicate whether the client aborted the method. + */ + //##ModelId=3C4C41A1039F + TBool iClientMethodAbort; + + /** A flag that inducates whether the final S-MethodResult.res or + S-MethodResultData.res primitive is waiting to be sent. + */ + TBool iFinalResPending; + + /** A flag to indicate that the client has closed the transaction and that + once the S-MethodAbort.ind primitive is received, the object must self- + destruct. + */ + //##ModelId=3C4C41A10383 + TBool iSuicide; + + /** An active object that is used to invoke the sending of certain WSP + primitives. + */ + //##ModelId=3C4C41A10377 + CWspPrimitiveSender* iPrimitiveSender; + + }; + +#endif // __CWSPCOTRANSACTION_H__