--- /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 <networking/qosparameters.h>
+
+/**
+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