diff -r 000000000000 -r af10295192d8 networkcontrol/pfqoslib/inc/pfqoslib.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkcontrol/pfqoslib/inc/pfqoslib.h Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,267 @@ +// 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 pfqoslib.h +// Header file for PF_QOS messages +// @internalTechnology +// @released +// + +#ifndef __PFQOSLIB_H__ +#define __PFQOSLIB_H__ + +#include +#include +#include + +#include +#include + +class CSelectorBase; + +/** + * Map the basic PFQOS_MSG V1 structures into Classes with + * constructors for initialized content. + * + * @internalTechnology + */ +class T_pfqos_msg : public pfqos_msg + { + public: + IMPORT_C T_pfqos_msg(TUint8 aMsgType, TUint32 aSeq = 0); + }; + +/** @internalTechnology */ +class T_pfqos_selector : public pfqos_selector + { + public: + IMPORT_C T_pfqos_selector(CSelectorBase* aSelector); + }; + +/** @internalTechnology */ +class T_pfqos_address : public pfqos_address + { + public: + IMPORT_C T_pfqos_address(TUint aType, TUint16 aPortMax); + }; + +/** @internalTechnology */ +class T_pfqos_module : public pfqos_modulespec + { + public: + IMPORT_C T_pfqos_module(TUint aProtocolId, TUint32 aFlags, const TDesC& aName, const TDesC& aPath, TInt aDataLen); + }; + +/** @internalTechnology */ +class T_pfqos_flowspec : public pfqos_flowspec + { + public: + IMPORT_C T_pfqos_flowspec(const TQoSParameters& aParameters); + }; + +/** @internalTechnology */ +class T_pfqos_event : public pfqos_event + { + public: + IMPORT_C T_pfqos_event(TUint8 aType, TUint16 aEventType, TUint16 aValue); + }; + +/** @internalTechnology */ +class T_pfqos_channel : public pfqos_channel + { + public: + IMPORT_C T_pfqos_channel(TUint32 aChannelId); + }; + +/** @internalTechnology */ +class T_pfqos_configure : public pfqos_configure + { + public: + IMPORT_C T_pfqos_configure(TUint16 aProtocolId); + }; + +/** + * Internal representation of PfqosMessage + * + * @internalTechnology + */ +class TPfqosBase + { + public: + const struct pfqos_msg *iMsg; + IMPORT_C TPfqosBase(); + IMPORT_C TUint Length() const; + IMPORT_C TInt ByteStream(RMBufChain &aPacket, TInt aTotal) const; + }; + +/** @internalTechnology */ +class TPfqosSelector + { + public: + const struct pfqos_selector *iExt; + IMPORT_C TPfqosSelector(); + IMPORT_C TUint Length() const; + IMPORT_C TInt ByteStream(RMBufChain &aPacket, TInt aOffset) const; + IMPORT_C TInt GetUid(TCheckedUid& aUid); + }; + +/** @internalTechnology */ +class TPfqosAddress + { + public: + const struct pfqos_address *iExt; + const TInetAddr *iAddr; + const TInetAddr *iPrefix; + IMPORT_C TPfqosAddress(); + IMPORT_C TUint Length() const; + IMPORT_C TInt ByteStream(RMBufChain &aPacket, TInt aOffset) const; + }; + +class CExtension; + +/** @internalTechnology */ +class TPfqosModule + { + public: + const struct pfqos_modulespec *iExt; + TPtrC8 iData; + IMPORT_C TPfqosModule(); + IMPORT_C TUint Length() const; + IMPORT_C TInt ByteStream(RMBufChain &aPacket, TInt aOffset) const; + TSglQueLink iNext; + }; + +/** @internalTechnology */ +class TPfqosFlowSpec + { + public: + const struct pfqos_flowspec *iExt; + IMPORT_C TPfqosFlowSpec(); + IMPORT_C TUint Length() const; + IMPORT_C TInt ByteStream(RMBufChain &aPacket, TInt aOffset) const; + }; + +/** @internalTechnology */ +class TPfqosEvent + { + public: + const struct pfqos_event *iExt; + IMPORT_C TPfqosEvent(); + IMPORT_C TUint Length() const; + IMPORT_C TInt ByteStream(RMBufChain &aPacket, TInt aOffset) const; + }; + +/** @internalTechnology */ +class TPfqosChannel + { + public: + struct pfqos_channel *iExt; + IMPORT_C TPfqosChannel(); + IMPORT_C TUint Length() const; + IMPORT_C TInt ByteStream(RMBufChain &aPacket, TInt aOffset) const; + }; + +/** @internalTechnology */ +class TPfqosConfigure + { + public: + const struct pfqos_configure *iExt; + IMPORT_C TPfqosConfigure(); + IMPORT_C TUint Length() const; + IMPORT_C TInt ByteStream(RMBufChain &aPacket, TInt aOffset) const; + }; + +/** @internalTechnology */ +class TPfqosConfigFile + { + public: + const struct pfqos_config_file *iExt; + IMPORT_C TPfqosConfigFile(); + IMPORT_C TUint Length() const; + IMPORT_C TInt ByteStream(RMBufChain &aPacket, TInt aOffset) const; + }; + +/** @internalTechnology */ +class CPfqosPolicyData : public CBase + { + public: + IMPORT_C ~CPfqosPolicyData(); + IMPORT_C static CPfqosPolicyData* NewL(TInt aType); + IMPORT_C static CPfqosPolicyData* NewL(TInt aType, const TUint8 *aBuf,TInt aLength); + IMPORT_C TUint Length() const; + IMPORT_C TInt Size() const; + IMPORT_C void CopyL(const TUint8 *aBuf,TInt aLength); + IMPORT_C TDesC8& Data(); + IMPORT_C TInt Type(); + IMPORT_C TInt ByteStream(RMBufChain &aPacket, TInt aOffset) const; + + TSglQueLink iNext; + + private: + + IMPORT_C CPfqosPolicyData(TInt aType); + IMPORT_C void ConstructL(); + TInt iType; + TPtr8 iBufPtr; + HBufC8* iBuf; + }; + + + +/** + * Internal representation of PF_QOS message + * + * This class is either misnamed (should not be a T-class) or + * misdesigned. The instance of this object owns dynamically + * allocated heap objects in member variables iModuleList and + * iExtentions. Thus, the destructor of this class must always + * be executed. + * + * @internalTechnology + */ +class TPfqosMessage + { + public: + IMPORT_C TPfqosMessage(const TDesC8& aMsg); + IMPORT_C TPfqosMessage(); + IMPORT_C ~TPfqosMessage(); + IMPORT_C void AddModuleL(T_pfqos_module& aModule, const TDesC8& aConfigData); + IMPORT_C void AddExtensionL(const TDesC8& aExtension, TInt aType); + IMPORT_C TUint ExtensionLength(); + IMPORT_C TUint ModuleLength(); + IMPORT_C TUint16 Length64(); + IMPORT_C void ByteStreamL(RMBufChain &aPacket); + IMPORT_C void Add(TPfqosModule& aModule); + IMPORT_C void AddExtension(CPfqosPolicyData& aExtension); + IMPORT_C TInt SetQoSParameters(TQoSParameters& aParameters) const; + IMPORT_C void RemovePolicyData(); // Remove all policy data (flowspec, modules, extensions, event, configure) + + public: + TInt iError; + TPfqosBase iBase; + TPfqosSelector iSelector; + TPfqosAddress iSrcAddr; + TPfqosAddress iDstAddr; + TPfqosFlowSpec iFlowSpec; + TPfqosEvent iEvent; + TPfqosChannel iChannel; + TPfqosConfigure iConfigure; + TPfqosConfigFile iConfigFile; + TUint iNumModules; + TSglQue iModuleList; + TUint iNumExtensions; + TSglQue iExtensions; + }; + + +#endif