networkcontrol/qosfwconfig/qos/inc/policies.h
changeset 0 af10295192d8
--- /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<CModuleSpec>& GetModuleList();
+
+protected:
+	TDblQue<CModuleSpec> iModules;
+	};
+
+// Inline methods
+/** @internalTechnology */
+inline TDblQue<CModuleSpec>& 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