epoc32/include/etelutils.h
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
--- a/epoc32/include/etelutils.h	Wed Mar 31 12:27:01 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,280 +0,0 @@
-// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
-// which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// Contains various utility classes which are used throughout Telephony.
-// 
-//
-
-
-
-/**
- @file
- @publishedPartner
- @released
-*/
-
-#if !defined(__ETELUTILS_H__)
-/** @internalComponent */
-#define __ETELUTILS_H__
-
-#include <e32base.h>
-
-/**
-Base class for generic actions in retrieving a variable length buffer in two phases.
-
-This class is abstract.
-
-@publishedPartner
-@released
-*/
-class CAsyncRetrieveVariableLengthBufferV2 : public CActive
-	{
-protected:
-	//
-	// Start the retrieval
-	//
-
-	IMPORT_C void Start(TRequestStatus& aReqStatus, TDes8* aPhase1Request, TDes8* aPhase2Request);
-	IMPORT_C CAsyncRetrieveVariableLengthBufferV2();
-	IMPORT_C virtual ~CAsyncRetrieveVariableLengthBufferV2();
-
-	IMPORT_C TBool CompleteIfInUse(TRequestStatus& aReqStatus);
-	IMPORT_C void FreeBuffer();
-
-private:
-	IMPORT_C virtual void RestoreListL();
-	virtual void Get(TInt aIpc, TRequestStatus& aReqStatus, TDes8& aDes1, TDes8& aDes2) = 0;
-	virtual void CancelReq(TInt aIpc1,TInt aIpc2) = 0;
-
-	IMPORT_C virtual void DoCancel();
-	IMPORT_C virtual void RunL();
-
-	void StartPhase2L();
-
-protected:
-	/**
-	Maintains the current phase of buffer retrieval.
-	*/
-	enum {
-		EIdle,
-		ERetrievePhase1,
-		ERetrievePhase2
-		} iState;
-
-	CBufBase* iResultsBuf;
-	TPtr8 iResultsPtr;
-	TInt iIpcPhase1;
-	TInt iIpcPhase2;
-	TInt iIpcCancel;
-private:
-	/**
-	Pointer to the user's asynchronous request status object.
-	*/
-	TRequestStatus* iUserStatus;
-	TDes8* iPhase1RequestData;
-	TDes8* iPhase2RequestData;
-	TPckgBuf<TInt> iBufferSize;
-	};
-	
-
-///////////////////////////////////////////////////////////////////////////
-/* following classes define interface to  TLV ( TYPE- LENGTH-VALUE) structured data:
--------------------------------------------------------------------------------------------------
-|       |                         |             |        |                          |           |
-|ItemId	| Length Of The Item Data |	Item Data	| ItemId |	Length Of The Item Data	| Item Data |
-|       |                         |             |        |                          |           |
--------------------------------------------------------------------------------------------------
-*/
-
-/**
-Defines interface for specifying the Tag of a TLV object.
-
-@publishedPartner
-@released
-*/
-class MTlvItemIdType
-{
-public:
-/**Externalize object by serializing to provided descriptor*/
-	virtual void ExternalizeL(TDes8& aBuffer) const =0;
-/** Internalize object by de-serializing of data in provided buffer*/
-	virtual void InternalizeL(TDesC8& aBuffer)=0;
-/** The length of serialized data member */
-	virtual TUint SerializedLength() const =0;
-/**  compares whether two objects contains the same data*/
-	virtual TBool IsEqual(const MTlvItemIdType&) const=0;
-};
-
-/**
-Defines interface for specifying the Length of a TLV object.
-
-@publishedPartner
-@released
-*/
-class MTlvItemDataLengthType
-{
-public:
-/**Externalize object by serializing to provided descriptor*/
-	virtual void ExternalizeL(TDes8& aBuffer)const=0;
-/** Internalize object by de-serializing of data in provided buffer*/
-	virtual void InternalizeL(TDesC8& aBuffer)=0;
-/** The length of serialized data member */
-	virtual TUint SerializedLength() const=0;
-/** Sets length of the data it relates to*/
-	virtual void SetDataLength(TUint)=0;
-/** Gets length of the data it relates to*/
-	virtual TUint DataLength() const =0;
-};
-
-/**
-Provides methods to append, remove or perform iterative lookup for items in container buffer.
-Classes ItemIdType and ItemDataLengthType have to implement interfaces MTlvItemIdType and
-MTlvItemDataLengthType in order to enable proper encoding and decoding of the first two fields
-in the unit.
-
-@internalComponent
-@released
-*/
-class TTlvStructBase
-    {
-  protected:
-  	/** Default constructor initializes data members*/
-   	IMPORT_C TTlvStructBase(TPtr8&,TUint8);    
- 	/** Base class implementation of methods in the templated class*/
-   	IMPORT_C TInt AppendItemL(MTlvItemIdType& aId,MTlvItemDataLengthType& aDataLengthType,const TPtr8& aData);
-   	IMPORT_C TInt RemoveNextItemL(MTlvItemIdType& aIdToRemove,MTlvItemIdType& aId, MTlvItemDataLengthType& aDataLength);
-   	IMPORT_C TInt AnyNextItemL(MTlvItemIdType& aIdFound,TPtr8& aData,MTlvItemIdType& aId, MTlvItemDataLengthType& aDataLength);
-   	IMPORT_C TInt NextItemL(const MTlvItemIdType& aWantedId,TPtr8& aData,MTlvItemIdType& aId, MTlvItemDataLengthType& aDataLength);
-  public:
-	/** Sets position of the cursor to start position (0)*/
-	IMPORT_C void ResetCursorPos();
-
-  protected:
-    /** Reference to external buffer that holds encoded TLV data*/
-    TPtr8& iPtr;
-    /** Cursor indicates last accessed item in the buffer*/
-	TUint iCursorPos;
-	/** Position in the buffer that indicates start of the zone that hasn't been assigned to any element.
-	 	this free zone ends at the end of the buffer*/
-	TUint iFreeSpacePos;
-	/** Character used to populate the zone that hasn't been assigned to any element.
-	this free zone ends at the end of the buffer*/
-	TUint8 iFreeSpaceChar;
-    };
-
-/**
-Provides methods to append, remove or perform iterative lookup for items in container buffer.
-Classes ItemIdType and ItemDataLengthType have to implement interfaces MTlvItemIdType and 
-MTlvItemDataLengthType in order to enable proper encoding and decoding of the first two fields 
-in the unit. 
-
-@publishedPartner
-@released
-*/  
-template <class ItemIdType, class ItemDataLengthType>
-class TTlvStruct: public TTlvStructBase
-    {
- public:
- 	
-   	inline TTlvStruct(TPtr8&,TUint8);   
-	inline TInt NextItemL(ItemIdType aId,TPtr8& aData);
-	inline TInt AnyNextItemL(ItemIdType& aId, TPtr8& aData);
-	inline TInt AppendItemL(ItemIdType aId,const TPtr8& aData);
-	inline TInt RemoveNextItemL(ItemIdType aId);
-	
- protected:
-	/** Default constructor is protected in order to enforce proper initialization of reference to external data buffer via provided public constructor*/
-    TTlvStruct();    	
-    /** Type of the identifier*/
-    ItemIdType iItemIdType;
-    /** The type used to define length of data portion of the item*/ 
-    ItemDataLengthType 	iItemDataLengthType;     
-};
-
-/** 
-Default constructor initializes data members and cursor position to 0.
-
-@param aPtr Ptr descriptor to TLV buffer that is to be read or written to.
-@param aFreeSpaceChar Character used to populate the zone that hasn't been assigned to any element.
-*/
-template <class ItemIdType,class ItemDataLengthType>
-	TTlvStruct<ItemIdType,ItemDataLengthType>::TTlvStruct(TPtr8& aPtr,TUint8 aFreeSpaceChar):TTlvStructBase(aPtr,aFreeSpaceChar)
-	{	
-	}
-	
-/**
-Look up in the buffer for an item with specified identifier.
-Look-up starts from the position of the cursor; 					
-Returns KErrNone if the item is present in the buffer, KErrNotFound otherwise.
-Sets supplied pointer so that it has length of item's data portion and points to it.
-Internal cursor is moved to first position after the end of the found item 
-(subsequent item start position in the buffer).
-
-@param aId Id of item to find.
-@param aData Descriptor which will hold the found item.
-@return System-wide error code.. If item of requested Id was not found then KErrNotFound will be returned. 
-*/
-template <class ItemIdType, class ItemDataLengthType>
-TInt TTlvStruct<ItemIdType,ItemDataLengthType>::NextItemL(ItemIdType aId,TPtr8& aData)
-	{
-	return TTlvStructBase::NextItemL(aId,aData,iItemIdType,iItemDataLengthType);	
-	}
-
-/**
-Look up in the buffer for the item with specified identifier.
-Look-up starts from the position of the cursor in the buffer. 
-			
-Returns KErrNone if item is found, KErrNotFound otherwise (end of buffer is reached).
-Sets supplied pointer so that it points to item data portion and has length set to value of data length. 
-Internal cursor is moved to first position after the end of the found item (subsequent item start position in the buffer).
-
-@param aId Id of found item.
-@param aData Descriptor which will hold the found item.
-@return System-wide error code.. If no next item found then KErrNotFound will be returned. 
-*/
-template <class ItemIdType, class ItemDataLengthType>
-TInt TTlvStruct<ItemIdType,ItemDataLengthType>::AnyNextItemL(ItemIdType& aId,TPtr8& aData)
-	{
-	return TTlvStructBase::AnyNextItemL(aId,aData,iItemIdType,iItemDataLengthType);
-	}		
-	
-/**
-Removes item identified by specified identifier (aId) from the buffer, where look-up starts at current cursor position, or 0 if it's reset. 
-returns KErrNone if item is found ( and removed), otherwise error code - in the case where there is no more space in the assigned buffer, KErrOverflow is passed back. 
-
-@param aId Id of item to remove.
-@return System-wide error code.. If item of requested Id was not found then KErrNotFound will be returned. 
-*/	
-template <class ItemIdType, class ItemDataLengthType>
-TInt TTlvStruct<ItemIdType,ItemDataLengthType>::RemoveNextItemL(ItemIdType aId)
-	{
-	return TTlvStructBase::RemoveNextItemL(aId,iItemIdType,iItemDataLengthType);	
-	}
-	
-/**
-Adds item identified by supplied aId argument to the buffer; content of the item is copied from provided descriptor to the buffer. 
-Supplied item identifier (aId) and length of the descriptor are used to set item identifier field and length field at the start of 
-item unit within the buffer.
-Returns KErrNone if successful, error code otherwise.	
-Internal cursor is moved to first position after the end of the found item (subsequent item start position in the buffer).
-
-@param aId Id of item to add.
-@param aData Descriptor containing data to add.
-@return System-wide error code.. If size of item to be appended is greater than free space in buffer then KErrOverflow will be returned.
-*/	
-template <class ItemIdType, class ItemDataLengthType>
-TInt TTlvStruct<ItemIdType,ItemDataLengthType>::AppendItemL(ItemIdType aId,const TPtr8& aData)
-	{
-	return TTlvStructBase::AppendItemL(aId,iItemDataLengthType,aData);
-	}
-#endif