diff -r 000000000000 -r b16258d2340f applayerpluginsandutils/httpprotocolplugins/wspinc/MWspCOMethodInvoker.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerpluginsandutils/httpprotocolplugins/wspinc/MWspCOMethodInvoker.h Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,243 @@ +// 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: +// + +/** + @file MWspCOMethodInvoker.h + @warning : This file contains Rose Model ID comments - please do not delete +*/ + +#ifndef __MWSPCOMETHODINVOKER_H__ +#define __MWSPCOMETHODINVOKER_H__ + +// System includes +#include +#include + +// Forward declarations +class MWspCOMethodCallback; +class MHTTPDataSupplier; +class TUriC8; + + +class MWspCOMethodInvoker +/** +@class MWspCOMethodInvoker +@since 7.0 +The MWspCOMethodInvoker and MWspCOMethodCallback form the API that provides +the WSP Connection-Orientated Session Service Method Invocation facility, as +described in the WSP Specification, July 2001. + +The MWspCOMethodInvoker interface is supplied by the Provider entity. The +MWspCOMethodCallback interface is supplied by the Client entity. The Provider +implements the communications necessary to send the primitives issued by the +Client to the Server, and from the Server to the Client. + +A method transaction can only be invoked under the following circumstances; + 1) The WSP session is in either the Connecting, Connected or Resuming + state. + 2) The number of of outstanding method transactions has not reached the + negotiated Method MOR. +Both these circumstances must be statisfied before a method may be invoked. + +Further, during the capability negotiations, the Protocol Option for Large +Data Transfer may be refused (WSP Specification 8.3.2.3). If this is the case, +then the use of the S-MethodInvokeData (by the Client) and S-MethodResultData +(by the Server) is forbidden. + +The effect of not supporting LDT is that POST data may not be streamed and +must not overflow the negotiated Server SDU size. The amount of allowed data +in the S-MethodInvoke.req is dependent on the size of the destination URI +and the method headers. A method transaction that exceeds the Server SDU size +is aborted by the Client and is not invoked on the Provider. + +Another case in which the Client may abort a method transaction is when the +negotiated Server Message size has been exceeded. This also applies when LDT +is supported in the WSP session. The Client aborts the method invocation on +the Provider as well. + +The object that encapsulates the concept of a method transaction implements +the call-back API MWspCOMethodCallback. The Provider associates each of +these objects with a Transaction Id used to distinguish between method +transactions during a WSP session. +@publishedAll +@deprecated +*/ + { +public: // Methods + +/** @fn MethodInvokeReq(MWspCOMethodCallback& aMethodCallback, RStringF aMethod, const TUriC8& aRequestUri, const TDesC8& aRequestHeaders, const TDesC8& aRequestBody, TBool aMoreData) =0 + Intended Usage : This represents the S-MethodInvoke.req primitive. The + Provider initiates a method request, associating the + parameter aMethodCallback with a Transaction Id for + this request. This Id is unique for the lifetime of the + transaction. + + The expected primitives to be received are S-MethodInvoke.cnf + or S-MethodAbort.ind. The method is aborted if the Server + Message size is exceeded. + + The aMoreData flag indicates whether there are subsequent + S-MethodInvokeData primitives for this transaction. The + data for entity body will not excced the SDU. + @since 7.0 + @param aMethodCallback A reference to an instance of the call- + back API MWspCOMethodCallback. It + uniquely identifies this method + transaction for the lifetime of the + transaction. + @param aMethod An RStringF object that describes the + HTTP method for this transaction. + @param aRequestUri A URI object that specifies the resource + to which this operation applies. + @param aRequestHeaders A reference to a buffer with the encoded + request headers. + @param aRequestBody A reference to a buffer containing the + data associated with the request. Only + used if the method aMethod supports an + entity body. + @param aMoreData A boolean flag indicating whether there + are subsequent S-MethodInvokeData + primitives for this transaction. + @pre The WSP session is in the Connecting, Connected or Resuming + state. The method MOR has not been reached. The WSP method + transaction is in Null state. + @post The WSP method transaction is in Requesting state. Neither + the Server SDU size nor the Server Message size have been + exceeded. +*/ + virtual void MethodInvokeReq( + MWspCOMethodCallback& aMethodCallback, + RStringF aMethod, + const TUriC8& aRequestUri, + const TDesC8& aRequestHeaders, + const TDesC8& aRequestBody, + TBool aMoreData + ) =0; + +/** @fn MethodInvokeDataReq(MWspCOMethodCallback& aMethodCallback, const TDesC8& aRequestBody, const TDesC8& aTrailerHeaders, TBool aMoreData) =0 + Intended Usage : This represents the S-MethodInvokeData.req primitive. + The Provider sends more data associated with a + previous S-MethodInvoke.req primitive. The Transport + Handler uses the transaction callback to identify which + previous S-MethodInvoke.req corresponds correctly. + + The aMoreData flag indicates whether there are subsequent + S-MethodInvokeData primitives for this transaction. The + data for entity body will not excced the SDU. + + If there are trailer headers these are provided by the + input parameter aTrailerHeaders. This is only valid if + this is the last S-MethodInvokeData primitive. + + The expected callback primitives that may follow are + S-MethodInvokeData.cnf or S-MethodAbort.ind. The method + is aborted if the negotiated Server Message size is + exceeded. + @since 7.0 + @param aMethodCallback A reference to an instance of the call-back + API MWspCOMethodCallback. It uniquely + identifies this method transaction for the + lifetime of the transaction. + @param aRequestBody A reference to a buffer containing the data + associated with the request. + @param aTrailerHeaders A reference to a buffer with the encoded + trailer headers. This must be empty unless + this is the last S-MethodInvokeData + primitive. + @param aMoreData A boolean flag indicating whether there are + subsequent S-MethodInvokeData primitives for + this transaction. + @pre The WSP method transaction is in the Requesting state. + @post The WSP method transaction remains in the Requesting state. + Neither the Server SDU size nor the Server Message size have + been exceeded. +*/ + virtual void MethodInvokeDataReq( + MWspCOMethodCallback& aMethodCallback, + const TDesC8& aRequestBody, + const TDesC8& aTrailerHeaders, + TBool aMoreData + ) =0; + +/** @fn MethodAbortReq(MWspCOMethodCallback& aMethodCallback) =0 + Intended Usage : This represents the S-MethodAbort.req primitive. The + Provider aborts the method transaction specified by + aMethodCallback. The Client expects the S-MethdoInvoke.ind + primitive to indicate that the transaction is aborted. + @since 7.0 + @param aMethodCallback A reference to an instance of the call-back + API MWspCOMethodCallback. It uniquely + identifies this method transaction for the + lifetime of the transaction. + @pre The WSP method transaction is in any state other than the + Null or Aborting state. + @post The WSP method transaction is in the Aborting state. +*/ + virtual void MethodAbortReq(MWspCOMethodCallback& aMethodCallback) =0; + +/** @fn MethodResultRes(MWspCOMethodCallback& aMethodCallback, const TDesC8& aAckHeaders) =0 + Intended Usage : This represents the S-MethodResult.res primitive. The + sending of acknowledgement headers is a negotiated + capability. If the Server has not agreed to this + capability, then the parameter aAckHeaders is ignored. + @since 7.0 + @param aMethodCallback A reference to an instance of the call-back + API MWspCOMethodCallback. It uniquely + identifies this method transaction for the + lifetime of the transaction. + @param aAckHeaders A buffer that contains the optional set of + headers containing some information to return + to the Server. This may be empty. + @pre The WSP method transaction is in the Waiting2 or Completing + state. + @post If the WSP method transaction was in the Waiting2 state, it + remains in that state. If the WSP method transaction was in + the Completing state, it moves into the Null state and the + method transaction is complete. +*/ + virtual void MethodResultRes( + MWspCOMethodCallback& aMethodCallback, + const TDesC8& aAckHeaders + ) =0; + +/** @fn MethodResultDataRes(MWspCOMethodCallback& aMethodCallback, const TDesC8& aAckHeaders) =0 + Intended Usage : This represents the S-MethodResultData.res primitive. + The sending of acknowledgement headers is a negotiated + capability. If the Server has not agreed to this + capability, then the parameter aAckHeaders is ignored. + @since 7.0 + @param aMethodCallback A reference to an instance of the call-back + API MWspCOMethodCallback. It uniquely + identifies this method transaction for the + lifetime of the transaction. + @param aAckHeaders A buffer that contains the optional set of + headers containing some information to return + to the Server. This may be empty. + @pre The WSP method transaction is in the Waiting2 or Completing + state. + @post If the WSP method transaction was in the Waiting2 state, it + remains in that state. If the WSP method transaction was in + the Completing state, it moves into the Null state amd the + method transaction is complete. +*/ + virtual void MethodResultDataRes( + MWspCOMethodCallback& aMethodCallback, + const TDesC8& aAckHeaders + ) =0; + + }; + +#endif // __MWSPCOMETHODINVOKER_H__ +