applayerpluginsandutils/httpprotocolplugins/wspinc/CWspTransportHandler.h
changeset 0 b16258d2340f
--- /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 <e32base.h>
+#include <stringpool.h>
+#include <http/framework/csecuritypolicy.h>
+
+// 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 <wsp/cwsptransporthandler.inl>
+
+#endif // __CWSPTRANSPORTHANDLER_H__