diff -r 000000000000 -r af10295192d8 networkcontrol/qoslib/include/qoslib_internal.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkcontrol/qoslib/include/qoslib_internal.h Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,351 @@ +/** +* Copyright (c) 1997-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: +* This file defines the generic QoS internal API interface. +* +* +*/ + + + +/** + @file qoslib_internal.h + @internalTechnology + @released + +*/ + + +#ifndef __QOSLIB_INTERNAL_H__ +#define __QOSLIB_INTERNAL_H__ +#include + +/** +This class contains the generic QoS parameters and optional extensions. + +*/ +/* + * These methods are valid for Symbian OS 9.0 and onwards. + */ +class CQoSParameters : public CBase +{ +public: + /** + * Constructor. + */ + IMPORT_C CQoSParameters(); + + /** + * Destructor. + */ + IMPORT_C ~CQoSParameters(); + + /** + * Sets the bandwidth for uplink direction. Bandwidth defines the requested transfer rate that the + * application requests. Bandwidth must be > 0. + * + * @param aBandwidth Value (bytes/second) to which to set the bandwidth for uplink direction. + */ + IMPORT_C void SetUplinkBandwidth(TInt aBandwidth); + + /** + * Sets the maximum burst size for uplink direction. Maximum burst size defines the burst size that the + * application might send. Maximum burst size must be > 0. + * + * @param aSize Value (bytes) to which to set the maximum burst size for uplink direction. + */ + IMPORT_C void SetUpLinkMaximumBurstSize(TInt aSize); + + /** + * Sets the maximum packet size for uplink direction. + * + * @param aMaxSize Value (bytes) to which to set the maximum packet size for uplink direction. + */ + IMPORT_C void SetUpLinkMaximumPacketSize(TInt aMaxSize); + + /** + * Sets the average packet size for uplink direction. Average packet size is used + * when doing traffic policing and estimating effect of protocol headers. + * The average packet size must be <= maximum packet size. + * + * @param aSize Value (bytes) to which to set the average packet size for uplink direction. + */ + IMPORT_C void SetUpLinkAveragePacketSize(TInt aSize); + + /** + * Sets the requested delay for uplink direction. + * + * @param aDelay Value (ms) to which to set the delay for uplink direction. + */ + IMPORT_C void SetUpLinkDelay(TInt aDelay); + + /** + * Sets the priority for uplink direction. Priority can be used to prioritise between traffic + * flows inside the terminal. + * + * @param aPriority Value (0-7) to which to set the priority for uplink direction. 0 is the highest priority, + * 7 is lowest. + */ + IMPORT_C void SetUpLinkPriority(TInt aPriority); + + /** + * Returns the bandwidth for uplink direction. Bandwidth defines the requested transfer rate that the + * application requests. + * + * @return Current bandwidth for uplink direction (bytes/second). + */ + IMPORT_C TInt GetUplinkBandwidth() const; + + /** + * Returns the maximum burst size for uplink direction. Maximum burst size defines the burst size that the + * application might send. + * + * @return Current maximum burst size for uplink direction (bytes). + */ + IMPORT_C TInt GetUpLinkMaximumBurstSize() const; + + /** + * Returns the maximum packet size for uplink direction. + * + * @return Current maximum packet size for uplink direction (bytes). + */ + IMPORT_C TInt GetUpLinkMaximumPacketSize() const; + + /** + * Returns the average packet size for uplink direction. Average packet size is used + * when doing traffic policing and estimating effect of protocol headers. + * + * @return Current average packet size for uplink direction (bytes). + */ + IMPORT_C TInt GetUpLinkAveragePacketSize() const; + + /** + * Returns the delay for uplink direction. + * + * @return Currrent delay for uplink direction (ms). + */ + IMPORT_C TInt GetUpLinkDelay() const; + + /** + * Returns the priority for uplink direction. Priority can be used to prioritise between traffic + * flows inside the terminal. + * + * @return Current priority for uplink direction. 0 is the highest priority, 7 is lowest. + */ + IMPORT_C TInt GetUpLinkPriority() const; + + /** + * Sets the bandwidth for downlink direction. Bandwidth defines the requested transfer rate that the + * application requests. Bandwidth must be > 0. + * + * @param aBandwidth Value (bytes/second) to which to set the bandwidth for downlink direction. + */ + IMPORT_C void SetDownlinkBandwidth(TInt aBandwidth); + + /** + * Sets the maximum burst size for downlink direction. Maximum burst size defines the burst size that the + * application might send. Maximum burst size must be > 0. + * + * @param aSize Value (bytes) to which to set the maximum burst size for downlink direction. + */ + IMPORT_C void SetDownLinkMaximumBurstSize(TInt aSize); + + /** + * Sets the maximum packet size for downlink direction. + * + * @param aMaxSize Value (bytes) to which to set the maximum packet size for downlink direction. + */ + IMPORT_C void SetDownLinkMaximumPacketSize(TInt aMaxSize); + + /** + * Sets the average packet size for downlink direction. Average packet size is used as the + * smallest packet size when doing traffic policing and estimating effect of protocol headers. + * The average packet size must be <= maximum packet size. + * + * @param aSize Value (bytes) to which to set the average packet size for downlink direction. + */ + IMPORT_C void SetDownLinkAveragePacketSize(TInt aSize); + + /** + * Sets the requested delay for downlink direction. + * + * @param aDelay Value (ms) to which to set the delay for downlink direction. + */ + IMPORT_C void SetDownLinkDelay(TInt aDelay); + + /** + * Sets the priority for downlink direction. Priority can be used to prioritise between traffic + * flows inside the terminal. + * + * @param aPriority Value (0-7) to which to set the priority for downlink direction. 0 is the highest priority, + * 7 is lowest. + */ + IMPORT_C void SetDownLinkPriority(TInt aPriority); + + /** + * Returns the bandwidth for downlink direction. Bandwidth defines the requested transfer rate that the + * application requests. + * + * @return Current bandwidth for downlink direction (bytes/second). + */ + IMPORT_C TInt GetDownlinkBandwidth() const; + + /** + * Returns the maximum burst size for downlink direction. Maximum burst size defines the burst size that the + * application might send. + * + * @return Current maximum burst size for downlink direction (bytes). + */ + IMPORT_C TInt GetDownLinkMaximumBurstSize() const; + + /** + * Returns the maximum packet size for downlink direction. + * + * @return Current maximum packet size for downlink direction (bytes). + */ + IMPORT_C TInt GetDownLinkMaximumPacketSize() const; + + /** + * Returns the average packet size for downlink direction. Average packet size is used as the + * smallest packet size when doing traffic policing and estimating effect of protocol headers. + * + * @return Current average packet size for downlink direction (bytes). + */ + IMPORT_C TInt GetDownLinkAveragePacketSize() const; + + /** + * Returns the delay for downlink direction. + * + * @return Currrent delay for downlink direction (ms). + */ + IMPORT_C TInt GetDownLinkDelay() const; + + /** + * Returns the priority for downlink direction. Priority can be used to prioritise between traffic + * flows inside the terminal. + * + * @return Current priority for downlink direction. 0 is the highest priority, 7 is lowest. + */ + IMPORT_C TInt GetDownLinkPriority() const; + + /** + * Sets the name of the flowspec. This allows application to specify a user friendly name for a flowspec. + * + * @param aName The name for the flowspec. Maximum length for the name is KMaxName. + * @return KErrNone if maximum length is <= KMaxName, otherwise KErrTooBig. + */ + IMPORT_C void SetName(const TName& aName); + + /** + * Sets the adaptation mode. If the application is willing to accept lower QoS than requested, + * it should set the adapt mode on. By default adapt mode is not set. + * + * @param aCanAdapt The value for adapt mode. + */ + IMPORT_C void SetAdaptMode(TBool aCanAdapt); + + /** + * Sets the header mode. If the application wants QoS Framework to include network and transport layer + * header values in bitrate calcutaions or not. By default the mode is set to include the headers in + * the calculations. Protocols such as RTSP or SIP, which already include the header sizes in their + * calculations will want to alter the mode so that header values are not included in calculations twice. + * + * @param aHeadersIncluded The value for the header mode. + */ + IMPORT_C void SetHeaderMode(TBool aHeadersIncluded); + + + /** + * Returns the name of the flowspec. + * + * @return Current name of the flowspec. + */ + IMPORT_C const TName& GetName() const; + + /** + * Returns the adaptation mode. + * + * @return aCanAdapt Current value for adapt mode. + */ + IMPORT_C TBool AdaptMode() const; + + /** + * Returns the headers included mode. + * + * @return aHeadersIncluded Current value for header included mode. + */ + IMPORT_C TBool GetHeaderMode() const; + + /** + * Copies the parameters and extensions from aPolicy into this object. + * + * @param aPolicy Contains the CQoSParameters object that is copied into this object. + * @exception Leaves if there is no memory available for extensions. + */ + IMPORT_C void CopyL(CQoSParameters& aPolicy); + + /** + * Copies the extension into the list of extensions. If there already exists an extension with the + * same type, it is replaced. + * + * @param aExtension The extension that is added to the list of extenstions. + * @exception Leaves if there is no memory available for the extension. + */ + IMPORT_C TInt AddExtensionL(CExtensionBase& aExtension); + + /** + * Removes the extension with extension type aType from the list of extensions. + * + * @param aType The type of extension that is removed from the list of extensions. + * @return KErrNone if the extension is found, othewise KErrNotFound. + */ + IMPORT_C TInt RemoveExtension(TInt aType); + + /** + * Returns an extension with extension type aType. + * + * @param aType The type of extension that is searched from the list of extensions. + * @return A pointer to an extension if the extension is found, othewise NULL. + */ + IMPORT_C CExtensionBase* FindExtension(TInt aType); + + /** + * Returns a list of extensions that have been added to this object. + * + * @return A list of extensions. + */ + IMPORT_C TQoSExtensionQueue& Extensions(); + + IMPORT_C TInt GetDownLinkDelayVariation() const; + + IMPORT_C TInt GetUpLinkDelayVariation() const; + + IMPORT_C void SetDownLinkDelayVariation(TInt aVariation); + + IMPORT_C void SetUpLinkDelayVariation(TInt aVariation); +private: + /** Generic QoS parameters. */ + TQoSParameters iQoS; + /** A list of extensions. */ + TQoSExtensionQueue iExtensionList; + // Member variable iName was taken into use temporarily + TName iName; + friend class CQoSMan; + friend class CPolicy; + friend class CQoSRequestBase; +}; + + + +#endif