diff -r 000000000000 -r 3553901f7fa8 telephonyprotocols/gprsumtsqosprt/inc/guqos.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyprotocols/gprsumtsqosprt/inc/guqos.h Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,133 @@ +// Copyright (c) 2007-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: +// + +#ifndef __GUQOS_H__ +#define __GUQOS_H__ + + +#include +#include + +#include + +class CFlowData; +class CFlowContext; +class TQoSRequested; + +const TUint KModuleGUQoS = 0x168; + +const TUint KGUQoSPriority = 10; +const TUint KModuleCapabilites = KQoSModuleBindToInterface | + KQoSModuleScheduler | + KQoSModulePolicer | + KQoSModuleShaper | + KQoSModuleSerialize | + KQoSFatalFailure | + KQoSModulePartialSignaling; + + +const TUint KPdpContextDeleteTimeout = 6000000; + +// +// Configurable options +class TConfigurableOptions + { +public: + TInt iTimeout; // Delay for Pdp context deletion [unit: seconds] + }; + + +const TUint KMajorVersionNumber=0; +const TUint KMinorVersionNumber=1; +const TUint KBuildVersionNumber=1; + +// Forward decls +class CNif; +class CPdpContext; +class CNifManager; +class MTimeoutManager; + +class CModuleGuqos : public CModuleBase + { +public: + static CModuleGuqos* NewL(); + ~CModuleGuqos(); + + void InitModuleL(MEventInterface& aEventInterface, CExtension* aData); + void OpenL(CFlowContext &aFlow, CNifIfBase* aIf); + void Close(CFlowContext &aFlow); + void Negotiate(CFlowContext &aFlow, const TQoSParameters& aParams, MQoSNegotiateEvent& aNotify); + void Release(CFlowContext &aFlow); + void OpenChannel(TInt aChannelId, const TQoSParameters& aParams, CExtensionPolicy& aPolicy, MQoSNegotiateEvent& aNotify, CFlowContext& aFlow); + void CloseChannel(TInt aChannelId); + void NegotiateChannel(TInt aChannelId, const TQoSParameters& aParams, CExtensionPolicy& aPolicy, MQoSNegotiateEvent& aNotify); + void Join(TInt aChannelId, CFlowContext& aFlow, MQoSNegotiateEvent& aNotify); + void Leave(TInt aChannelId, CFlowContext& aFlow, MQoSNegotiateEvent& aNotify); + TInt Configure(TUint aLevel, TUint aName, TDes8& aOption, TAny* aSource=0); + void Identify(TServerProtocolDesc* aProtocolDesc)const; + //lint -e{1411} It doesn't matter that CProtocolBase:Identify() looks similar + static void Identify(TServerProtocolDesc& aDesc); + TInt Send(RMBufChain& buf, CProtocolBase* aSourceProtocol=NULL); + void InterfaceAttached(const TDesC& aName, CNifIfBase *aIf); + void InterfaceDetached(const TDesC& aName, CNifIfBase *aIf); + void Unbind(CProtocolBase* aProtocol, TUint aId = 0); + + TInt GetDefaultParameters(TQoSRequested& aParameters, TUint32 aIapId); + CFlowData* FindFlow(const CFlowContext* aFlow); + + inline CNifManager* IfManager(); + inline MEventInterface* QoSEvent(); + inline TUint FlowCount() const; + inline MTimeoutManager* TimeoutManager() const; + inline const TConfigurableOptions& Options() const; + +protected: + CModuleGuqos(); + void ConstructL(); + +private: + MEventInterface *iNotify; + + CFlowData* NewFlowL(CFlowContext& aFlow, CNif& aNif); + void ReadConfigOptions(); + +private: + TConfigurableOptions iOptions; // Ini options. + TUint iFlowCount; + CNifManager* iIfManager; // interface manager + MTimeoutManager* iTimeoutManager; // Timeout manager + CFlowData* iList; // All flows. + }; + + +// Inline methods +inline CNifManager* CModuleGuqos::IfManager() + { return iIfManager; }; + +inline MEventInterface* CModuleGuqos::QoSEvent() + { return iNotify; } + +inline TUint CModuleGuqos::FlowCount() const + { return iFlowCount;}; + +inline MTimeoutManager* CModuleGuqos::TimeoutManager() const + { return iTimeoutManager; } + +inline const TConfigurableOptions& CModuleGuqos::Options() const + { return iOptions; } + +typedef TSglQueIter TNifIter; + +#endif