diff -r 000000000000 -r af10295192d8 networkcontrol/qosfwconfig/qos/inc/policies.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkcontrol/qosfwconfig/qos/inc/policies.h Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,148 @@ +// 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: +// @file policies.h +// This header file contain the classes that handle qos policies +// @internalTechnology +// @released +// + +#ifndef __POLICIES_H__ +#define __POLICIES_H__ + +#include "pfqosparser.h" + +/** + * Modulespec + * + * @internalTechnology + */ +class CModuleSpec : public CBase + { +public: + static CModuleSpec* NewL(const TDesC& aFileName, const TDesC& aModuleName); + static CModuleSpec* NewL(const TPfqosModule& aModule); + ~CModuleSpec(); + + inline TUint ProtocolId() const; + inline void SetProtocolId(TUint aProtocolId); + inline TUint32 Flags() const; + inline void SetFlags(TUint32 aFlags); + inline const TDesC& FileName() const; + inline const TDesC& Name() const; + inline CExtension* PolicyData(); + + TDblQueLink iDLink; + +private: + CModuleSpec(); + void ContructL(const TPfqosModule& aModule); + void ContructL(const TDesC& aFileName, const TDesC& aModuleName); + +private: + TName iName; // Module name + TFileName iFileName; // Filename of DLL module + TUint32 iFlags; // Module flags + TUint iProtocolId; // Needed for NewProtocolL() + CExtension* iExtension; // Config data + }; + +// Inline methods +/** @internalTechnology */ +inline TUint CModuleSpec::ProtocolId() const + { return iProtocolId; }; + +/** @internalTechnology */ +inline void CModuleSpec::SetProtocolId(TUint aProtocolId) + { iProtocolId = aProtocolId; } + +/** @internalTechnology */ +inline TUint32 CModuleSpec::Flags() const + { return iFlags; }; + +/** @internalTechnology */ +inline void CModuleSpec::SetFlags(TUint32 aFlags) + { iFlags = aFlags; }; + +/** @internalTechnology */ +inline const TDesC& CModuleSpec::FileName() const + { return iFileName; }; + +/** @internalTechnology */ +inline const TDesC& CModuleSpec::Name() const + { return iName; }; + +/** @internalTechnology */ +inline CExtension* CModuleSpec::PolicyData() + { return iExtension; }; + + +/** + * Modulespec policy + * + * @internalTechnology + */ +class CModuleSelector : public CSelectorBase + { +public: + CModuleSelector(TPfqosMessage& aMsg); + CModuleSelector(CSelectorBase& aSel); + ~CModuleSelector(); + + void AddModuleSpec(CModuleSpec& aModule); + void RemoveModuleSpec(CModuleSpec* aModule); + CModuleSpec* FindModuleSpec(TUint aProtocolId); + inline TDblQue& GetModuleList(); + +protected: + TDblQue iModules; + }; + +// Inline methods +/** @internalTechnology */ +inline TDblQue& CModuleSelector::GetModuleList() + { return iModules; }; + + +/** + * Flowspec policy + * + * @internalTechnology + */ +class CPolicySelector : public CSelectorBase + { +public: + CPolicySelector(TPfqosMessage& aMsg); + CPolicySelector(CSelectorBase& aSel); + ~CPolicySelector(); + void SetQoSParameters(const TQoSParameters& aSpec) { iQoS = aSpec; }; + void SetQoSParameters(const TPfqosFlowSpec& aSpec); + inline const TQoSParameters& QoSParameters() const; + +private: + TQoSParameters iQoS; + }; + +// Inline methods +/** @internalTechnology */ +inline const TQoSParameters& CPolicySelector::QoSParameters() const + { return iQoS; }; + + +// Internal help function for logging only (defining this +// always should not cause a problem in release build, becuase +// it's neiter defined nor used). +extern void DumpSelector(const CSelectorBase& aSelector); + + +#endif