diff -r 000000000000 -r af10295192d8 networkcontrol/qosipscpr/inc/IPSCPR.h --- /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 +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "IPSCPRFactory.h" +#include "asyncwriter.h" +#include "ipdeftbasescpr.h" +#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#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