networkcontrol/qoslib/include/qoslib_internal.h
changeset 0 af10295192d8
--- /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