diff -r 6b1d113cdff3 -r 6638e7f4bd8f telephonyprotocols/gprsumtsqosprt/inc/context.h --- a/telephonyprotocols/gprsumtsqosprt/inc/context.h Mon May 03 13:37:20 2010 +0300 +++ b/telephonyprotocols/gprsumtsqosprt/inc/context.h Thu May 06 15:10:38 2010 +0100 @@ -1,191 +1,191 @@ -// 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 __CONTEXT_H__ -#define __CONTEXT_H__ - -#include // ..for TContextConfig, etc.. -#include - -#include "parameters.h" // ..for TPacketFilter, etc.. - -class CRequestBase; -class TFTInfo; -class RExtensionData; -class CFlowData; -class CNif; - -/* - * The returned sblp sub error should be between 1-7 in the PCO buffer - * see TS 29.207, annex D for details - */ -enum TSblpSubErrorRange - { - ESblpSubErrorValueMinimum = 1, - ESblpSubErrorValueMaximum = 7 - }; - - -const TUint KMaxPacketFilters = 8; - -class RContextConfig : public TContextConfig - /** - * Add some access functions to the TContextConfig - */ - { -public: - // Allow access to TFTInfo without needing a copy - inline TTFTInfo& TFTInfo() { return iTFTInfo; } - }; - -class CPdpContext : public CBase - { - friend class CNif; - friend class CRequestBase; -public: - - static CPdpContext* NewL(CNif& aNifItem, const TContextType& aType, TUint8 aContextId); - - ~CPdpContext(); - - TInt Activate(); - void ActivateReply(CRequestBase* aRequest, const TContextParameters& aParams); - - TInt ModifyActive(); - void ModifyActiveReply(CRequestBase* aRequest, const TContextParameters& aParams); - - TInt SetQoS(); - TInt SetQoS(const TQoSParameters& aGeneric, const TQoSRequested& aUmts); - void SetQoSReply(CRequestBase* aRequest, const TContextParameters& aParams); - - TInt ModifyTft(const TTFTOperationCode& aTFTOperationCode, const TTFTInfo& aTft); - void ModifyTftReply(CRequestBase* aRequest, const TContextParameters& aParams); - - void ParametersChangedEvent(const TContextParameters& aParams); - void DeleteEvent(const TContextParameters& aParams); - - TInt Delete(); - TInt AddPacketFilter(CFlowData& aFlow, TTFTInfo& aTft); - TInt RemovePacketFilter(TTFTInfo& aTft, const CFlowData* aFlow = NULL); - - void Block(); - void UnBlock(); - inline TUint IsFlowBlocked() const; - - void FlowAttached(); - void FlowDetached(); - void SetContextStatus(const RPacketContext::TContextStatus& aStatus); - - TInt GetQoSRanking(); - TBool IsPrimary() const; - - inline TInt RefCount() const; - inline TInt ContextId() const; - inline TInt ChannelId() const; - inline void SetChannelId(TInt aChannelId); - inline CNif& Nif(); - inline const RExtensionData& Extension() const; - inline TBool ContextActive() const; - inline TBool ContextInactive() const; - inline RPacketContext::TContextStatus ContextStatus() const; - inline TInt TrafficClass() const; - inline TDblQue& Flows(); - inline TContextType ContextType() const; - -protected: - TSglQueLink iNext; - - CPdpContext(CNif& aNifItem, TContextType aType, TUint8 aContextId); - static TBool CheckSblpErrorInPcoBuffer(const TContextParameters& aParams, TUint8& parsedSblpErrorValue); - - void ConstructL(); - void GenerateEvent(TUint aEventType, const TContextParameters& aParams); - TBool MatchPacketFilter(const TPacketFilter& aFlow, const TPacketFilter& aFilter) const; - TInt FindPacketFilterId(); - void Update(const TContextParameters& aParams); - -private: - void NotifyBlockingState(TUint aOldBlocking); - - TInt iRefs; // count of attached flows (just for information) - - // Blocked/Unblocked status as indicated by NIF. If NIF reports - // "blocked", the context stays blocked until NIF reports "unblock" - // This is totally independent of context status and flow blocking: - // flows are blocked if context is "blocked" *OR* status is not active. - TUint8 iBlocked; - - TUint8 iContextId; - TInt iChannelId; - TContextType iContextType; - RPacketContext::TContextStatus iContextStatus; - - CNif& iNifItem; // Nif interface - TDblQue iFlows; // Flow list - - // Currently Active filters. - TInt iNumFilters; - TPacketFilter iFilters[KMaxPacketFilters]; - - // Current parameters/configuration - TQoSNegotiated iNegotiated; -public: - // Timeout handling - void Timeout(); - RTimeout iTimeout; - }; - -// inline methods -inline TContextType CPdpContext::ContextType() const - { return iContextType; } - -inline TInt CPdpContext::ContextId() const - { return iContextId; } - -inline TInt CPdpContext::ChannelId() const - { return iChannelId; } - -inline void CPdpContext::SetChannelId(TInt aChannelId) - { iChannelId = aChannelId; } - -inline CNif& CPdpContext::Nif() - { return iNifItem; } - -inline TInt CPdpContext::RefCount() const - { return iRefs; } - -inline TBool CPdpContext::ContextActive() const - { return (iContextStatus == RPacketContext::EStatusActive); } - -inline TBool CPdpContext::ContextInactive() const - { return (iContextStatus == RPacketContext::EStatusInactive); } - -inline RPacketContext::TContextStatus CPdpContext::ContextStatus() const - { return iContextStatus; } - -inline TInt CPdpContext::TrafficClass() const - { return iNegotiated.iTrafficClass; } - -inline TDblQue& CPdpContext::Flows() - { return iFlows; } - -inline TUint CPdpContext::IsFlowBlocked() const - // Flows are blocked if either explicit blocking from NIF is on, - // or the context is not active. - { return iBlocked || !ContextActive(); } - -typedef TDblQueIter TDblFlowIter; - -#endif +// 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 __CONTEXT_H__ +#define __CONTEXT_H__ + +#include // ..for TContextConfig, etc.. +#include + +#include "parameters.h" // ..for TPacketFilter, etc.. + +class CRequestBase; +class TFTInfo; +class RExtensionData; +class CFlowData; +class CNif; + +/* + * The returned sblp sub error should be between 1-7 in the PCO buffer + * see TS 29.207, annex D for details + */ +enum TSblpSubErrorRange + { + ESblpSubErrorValueMinimum = 1, + ESblpSubErrorValueMaximum = 7 + }; + + +const TUint KMaxPacketFilters = 8; + +class RContextConfig : public TContextConfig + /** + * Add some access functions to the TContextConfig + */ + { +public: + // Allow access to TFTInfo without needing a copy + inline TTFTInfo& TFTInfo() { return iTFTInfo; } + }; + +class CPdpContext : public CBase + { + friend class CNif; + friend class CRequestBase; +public: + + static CPdpContext* NewL(CNif& aNifItem, const TContextType& aType, TUint8 aContextId); + + ~CPdpContext(); + + TInt Activate(); + void ActivateReply(CRequestBase* aRequest, const TContextParameters& aParams); + + TInt ModifyActive(); + void ModifyActiveReply(CRequestBase* aRequest, const TContextParameters& aParams); + + TInt SetQoS(); + TInt SetQoS(const TQoSParameters& aGeneric, const TQoSRequested& aUmts); + void SetQoSReply(CRequestBase* aRequest, const TContextParameters& aParams); + + TInt ModifyTft(const TTFTOperationCode& aTFTOperationCode, const TTFTInfo& aTft); + void ModifyTftReply(CRequestBase* aRequest, const TContextParameters& aParams); + + void ParametersChangedEvent(const TContextParameters& aParams); + void DeleteEvent(const TContextParameters& aParams); + + TInt Delete(); + TInt AddPacketFilter(CFlowData& aFlow, TTFTInfo& aTft); + TInt RemovePacketFilter(TTFTInfo& aTft, const CFlowData* aFlow = NULL); + + void Block(); + void UnBlock(); + inline TUint IsFlowBlocked() const; + + void FlowAttached(); + void FlowDetached(); + void SetContextStatus(const RPacketContext::TContextStatus& aStatus); + + TInt GetQoSRanking(); + TBool IsPrimary() const; + + inline TInt RefCount() const; + inline TInt ContextId() const; + inline TInt ChannelId() const; + inline void SetChannelId(TInt aChannelId); + inline CNif& Nif(); + inline const RExtensionData& Extension() const; + inline TBool ContextActive() const; + inline TBool ContextInactive() const; + inline RPacketContext::TContextStatus ContextStatus() const; + inline TInt TrafficClass() const; + inline TDblQue& Flows(); + inline TContextType ContextType() const; + +protected: + TSglQueLink iNext; + + CPdpContext(CNif& aNifItem, TContextType aType, TUint8 aContextId); + static TBool CheckSblpErrorInPcoBuffer(const TContextParameters& aParams, TUint8& parsedSblpErrorValue); + + void ConstructL(); + void GenerateEvent(TUint aEventType, const TContextParameters& aParams); + TBool MatchPacketFilter(const TPacketFilter& aFlow, const TPacketFilter& aFilter) const; + TInt FindPacketFilterId(); + void Update(const TContextParameters& aParams); + +private: + void NotifyBlockingState(TUint aOldBlocking); + + TInt iRefs; // count of attached flows (just for information) + + // Blocked/Unblocked status as indicated by NIF. If NIF reports + // "blocked", the context stays blocked until NIF reports "unblock" + // This is totally independent of context status and flow blocking: + // flows are blocked if context is "blocked" *OR* status is not active. + TUint8 iBlocked; + + TUint8 iContextId; + TInt iChannelId; + TContextType iContextType; + RPacketContext::TContextStatus iContextStatus; + + CNif& iNifItem; // Nif interface + TDblQue iFlows; // Flow list + + // Currently Active filters. + TInt iNumFilters; + TPacketFilter iFilters[KMaxPacketFilters]; + + // Current parameters/configuration + TQoSNegotiated iNegotiated; +public: + // Timeout handling + void Timeout(); + RTimeout iTimeout; + }; + +// inline methods +inline TContextType CPdpContext::ContextType() const + { return iContextType; } + +inline TInt CPdpContext::ContextId() const + { return iContextId; } + +inline TInt CPdpContext::ChannelId() const + { return iChannelId; } + +inline void CPdpContext::SetChannelId(TInt aChannelId) + { iChannelId = aChannelId; } + +inline CNif& CPdpContext::Nif() + { return iNifItem; } + +inline TInt CPdpContext::RefCount() const + { return iRefs; } + +inline TBool CPdpContext::ContextActive() const + { return (iContextStatus == RPacketContext::EStatusActive); } + +inline TBool CPdpContext::ContextInactive() const + { return (iContextStatus == RPacketContext::EStatusInactive); } + +inline RPacketContext::TContextStatus CPdpContext::ContextStatus() const + { return iContextStatus; } + +inline TInt CPdpContext::TrafficClass() const + { return iNegotiated.iTrafficClass; } + +inline TDblQue& CPdpContext::Flows() + { return iFlows; } + +inline TUint CPdpContext::IsFlowBlocked() const + // Flows are blocked if either explicit blocking from NIF is on, + // or the context is not active. + { return iBlocked || !ContextActive(); } + +typedef TDblQueIter TDblFlowIter; + +#endif