diff -r 000000000000 -r b16258d2340f applayerpluginsandutils/httpprotocolplugins/wspinc/CWspTransportHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerpluginsandutils/httpprotocolplugins/wspinc/CWspTransportHandler.h Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,298 @@ +// 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 CWspTransportHandler.h + @warning : This file contains Rose Model ID comments - please do not delete +*/ + +#ifndef __CWSPTRANSPORTHANDLER_H__ +#define __CWSPTRANSPORTHANDLER_H__ + +// System includes +#include +#include +#include + +// Forward class declarations +class MWspCOSessionCallback; +class MWspProxyInfoProvider; +class MWspCapabilityProvider; +class MWspSessionHeadersProvider; +class MWspCOSessionInvoker; +class MWspCOMethodInvoker; +class MWspCOPushInvoker; +class MWspCLMethodInvoker; +class MWspCLPushInvoker; + + +//##ModelId=3BBD849A0269 +class CWspTransportHandler : public CBase, public MSecurityPolicy +/** +@since 7.0 +The WSP Transport Handler API. The WSP TH provides its client with WSP services. +It defines a set of interfaces that abstract the behaviour of the top-level of a +WAP protocol stack - ie. the WSP layer. + +Five distinct services are offered: + +* MWspCOSessionInvoker a Connection-Oriented Session service. + +* MWspCOMethodInvoker a Connection-Oriented Transaction service. + +* MWspCOPushInvoker a Connection-Oriented Push service. + +* MWspCLMethodInvoker a Connection-Less Session service. + +* MWspCLPushInvoker a Connection-Less Push service. + +The API is specified as an ECOM interface. Specific implementations may offer +some or all of the five services. + +All implementations must provide default security policy settings via the +MSecurityPolicy interface. The defaults shall be used when no security policy +plug-in is supplied by the caller of CWspTransportHandler::NewL(). This might +occur if the plug-in could not be located on the device, +@publishedAll +@deprecated +*/ + { +public: // type definitions and enumerations + +/** A bit-field type that is set to contain a union of the services supported by the + WSP transport handler. +*/ + typedef TUint8 TWspSupportedServices; + +/** The five different service types that may be supported +*/ + enum TWspService + { + ECOSessionService = 0x01, + ECOMethodInvocationService = 0x02, + ECOPushService = 0x04, + ECLSessionService = 0x08, + ECLPushService = 0x10 + }; + +public: // methods + +/**Factory construction - instantiates the transport handler plug-in. + @since 7.0 + @param aStringPool (in) An open string pool reference. + @param aSecurityPolicy (in) (optional) A security policy provider + @param aSessionCB (in) A client callback API for CO session events. + @param aProxyInfoProv (in) A client API that provides WAP proxy details + @param aCapProv (in) A client API for capability negotatiation. + @param aSessHdrProv (in) A client API for exchange of session headers + @return The constructed plug-in. + @leave KErrNotFound - if an ECOM implementation of the interface is not present on the device. + @leave It could also leave with other ECOM error codes. +*/ + //##ModelId=3C4C453103DD + inline static CWspTransportHandler* NewL(RStringPool aStringPool, + MSecurityPolicy* aSecurityPolicy, + MWspCOSessionCallback& aSessionCB, + MWspProxyInfoProvider& aProxyInfoProv, + MWspCapabilityProvider& aCapProv, + MWspSessionHeadersProvider& aSessHdrProv); + +/**Class destructor. + @since 7.0 +*/ + //##ModelId=3C4C453103AB + inline virtual ~CWspTransportHandler(); + +public: // General API methods + +/**Query the services supported by this instantiation of the WSP + transport handler plug-in. + @since 7.0 + @return A union of flags describing the services supported by the WSP transport + handler +*/ + //##ModelId=3C4C45310256 + virtual TWspSupportedServices SupportedServices() const = 0; + + /** Get the Server Certificate for the current session. + @param aServerCert A TCertInfo which will be filled with the certificate information + @return An error code. KErrNone if aServerCert has been completed, otherwise one of + the system wide error codes + */ + virtual TInt ServerCert(TCertInfo& aCertInfo) const = 0; + + /** Get the Server Certificate for this session. + @return The certificate information (in an CWtlsCertificate object) + or NULL if it is not available. + */ + virtual const CCertificate* ServerCert() = 0; + +public: // Connection-Oriented WSP API methods + +/**Obtain the connection-oriented session invocation API. + @since 7.0 + @return The API object that should be used by the client for CO session + invocations. + @leave This method will panic if the service isn't supported by a particular + implementation of the API. +*/ + //##ModelId=3BC577C202B2 + virtual MWspCOSessionInvoker& COSessionInvoker() = 0; + +/**Obtain the connection-oriented transaction invocation API. + @since 7.0 + @return The API object that should be used by the client for transaction + invocations. + @leave This method will panic if the service isn't supported by a particular + implementation of the API. +*/ + //##ModelId=3BC577C70165 + virtual MWspCOMethodInvoker& COTransactionInvoker() = 0; + +/**Obtain the connection-oriented push invocation API. + @since 7.0 + @return The API object that should be used by the client to signal + readiness to receive CO push invocations. + @leave This method will panic if the service isn't supported by a particular + implementation of the API. +*/ + //##ModelId=3C4C45310206 + virtual MWspCOPushInvoker& COPushInvoker() = 0; + +public: // Connection-Less WSP API methods + +/**Obtain the connection-less method invocation API. + @since 7.0 + @return The API object that should be used by the client for CL method + invocations. + @leave This method will panic if the service isn't supported by a particular + implementation of the API. +*/ + //##ModelId=3C4C453101DE + virtual MWspCLMethodInvoker& CLMethodInvoker() = 0; + +/**Obtain the connection-less push invocation API. + @since 7.0 + @return The API object that should be used by the client to signal + readiness to receive CL push invocations. + @leave This method will panic if the service isn't supported by a particular + implementation of the API. +*/ + //##ModelId=3C4C453101CA + virtual MWspCLPushInvoker& CLPushInvoker() = 0; + +protected: // type definitions + /** + @struct SInstantiationParams + A structure containing the instantiation parameters to NewL, passed across + via ECOM to the sub-class NewL + */ + struct SInstantiationParams + { + /** + An open string pool reference. + */ + RStringPool* iStringPool; + /** + The security policy plugin. + */ + MSecurityPolicy* iSecurityPolicy; + /** + A client callback API for CO session events. + */ + MWspCOSessionCallback* iSessionCB; + /** + A client API that provides WAP proxy details. + */ + MWspProxyInfoProvider* iProxyInfoProv; + /** + A client API for capability negotatiation. + */ + MWspCapabilityProvider* iCapProv; + /** + A client API for exchange of session headers. + */ + MWspSessionHeadersProvider* iSessHdrProv; + }; + +protected: // methods + +/**Normal constructor. Creates an instance of the plug-in base. + @since 7.0 + @param aStringPool (in) An open string pool reference. + @param aSecurityPolicy (in) (optional) A security policy plug-in instance + @param aSessionCB (in) A client callback API for CO session events. + @param aProxyInfoProv (in) A client API that provides WAP proxy details + @param aCapProv (in) A client API for capability negotatiation. + @param aSessHdrProv (in) A client API for exchange of session headers + @return The constructed plug-in. +*/ + inline CWspTransportHandler(RStringPool aStringPool, + MSecurityPolicy* aSecurityPolicy, + MWspCOSessionCallback& aSessionCB, + MWspProxyInfoProvider& aProxyInfoProv, + MWspCapabilityProvider& aCapProv, + MWspSessionHeadersProvider& aSessHdrProv); + +protected: // attributes + + /** Handle for a string pool used by the WSP transport handler. This is owned + and managed elsewhere. + */ + //##ModelId=3C4C453101A2 + RStringPool iStringPool; + + /** An optional security policy plug-in. If a plug-in was not supplied, the + value is NULL. + */ + //##ModelId=3C4C4531018E + MSecurityPolicy* iSecurityPolicy; + + /** The client's callback for session events + */ + //##ModelId=3C4C4531017C + MWspCOSessionCallback& iSessionCB; + + /** The client's provider of proxy information + */ + //##ModelId=3C4C45310170 + MWspProxyInfoProvider& iProxyInfoProv; + + /** The client's provider of capabilities information + */ + //##ModelId=3C4C4531015C + MWspCapabilityProvider& iCapProv; + + /** THe client's provider of session headers + */ + //##ModelId=3C4C45310148 + MWspSessionHeadersProvider& iSessHdrProv; + +private: // attributes +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS + /** D'tor Key identification required for ECOM + @internalAll + */ +#else + /** D'tor Key identification required for ECOM + */ +#endif //SYMBIAN_ENABLE_SPLIT_HEADERS + //##ModelId=3C4C45310134 + TUid iDtor_ID_Key; + }; + +#include + +#endif // __CWSPTRANSPORTHANDLER_H__