--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/ipscpr/inc/ipscpr.h Tue Aug 31 16:45:15 2010 +0300
@@ -0,0 +1,249 @@
+/**
+* Copyright (c) 2005-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:
+* Header file for the IP SubConnection Provider and its basic version
+*
+*
+*/
+
+
+
+/**
+ @file ipscpr.h
+*/
+
+#ifndef __IPSCPR_H__
+#define __IPSCPR_H__
+
+#include <e32base.h>
+#include <e32std.h>
+#include <ss_subconnprov.h>
+#include "deft_scpr.h"
+#include <eintsock.h>
+#include <in_sock.h>
+#include <es_sock.h>
+
+
+#ifndef BASIC_IPSCPR
+#include "asyncwriter.h"
+#include <qoslib.h>
+#include <ip_subconparams.h>
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+#include <umtsextn.h>
+#include <imsextn.h>
+#endif
+#endif
+
+
+/**
+Connection Provider Id - Protocol Family
+
+@internalComponent
+
+@released Since v9.0
+*/
+const TUint KIPConnectionProviderFactoryId = KAfInet;
+
+/**
+ECOM Implementation Id for Connection Provider
+
+@internalComponent
+
+@released Since v9.0
+*/
+#ifdef BASIC_IPSCPR
+const TInt KSubConnectionProviderImplementationUid = { 0x102752C5 };
+#else
+const TInt KSubConnectionProviderImplementationUid = { 0x10204308 };
+#endif
+
+
+class CConnectionProviderBase;
+class CIpSubConnectionProviderFactory : public CSubConnectionProviderFactoryBase
+/**
+Factory that is used to create instances of IP Connection Providers
+
+@internalComponent
+
+@released Since v9.0
+*/
+ {
+public:
+ static CIpSubConnectionProviderFactory* NewL(TAny* aConstructionParameters);
+ virtual ~CIpSubConnectionProviderFactory();
+
+ CIpSubConnectionProviderFactory(TUint aFactoryId, CSubConnectionFactoryContainer& aParentContainer);
+
+ // methods to be overriden for CSubConnectionProviderFactory
+ virtual CSubConnectionProviderBase* DoCreateProviderL(CConnectionProviderBase& aConnProvider, RSubConnection::TSubConnType aType);
+ };
+
+
+#ifndef BASIC_IPSCPR
+
+class CQoSMsgWriter;
+class CQoSMsgReader;
+class TPfqosMessage;
+class CSubConGenEventParamsGranted;
+class CSubConQosGenericParamSet;
+class CSubConQosIPLinkR99ParamSet;
+class CSubConSBLPR5ExtensionParamSet;
+class CSblpParameters;
+class TQoSParameters;
+class TUmtsQoSParameters;
+
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+class TUmtsR5QoSParameters;
+class TImsParameter;
+class CSubConQosR5ParamSet;
+class CSubConIMSExtParamSet;
+#endif
+// SYMBIAN_NETWORKING_UMTSR5
+
+
+class CIpSubConnectionProvider : public CEmptySubConnectionProvider
+/**
+Defines the IP Connection Provider. Class provides a mapping from ESock Subconnection
+function calls to QoS.PRT messages.
+
+@internalComponent
+
+@released Since v9.0
+*/
+ {
+private:
+ enum
+ {
+ KParameterRelInvalid = 0,
+ KParameterRelGeneric = 1,
+ KParameterRel4Rel99 = 4,
+ KParameterRel5 = 5,
+ };
+
+public:
+ // Construction
+ static CIpSubConnectionProvider* NewL(CIpSubConnectionProviderFactory& aFactory, CConnectionProviderBase& aConnProvider);
+
+protected:
+ // Construction
+ CIpSubConnectionProvider(CIpSubConnectionProviderFactory& aFactory, CConnectionProviderBase& aConnProvider);
+
+ // Methods to be overriden be derived subconnection provider
+ virtual void DoDataClientJoiningL(MSubConnectionDataClient& aDataClient);
+ virtual void DoDataClientLeaving(MSubConnectionDataClient& aDataClient);
+ virtual void DoSourceAddressUpdate(MSubConnectionDataClient& aDataClient, const TSockAddr& aSource);
+ virtual void DoDestinationAddressUpdate(MSubConnectionDataClient& aDataClient, const TSockAddr& aDestination);
+ virtual void DoDataClientRouted(MSubConnectionDataClient& aDataClient, const TSockAddr& aSource, const TSockAddr& aDestination, const TDesC8& aConnectionInfo);
+ virtual void DoParametersAboutToBeSetL(CSubConParameterBundle& aParameterBundle);
+ virtual TInt DoControl(TUint aOptionLevel, TUint aOptionName, TDes8& aOption);
+
+ virtual void DoStartL();
+ virtual void DoStop();
+ virtual CSubConnectionProviderBase* DoNextLayer();
+ virtual CConnDataTransfer& DoDataTransferL();
+
+ //MConnectionDataClient
+ virtual TAny* FetchInterfaceInstanceL(CSubConnectionProviderBase& aProvider, const STypeId& aTid);
+ virtual void ConnectionGoingDown(CConnectionProviderBase& aConnProvider);
+ virtual void Notify(TNotify aNotifyType, CConnectionProviderBase* aConnProvider, TInt aError, const CConNotificationEvent* aConNotificationEvent);
+ virtual void AttachToNext(CSubConnectionProviderBase* aSubConnProvider);
+
+ // Don't allow clients to invoke the destructor.
+ // (Only the CCommsFactoryBase should do this)
+ virtual ~CIpSubConnectionProvider();
+
+ void ConstructL();
+
+public:
+ // Messages from PRT
+ void ProcessPRTMsg(TPfqosMessage& aMsg);
+ void ProcessPRTError(TPfqosMessage& aMsg, TInt aError);
+#ifdef _DEBUG
+ void ProcessPRTError(TInt aMsgType, TInt aError);
+#endif
+
+private:
+ // Messages to PRT
+ void SendOpenExistingL(const TInetAddr &aSrcAddr, const TInetAddr &aDstAddr, TUint32 aIapId, TUint32 aProtocol);
+ void SendCreateL(const TInetAddr &aSrcAddr, const TInetAddr &aDstAddr, TUint32 aIapId, TUint32 aProtocol);
+ void SendCloseL();
+ void SendJoinL(const TInetAddr &aSrcAddr, const TInetAddr &aDstAddr, TUint32 aIapId, TUint32 aProtocol);
+ void SendLeaveL(const TInetAddr &aSrcAddr, const TInetAddr &aDstAddr, TUint32 aIapId, TUint32 aProtocol);
+ void SendSetQoSL();
+
+ // Internal Processing
+ void ProcessPRTEventL(TPfqosMessage& aMsg);
+ void ProcessPRTReplyL(TPfqosMessage& aMsg);
+
+ void ConvertParametersFromESockL(CSubConParameterBundle& aParameterBundle);
+ void ConvertParametersFromQOSL(TPfqosMessage& aMsg, CSubConGenEventParamsGranted* aEvent);
+
+ TInt DetermineClient(const TPfqosMessage& aMsg, MSubConnectionDataClient*& aDataClient);
+ void MapGenericParamsFromESockToPRTL(const CSubConQosGenericParamSet& generic) const;
+ void MapGenericParamsFromPRTToESockL(CSubConQosGenericParamSet& generic) const;
+ void MapExtensionParamsFromESockToPRTL(const CSubConQosIPLinkR99ParamSet& extension, TUmtsQoSParameters& params);
+
+ void ResetPrtExtensions();
+
+
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+ void MapExtensionParamsFromESockToPRTL(const CSubConQosR5ParamSet& aExtension, TUmtsR5QoSParameters& aParams);
+ void MapExtensionParamsFromESockToPRTL(const CSubConImsExtParamSet& aExtension, TImsParameter& aParams);
+
+ CSubConExtensionParameterSet* MapFromUmtsR5ExtensionL (const CUmtsR5QoSPolicy* aPolicy);
+ CSubConExtensionParameterSet* MapFromImsExtensionL (const CImsPolicy* aPolicy);
+#endif
+// SYMBIAN_NETWORKING_UMTSR5
+
+
+ void MapExtensionParamsFromESockToPRTL(const CSubConSBLPR5ExtensionParamSet& extension, CSblpParameters& params) const;
+
+ void ConvertTQoSIntoCQoSParamsL(const TQoSParameters& aParameter);
+ void ConvertCQoSIntoTQoSParamsL(TQoSParameters& aParameters) const;
+
+private:
+ /** Internal Socket */
+ RInternalSocket iSocket;
+
+ /** PRT message writer */
+ CQoSMsgWriter* iWriter;
+
+ /** PRT message reader */
+ CQoSMsgReader* iReader;
+
+ /** QoS channel Id */
+ TInt iChannelId;
+
+ /** Process UID */
+ TUidType iUid;
+
+ /** QoS Parameters */
+ CQoSParameters* iPrtParameters;
+
+ /** QoS Extensions */
+ TQoSExtensionQueue iPrtExtensions;
+
+ /** QoS Parameters Set */
+ TBool iParametersSet;
+ TInt iParameterRelease;
+
+ /**Class for doing async writes */
+ CAsyncWriter* iAsyncWriter;
+ };
+
+#endif // BASIC_IPSCPR
+#endif // __IPSCPR_H__
+