networkcontrol/qoslib/include/qoslib.h
changeset 0 af10295192d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/qoslib/include/qoslib.h	Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,786 @@
+
+// Copyright (c) 2005-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:
+// qoslib.h - This file defines the generic QoS API interface.
+//
+
+#ifndef __QOSLIB_H__
+#define __QOSLIB_H__
+
+/**
+ * @file qoslib.h 
+ * 
+ * QoS API - This file defines the generic QoS API interface.
+ */
+
+#include <e32std.h>
+#include <in_sock.h>
+
+#include <networking/qos_extension.h>
+#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <networking/qoslib_internal.h>
+#endif
+
+class CQoSParameters;
+class CPolicy;
+
+/**
+ * Selector for QoS policies. The variables defined in TQoSSelector are used to find QoS policies
+ * for traffic flows. Not all variables have to be set, the application can specify the variables that it wants to.
+ * Note: TQoSSelector stores IPv4 addresses in "IPv4-mapped IPv6 address" format.
+ *
+ * @publishedPartner
+ * @released
+ */
+class TQoSSelector
+{
+public:
+    /**
+     * Constructor. Initialises all variables to unspecified values.
+     */
+    IMPORT_C TQoSSelector();
+
+    /**
+     * Compares if the selectors are equal.
+     *
+     * @param aSelector TQoSSelector object that is compared with this object.
+     * @return ETrue if selectors are equal to this object, otherwise EFalse.
+     */
+    IMPORT_C TInt operator==(const TQoSSelector& aSelector) const;
+
+    /**
+     * Compares if the selector matches aSocket. 
+     *
+     * @param aSocket RSocket that is compared with this object.
+     * @return ETrue if selector created from aSocket is equal to this object, otherwise EFalse.
+     */
+    IMPORT_C TBool Match(RSocket& aSocket) const;
+
+    /**
+     * Sets the addresses for selector.
+     *
+     * @param aSrcAddr Source address. Port must have value <= 65535 (0 is used as uspecified value for a port).
+     * @param aSrcAddrMask Source address mask. Port must have value <= 65535 (0 is used as uspecified value for a port).
+     * @param aDstAddr Destination address. Port must have value <= 65535 (0 is used as uspecified value for a port).
+     * @param aDstAddrMask Destination address mask. Port must have value <= 65535 (0 is used as uspecified value for a port).
+     * @param aProtocol Protocol id.
+     * @param aSrcPortMax Maximum source port. Must have value <= 65535 (0 is used as uspecified value for a port).
+     * @param aDstPortMax Maximum destination port. Must have value <= 65535 (0 is used as uspecified value for a port).
+     * @return KErrNone if parameters have valid values, otherwise KErrArgument.
+     */
+    IMPORT_C TInt SetAddr(const TInetAddr& aSrcAddr, const TInetAddr& aSrcAddrMask, const TInetAddr& aDstAddr, const TInetAddr& aDstAddrMask, TUint aProtocol, TUint aSrcPortMax, TUint aDstPortMax);
+
+    /**
+     * Sets the addresses for selector. RSocket is used to fetch addresses and ports for a selector. The resulting
+     * selector will match only for one socket. NOTE: RSocket::Connect() must be called before calling this method.
+     *
+     * @param aSocket RSocket object that is used to set the selector variables. Note: RSocket must be connected
+     * @return KErrNone if parameters have valid values, otherwise KErrArgument.
+     */
+    IMPORT_C TInt SetAddr(RSocket& aSocket);
+
+    /**
+     * Sets the source address for selector.
+     *
+     * @param aAddr Source address. Port must have value <= 65535 (0 is used as uspecified value for a port).
+     * @return KErrNone if parameters have valid values, otherwise KErrArgument.
+     */
+    IMPORT_C TInt SetSrc(const TInetAddr& aAddr);
+
+    /**
+     * Sets the destination address for selector.
+     *
+     * @param aAddr Source address. Port must have value <= 65535 (0 is used as uspecified value for a port).
+     * @return KErrNone if parameters have valid values, otherwise KErrArgument.
+     */
+    IMPORT_C TInt SetDst(const TInetAddr& aAddr);
+
+    /**
+     * Returns the current source address.
+     *
+     * @return Source address.
+     */
+    IMPORT_C TInetAddr GetSrc() const;
+
+    /**
+     * Returns the current destination address.
+     *
+     * @return Destination address.
+     */
+    IMPORT_C TInetAddr GetDst() const;
+
+    /**
+     * Sets the source address mask.
+     *
+     * @param aMask Source address mask. Port must have value <= 65535 (0 is used as uspecified value for a port).
+     * @return KErrNone if parameters have valid values, otherwise KErrArgument.
+     */
+    IMPORT_C TInt SetSrcMask(const TInetAddr& aMask);
+
+    /**
+     * Returns the current source address mask.
+     *
+     * @return Source address mask.
+     */
+    IMPORT_C TInetAddr GetSrcMask() const;
+
+    /**
+     * Sets the destination address mask.
+     *
+     * @param aMask Destination address mask. Port must have value <= 65535 (0 is used as uspecified value for a port).
+     * @return KErrNone if parameters have valid values, otherwise KErrArgument.
+     */
+    IMPORT_C TInt SetDstMask(const TInetAddr& aMask);
+
+    /**
+     * Returns the current destination address mask.
+     *
+     * @return Destination address mask.
+     */
+    IMPORT_C TInetAddr GetDstMask() const;
+
+    /**
+     * Sets the Internet access point identifier. 0 is used as unspecified value.
+     *
+     * @param aIapId Value to which to set the IapId.
+     */
+    IMPORT_C void SetIapId(TInt aIapId);
+
+    /**
+     * Returns the current Internet access point identifier.
+     *
+     * @return Internet access point identifier.
+     */
+    IMPORT_C TInt IapId() const;
+
+    /**
+     * Sets the protocol identifier. 0 is used as unspecified value.
+     *
+     * @param aProtocol Value to which to set the protocol id.
+     */
+    IMPORT_C void SetProtocol(TUint aProtocol);
+
+    /**
+     * Returns the current protocol identifier.
+     *
+     * @return Protocol identifier.
+     */
+    IMPORT_C TUint Protocol() const;
+
+    /**
+     * Sets the maximum source port. Port must have value <= 65535 (0 is used as unspecified value).
+     *
+     * @param aMaxPort Value to which to set maximum source port.
+     * @return KErrNone if aMaxPort has valid values, otherwise KErrArgument.
+     */
+    IMPORT_C TInt SetMaxPortSrc(TUint aMaxPort);
+
+    /**
+     * Sets the maximum destination port. Port must have value <= 65535 (0 is used as unspecified value).
+     *
+     * @param aMaxPort Value to which to set maximum destination port.
+     * @return KErrNone if aMaxPort has valid values, otherwise KErrArgument.
+     */
+    IMPORT_C TInt SetMaxPortDst(TUint aMaxPort);
+
+    /**
+     * Returns the maximum source port.
+     *
+     * @return Maximum source port.
+     */
+    IMPORT_C TUint MaxPortSrc() const;
+
+    /**
+     * Returns the maximum destination port.
+     *
+     * @return Maximum destination port.
+     */
+    IMPORT_C TUint MaxPortDst() const;
+
+private:
+    /** The source address. */
+    TInetAddr   iSrc;
+    /** The destination address. */
+    TInetAddr   iDst;
+    /** The source address mask. */
+    TInetAddr   iSrcMask;
+    /** The destination address mask. */
+    TInetAddr   iDstMask;
+    /** The protocol ID. */
+    TUint       iProtocol;
+    /** The maximum source port. */
+    TUint       iSrcPortMax;
+    /** The maximum destination port. */
+    TUint       iDstPortMax;
+    /** The Internet access point identifier. */
+    TUint       iIapId;
+};
+
+/**
+* @name QoS capabilities. 
+* 
+* These are used to notify the application as to the type of QoS support provided.
+* @publishedPartner
+* @released
+*/
+//@{
+/** End-to-end signalling is used, e.g. RSVP. */
+const TUint KQoSSignaled            = 0x0001;
+/** Signalling is used along some part of end-to-end path. */
+const TUint KQoSPartiallySignaled   = 0x0002;
+/** No signalling is used, e.g. DiffServ. */
+const TUint KQoSProvisioned         = 0x0004;
+//@}
+
+/**
+ * QoS event types
+ * @publishedPartner
+ * @released
+ */
+enum TQoSEvent
+    {
+    /** QoS request failed. */
+    EQoSEventFailure=1,
+    /** QoS request was successful. */
+    EQoSEventConfirm,
+    /** QoS parameters have changed. */
+    EQoSEventAdapt,
+    /** QoS channel is opened. */
+    EQoSEventChannel,
+    /** A socket is attached to a QoS channel. */
+    EQoSEventJoin,
+    /** A socket is detached from a QoS channel. */
+    EQoSEventLeave,
+    /** QoS policy was added to QoS policy database. */
+    EQoSEventAddPolicy,
+    /** QoS policy was searched from the QoS policy database. */
+    EQoSEventGetPolicy,
+    /** QoS policy was deleted. */
+    EQoSEventDeletePolicy,
+    /** QoS policy file was loaded. */
+    EQoSEventLoadPolicyFile,
+    /** QoS policy file was unloaded. */
+    EQoSEventUnloadPolicyFile
+    };
+
+/**
+ * Default mask for QoS events: all events are notified to the application.
+ * @publishedPartner
+ * @released
+ */
+const TUint KQoSEventAll = EQoSEventFailure | EQoSEventConfirm | EQoSEventAdapt | EQoSEventChannel | EQoSEventJoin | EQoSEventLeave | EQoSEventAddPolicy | EQoSEventGetPolicy | EQoSEventDeletePolicy | EQoSEventLoadPolicyFile | EQoSEventUnloadPolicyFile;
+
+/**
+ * Base class for QoS events.
+ *
+ * @publishedPartner
+ * @released
+ */
+class CQoSEventBase : public CBase
+{
+public:
+    /**
+     * Constructor. Sets the QoS event type.
+     *
+     * @param aEventType QoS event type (values defined in enum TQoSEvent).
+     */
+    IMPORT_C CQoSEventBase(TInt aEventType);
+
+    /**
+     * Returns the QoS event type.
+     *
+     * @return QoS event type (values defined in enum TQoSEvent).
+     */
+    IMPORT_C TInt EventType() const;
+
+private:
+    /** The QoS event type. */
+    TInt iEventType;
+};
+
+/**
+ * Class for EQoSEventConfirm event whereby a QoS request was successful
+ * 
+ * @publishedPartner
+ * @released
+ */
+class CQoSConfirmEvent : public CQoSEventBase
+{
+public:
+    /**
+     * Constructor. Sets the QoS parameters.
+     *
+     * @param aParameters QoS parameters.
+     */
+    IMPORT_C CQoSConfirmEvent(CQoSParameters& aParameters);
+
+    /**
+     * Returns the QoS parameters.
+     *
+     * @return QoS parameters.
+     */
+    IMPORT_C CQoSParameters* Parameters() const;
+
+private:
+    /** The address of the CQoSParameters parameter supplied during construction. */
+    CQoSParameters* iParameters; 
+};
+
+/**
+ * Class for EQoSEventFailure event whereby a QoS request failed
+ *
+ * @publishedPartner
+ * @released
+ */
+class CQoSFailureEvent : public CQoSEventBase
+{
+public:
+    /**
+     * Constructor. Sets the QoS parameters and reason code.
+     *
+     * @param aParameters QoS parameters.
+     * @param aReason Reason code specifies the success or failure of the request.
+     */
+    IMPORT_C CQoSFailureEvent(CQoSParameters& aParameters, TInt aReason);
+
+    /**
+     * Returns the QoS parameters.
+     *
+     * @return QoS parameters.
+     */
+    IMPORT_C CQoSParameters* Parameters() const;
+
+    /**
+     * Returns the reason code. Reason code specifies the success or failure of the request.
+     *
+     * @return Reason code.
+     */
+    IMPORT_C TInt Reason() const;
+
+private:
+    /** The address of the CQoSParameters parameter supplied during construction. */
+    CQoSParameters* iParameters;
+    /** The reason code that specifies the success or failure of the request. */
+    TInt iReason;
+};
+
+/**
+ * Class for EQoSEventAdapt event whereby the QoS parameters have changed
+ *
+ * @publishedPartner
+ * @released
+ */
+class CQoSAdaptEvent : public CQoSEventBase
+{
+public:
+    /**
+     * Constructor. Sets the QoS parameters and reason code.
+     *
+     * @param aParameters QoS parameters.
+     * @param aReason Reason code specifies the success or failure of the request.
+     */
+    IMPORT_C CQoSAdaptEvent(CQoSParameters& aParameters, TInt aReason);
+
+    /**
+     * Returns the QoS parameters.
+     *
+     * @return QoS parameters.
+     */
+    IMPORT_C CQoSParameters* Parameters() const;
+
+    /**
+     * Returns the reason code. Reason code specifies the success or failure of the request.
+     *
+     * @return Reason code.
+     */
+    IMPORT_C TInt Reason() const;
+
+private:
+    /** The address of the CQoSParameters parameter supplied during construction. */
+    CQoSParameters* iParameters;
+    /** The reason code that specifies the success or failure of the request. */
+    TInt iReason;
+};
+
+/**
+ * Class for EQoSEventChannel event whereby a QoS channel is opened
+ *
+ * @publishedPartner
+ * @released
+ */
+class CQoSChannelEvent : public CQoSEventBase
+{
+public:
+    /**
+     * Constructor. Sets the QoS parameters and reason code.
+     *
+     * @param aParameters QoS parameters.
+     * @param aReason Reason code specifies the success or failure of the request.
+     */
+    IMPORT_C CQoSChannelEvent(CQoSParameters* aParameters, TInt aReason);
+
+    /**
+     * Returns the QoS parameters.
+     *
+     * @return QoS parameters.
+     */
+    IMPORT_C CQoSParameters* Parameters() const;
+
+    /**
+     * Returns the reason code. Reason code specifies the success or failure of the request.
+     *
+     * @return Reason code. KErrNone if an existing channel was found, otherwise an error code.
+     */
+    IMPORT_C TInt Reason() const;
+
+private:
+    /** The address of the CQoSParameters parameter supplied during construction. */
+    CQoSParameters* iParameters;
+    /** The reason code that specifies the success or failure of the request. */
+    TInt iReason;
+};
+
+/**
+ * Class for EQoSEventJoin event whereby a socket is attached to a QoS channel
+ *
+ * @publishedPartner
+ * @released
+ */
+class CQoSJoinEvent : public CQoSEventBase
+{
+public:
+    /**
+     * Constructor. Sets the selector and reason code. Selector specifies the socket 
+     * that was attached to the QoS channel.
+     *
+     * @param aSelector Selector specifies the socket that was attached to the QoS channel.
+     * @param aReason Reason code specifies the success or failure of the request.
+     */
+    IMPORT_C CQoSJoinEvent(const TQoSSelector& aSelector, TInt aReason);
+
+    /**
+     * Returns the selector that was attached to the QoS channel.
+     *
+     * @return Selector that was attached to the QoS channel.
+     */
+    IMPORT_C const TQoSSelector& Selector() const;
+    
+    /**
+     * Returns the reason code. Reason code specifies the success or failure of the request.
+     *
+     * @return Reason code.
+     */
+    IMPORT_C TInt Reason() const;
+
+private:
+    /** The selector that specifies the socket that was attached to the QoS channel. */
+    TQoSSelector iSelector;
+    /** The reason code that specifies the success or failure of the request. */
+    TInt iReason;
+};
+
+/**
+ * Class for EQoSEventLeave event whereby a socket is detached from a QoS channel
+ *
+ * @publishedPartner
+ * @released
+ */
+class CQoSLeaveEvent : public CQoSEventBase
+{
+public:
+    /**
+     * Constructor. Sets the selector and reason code. Selector specifies the socket 
+     * that was detached from the QoS channel.
+     *
+     * @param aSelector Selector specifies the socket that was detached from the QoS channel.
+     * @param aReason Reason code specifies the success or failure of the request.
+     */
+    IMPORT_C CQoSLeaveEvent(const TQoSSelector& aSelector, TInt aReason);
+
+    /**
+     * Returns the selector that was detached from the QoS channel.
+     *
+     * @return Selector that was detached from the QoS channel.
+     */
+    IMPORT_C const TQoSSelector& Selector() const;
+
+    /**
+     * Returns the reason code. Reason code specifies the success or failure of the request.
+     *
+     * @return Reason code.
+     */
+    IMPORT_C TInt Reason() const;
+
+private:
+    /** The QoS channel selector. */
+    TQoSSelector iSelector;
+    /** The reason code that specifies the success or failure of the request. */
+    TInt iReason;
+};
+
+/**
+ * Class for EQoSEventAddPolicy event whereby a QoS policy was added to QoS policy database
+ *
+ * @publishedPartner
+ * @released
+ */
+class CQoSAddEvent : public CQoSEventBase
+{
+public:
+    /**
+     * Constructor. Sets the QoS parameters and reason code.
+     *
+     * @param aParameters QoS parameters.
+     * @param aReason Reason code specifies the success or failure of the request.
+     */
+    IMPORT_C CQoSAddEvent(CQoSParameters* aParameters, TInt aReason);
+
+    /**
+     * Returns the QoS parameters.
+     *
+     * @return QoS parameters.
+     */
+    IMPORT_C CQoSParameters* Parameters() const;
+
+    /**
+     * Returns the reason code. Reason code specifies the success or failure of the request.
+     *
+     * @return Reason code.
+     */
+    IMPORT_C TInt Reason() const;
+
+private:
+    /** The address of the CQoSParameters parameter supplied during construction. */
+    CQoSParameters* iParameters;
+    /** The reason code that specifies the success or failure of the request. */
+    TInt iReason;
+};
+
+/**
+ * Class for EQoSEventGetPolicy event whereby a QoS policy was searched from the 
+ * QoS policy database
+ *
+ * @publishedPartner
+ * @released
+ */
+class CQoSGetEvent : public CQoSEventBase
+{
+public:
+    /**
+     * Constructor. Sets the QoS parameters and reason code.
+     *
+     * @param aParameters QoS parameters.
+     * @param aReason Reason code specifies the success or failure of the request.
+     */
+    IMPORT_C CQoSGetEvent(CQoSParameters* aParameters, TInt aReason);
+
+    /**
+     * Returns the QoS parameters.
+     *
+     * @return QoS parameters.
+     */
+    IMPORT_C CQoSParameters* Parameters() const;
+    
+    /**
+     * Returns the reason code. Reason code specifies the success or failure of the request.
+     *
+     * @return Reason code.
+     */
+    IMPORT_C TInt Reason() const;
+
+private:
+    /** The address of the CQoSParameters parameter supplied during construction. */
+    CQoSParameters* iParameters;
+    /** The reason code that specifies the success or failure of the request. */
+    TInt iReason;
+};
+
+/**
+ * Class for EQoSEventDeletePolicy event whereby a QoS policy was deleted
+ *
+ * @publishedPartner
+ * @released
+ */
+class CQoSDeleteEvent : public CQoSEventBase
+{
+public:
+    /**
+     * Constructor. Sets the reason code indicating the success or failure of the request.
+     *
+     * @param aReason Reason code.
+     */
+    IMPORT_C CQoSDeleteEvent(TInt aReason);
+
+    /**
+     * Returns the reason code. Reason code specifies the success or failure of the request.
+     *
+     * @return Reason code.
+     */
+    IMPORT_C TInt Reason() const;
+
+private:
+    /** The reason code specifies the success or failure of the request. */
+    TInt iReason;
+};
+
+/**
+ * Class for EQoSEventLoadPolicyFile and EQoSEventUnloadPolicyFile events whereby 
+ * policy files are loaded or unloaded
+ *
+ * @publishedPartner
+ * @released
+ */
+class CQoSLoadEvent : public CQoSEventBase
+{
+public:
+    /**
+     * Constructor.
+     *
+     * @param aEvent Sets the event type (EQoSEventLoadPolicyFile or EQoSEventUnloadPolicyFile).
+     * @param aReason Reason code.
+     * @param aFileName The name of the policy file.
+     */
+    IMPORT_C CQoSLoadEvent(const TQoSEvent& aEvent, TInt aReason, const TDesC& aFileName);
+
+    /**
+     * Returns the name of the policy file. 
+     *
+     * @return The name of the policy file.
+     */
+    IMPORT_C const TFileName& FileName() const;
+
+    /**
+     * Returns the reason code. Reason code specifies the success or failure of the request.
+     *
+     * @return Reason code.
+     */
+    IMPORT_C TInt Reason() const;
+
+private:
+    /** The reason code that specifies the success or failure of the request. */
+    TInt iReason;
+    /** The name of the QoS policy file. */
+    TFileName iFileName;
+};
+
+/**
+ * An interface to catch QoS events.
+ *
+ * @publishedPartner
+ * @released
+ */
+class MQoSObserver
+{
+public:
+    /**
+    This method is called by the QoS API when a QoS event occurs.
+    
+    @publishedPartner
+    @released
+    @capability NetworkServices Restrict QoS operations in similar way as 
+    normal socket operations.
+    @param aQoSEvent QoS event class.
+    */ 
+    virtual void Event(const CQoSEventBase& aQoSEvent)=0;
+};
+
+/**
+ * An interface to manage QoS policies and QoS policy files.  RQoSPolicy::Open must always be called before 
+ * any other methods in the RQoSPolicy can be called. Note that only one request can be pending at once 
+ * (QoS event should be received before issuing next request).
+ *
+ * @publishedPartner
+ * @released
+ */
+class RQoSPolicy
+{
+public:
+    IMPORT_C RQoSPolicy();
+    IMPORT_C ~RQoSPolicy();
+
+    /**
+     * RQoSPolicy::Open must always be called before any other method can be used.
+     * Specifies the selector for a QoS policy.
+     *
+     * @param aSelector Selector for the QoS policy.
+     * @return KErrNone if everything is ok, != KErrNone is the QoS channel cannot be opened.
+     */
+    IMPORT_C TInt Open(const TQoSSelector& aSelector);
+
+    /**
+     * Sets the QoS parameters for the QoS policy. CQoSAddEvent event is received
+     * asynchronously to indicate the success of failure of the request.
+     *
+     * @param aPolicy QoS parameters.
+     * @return KErrNone if request was issued, != KErrNone if there was an error. 
+     */
+    IMPORT_C TInt SetQoS(CQoSParameters& aPolicy);
+
+    /**
+     * Gets the QoS policy from QoS policy database. CQoSGetEvent event is received
+     * asynchronously to indicate the success of failure of the request.
+     *
+     * @return KErrNone if request was issued, != KErrNone if there was an error. 
+     */
+    IMPORT_C TInt GetQoS();
+
+    /**
+     * Deletes the QoS policy.
+     * @return KErrNone if request was issued, != KErrNone if there was an error (for example, 
+     * RQoSPolicy::Open was not called).
+     */
+    IMPORT_C TInt Close();
+
+    /**
+     * Registers an event observer to catch QoS events.
+     *
+     * @param aObserver Event observer.
+     * @param aMask An event mask. An application can specify a set of QoS events that it wants to receive.
+     * By default all events are notified to the application.
+     * @return KErrNone if request was issued, != KErrNone if there was an error. 
+     */
+    IMPORT_C TInt NotifyEvent(MQoSObserver& aObserver, TUint aMask=KQoSEventAll);
+
+    /**
+     * Deregisters an event observer to catch QoS events.
+     *
+     * @param aObserver Event observer.
+     * @return KErrNone if request was issued, != KErrNone if there was an error. 
+     */
+    IMPORT_C TInt CancelNotifyEvent(MQoSObserver& aObserver);
+
+    /**
+     * Loads a QoS policy file into the QoS policy database. EQoSEventLoadPolicyFile event is received
+     * asynchronously to indicate the success of failure of the request.
+     *
+     * @param aName Name of the QoS policy file to be loaded.
+     * @return KErrNone if request was issued, != KErrNone if there was an error. 
+     */
+    IMPORT_C TInt LoadPolicyFile(const TDesC& aName);
+
+    /**
+     * Unloads a QoS policy file from the QoS policy database. EQoSEventUnloadPolicyFile event is received
+     * asynchronously to indicate the success of failure of the request.
+     *
+     * @param aName Name of the QoS policy file to be unloaded.
+     * @return KErrNone if request was issued, != KErrNone if there was an error. 
+     */
+    IMPORT_C TInt UnloadPolicyFile(const TDesC& aName);
+
+private:
+    /** A dynamically allocated QoS policy. */
+    CPolicy* iPolicy;// //< Used internally by qoslib
+};
+
+#endif