diff -r 000000000000 -r af10295192d8 networkcontrol/qoslib/inc/qos_extension.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkcontrol/qoslib/inc/qos_extension.h Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,127 @@ +// Copyright (c) 2003-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: +// + +#ifndef __QOS_EXTENSION_H__ +#define __QOS_EXTENSION_H__ + +/** + * @file qos_extension.h + * This file defines the base class for QoS extensions that can be added to CQoSParameters. + */ + +#include +#include +//#include + + +/** + * Base class for extension policies. + * + * @publishedPartner + * @released + */ +class CExtensionBase : public CBase +{ +public: + IMPORT_C CExtensionBase(); + IMPORT_C ~CExtensionBase(); + + /** + Extension must implement this function to allow qoslib to create + extensions. + + @publishedPartner + @released + @capability NetworkServices Restrict QoS operations in similar way as + normal socket operations. + @leave If no memory is available. + @return A pointer to extension object. + */ + virtual CExtensionBase* CreateL()=0; + + /** + Gets the type of the extension. + + @publishedPartner + @released + @capability NetworkServices Restrict QoS operations in similar way as + normal socket operations. + @return Extension type. + */ + inline TInt Type() const { return iType; } + + /** + Gets the extension data in a descriptor. + + The extension must implement this function to allow qoslib to fetch the + extension data. + + @publishedPartner + @released + @capability NetworkServices Restrict QoS operations in similar way as + normal socket operations. + @return Extension data. + */ + virtual TDesC8& Data()=0; + + /** + Parses the extension data received as a parameter. + + The extension must implement this function to allow qoslib give the + extension data to the extension object. + + @publishedPartner + @released + @capability NetworkServices Restrict QoS operations in similar way as + normal socket operations. + @param aData Extension data. + @return KErrNone, if aData contains a valid extension; otherwise, error + code. + */ + virtual TInt ParseMessage(const TDesC8& aData)=0; + + /** + Copies aExtension into this object. + + The extension must implement this function to allow copying of + extensions. + + @publishedPartner + @released + @capability NetworkServices Restrict QoS operations in similar way as + normal socket operations. + @param aExtension Extension data. + @return KErrNone, if copying succeeded; otherwise, error code. + */ + virtual TInt Copy(const CExtensionBase& aExtension)=0; + + +public: + TSglQueLink iLink; //iLink needs to be accessible for setting offset! + +protected: + /** The extension type. */ + TInt iType; + /** Buffer for extension data. */ + HBufC8* iData; + /** Pointer to next item in an extension queue. */ +}; + +/** A typedef for a queue of extensions. */ +typedef TSglQue TQoSExtensionQueue; +/** A typedef for an iterator to a queue of extensions. */ +typedef TSglQueIter TQoSExtensionQueueIter; + +#endif