diff -r 7e41d162e158 -r abbed5a4b42a networkcontrol/ipscpr/inc/ipscpr.h --- /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 +#include +#include +#include "deft_scpr.h" +#include +#include +#include + + +#ifndef BASIC_IPSCPR +#include "asyncwriter.h" +#include +#include + +#ifdef SYMBIAN_NETWORKING_UMTSR5 +#include +#include +#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__ +