--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/qosipscpr/inc/IPSCPR.h Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,190 @@
+// Copyright (c) 2006-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:
+// IP SubConnection Provider class definition.
+//
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef SYMBIAN_IPSCPR_H
+#define SYMBIAN_IPSCPR_H
+
+#include <comms-infras/ss_subconnprov.h>
+#include <comms-infras/corescpr.h>
+#include <comms-infras/corescprstates.h>
+
+#include <cs_subconevents.h>
+#include <cs_subconparams.h>
+
+#include <ip_subconparams.h>
+#include <networking/umtsextn.h>
+#include <networking/imsextn.h>
+#include <networking/pfqoslib.h>
+#include <networking/sblpextn.h>
+#include <comms-infras/eintsock.h>
+
+#include "IPSCPRFactory.h"
+#include "asyncwriter.h"
+#include "ipdeftbasescpr.h"
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <networking/qoslib_internal.h>
+#endif
+
+class CQoSMsgWriter;
+class CQoSMsgReader;
+class TUmtsR5QoSParameters;
+class TImsParameter;
+class CSubConQosR5ParamSet;
+class CSubConIMSExtParamSet;
+
+namespace QoSIpSCprStates
+ {
+ class TAddClientToQoSChannel;
+ class TRemoveClientToQoSChannel;
+ class TRemoveLeavingClientFromQoSChannel;
+ class TSetParameters;
+ }
+
+class CIpSubConnectionProvider : public CIpSubConnectionProviderBase
+/** Non-default/reserved IP subconnection provider
+
+@internalTechnology
+@released Since 9.4 */
+ {
+ friend class CIpDefaultSubConnectionProviderFactory;
+ friend class QoSIpSCprStates::TAddClientToQoSChannel;
+ friend class QoSIpSCprStates::TRemoveClientToQoSChannel;
+ friend class QoSIpSCprStates::TRemoveLeavingClientFromQoSChannel;
+ friend class QoSIpSCprStates::TSetParameters;
+ friend class CQoSSocketOpener;
+public:
+ typedef CIpDefaultSubConnectionProviderFactory FactoryType;
+ virtual ~CIpSubConnectionProvider();
+
+
+private:
+ enum
+ {
+ KParameterRelInvalid = 0,
+ KParameterRelGeneric = 1,
+ KParameterRel4Rel99 = 4,
+ KParameterRel5 = 5,
+ };
+
+protected:
+ //-====================================
+ //Construction methods bundle - accessible thru the factory only
+ //-====================================
+ CIpSubConnectionProvider(ESock::CSubConnectionProviderFactoryBase& aFactory);
+ static CIpSubConnectionProvider* NewL(CIpDefaultSubConnectionProviderFactory& aFactory);
+ void ConstructL();
+ void ResetPrtExtensions();
+
+ //-====================================
+ //ACFNode overrides
+ //-====================================
+ virtual Messages::RNodeInterface* NewClientInterfaceL(const Messages::TClientType& aClientType, TAny* aClientInfo = NULL);
+ void Received(MeshMachine::TNodeContextBase& aContext);
+ void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage);
+
+ //-====================================
+ //Callbacks from MESH.
+ //-====================================
+ void SetQoSParametersL();
+ RInternalSocket& InternalSocket();
+ void InternalSocketOpened(TInt aErr);
+
+ //-====================================
+ //Callbacks from QoSMsg.
+ //-====================================
+public:
+ // Messages from PRT
+ void ProcessPRTMsg(TPfqosMessage& aMsg);
+ void ProcessPRTError(TPfqosMessage& aMsg, TInt aError);
+#ifdef _DEBUG
+ void ProcessPRTError(TInt aMsgType, TInt aError);
+#endif
+
+private:
+ //-====================================
+ //Custom methods
+ //-====================================
+ void DataClientJoiningL(RIPDataClientNodeInterface& aDataClient);
+ void DataClientLeaving(RIPDataClientNodeInterface& aDataClient);
+
+ // 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(const ESock::RCFParameterFamilyBundleC& aParameterBundle);
+ void ConvertParametersFromQOSL(TPfqosMessage& aMsg, CSubConGenEventParamsGranted* aEvent);
+
+ RIPDataClientNodeInterface* DetermineClient(const TPfqosMessage& aMsg);
+ void MapGenericParamsFromESockToPRTL(const CSubConQosGenericParamSet& generic) const;
+ void MapGenericParamsFromPRTToESockL(CSubConQosGenericParamSet& generic) const;
+ void MapExtensionParamsFromESockToPRTL(const CSubConQosIPLinkR99ParamSet& extension, TUmtsQoSParameters& params);
+ void MapExtensionParamsFromESockToPRTL(const CSubConSBLPR5ExtensionParamSet& extension, CSblpParameters& params) const;
+ void MapExtensionParamsFromESockToPRTL(const CSubConQosR5ParamSet& aExtension, TUmtsR5QoSParameters& aParams);
+ void MapExtensionParamsFromESockToPRTL(const CSubConImsExtParamSet& aExtension, TImsParameter& aParams);
+ CSubConExtensionParameterSet* MapFromUmtsR5ExtensionL (const CUmtsR5QoSPolicy* aPolicy);
+ CSubConExtensionParameterSet* MapFromImsExtensionL (const CImsPolicy* aPolicy);
+
+ void ConvertTQoSIntoCQoSParamsL(const TQoSParameters& aParameter);
+ void ConvertCQoSIntoTQoSParamsL(TQoSParameters& aParameters) const;
+
+private:
+ /** Internal Socket */
+ RInternalSocket iSocket;
+ TInt iSocketError;
+
+ /** 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 //SYMBIAN_IPSCPR_H