diff -r 000000000000 -r b16258d2340f applayerprotocols/httpexamples/nwsswsptrhnd/CNwssTransLookUpTable.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/httpexamples/nwsswsptrhnd/CNwssTransLookUpTable.h Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,253 @@ +// Copyright (c) 2002-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: +// + +/** + @file CNwssTransLookUpTable.h + @warning : This file contains Rose Model ID comments - please do not delete +*/ + +#ifndef __CNWSSTRANSLOOKUPTABLE_H__ +#define __CNWSSTRANSLOOKUPTABLE_H__ + +// System includes +#include +#include + + +// Forward declarations +class MWspCOMethodCallback; +class MHTTPDataSupplier; +class CNwssWspTrHndDataSupplier; + + +/** + @since 7.0 + This class implements a simple, pre-allocated look-up table that is used in + the WSP Transport Handler to associate the transaction-related items stored in + instances of the embedded class CNwssTransLUTEntry. + */ + +//##ModelId=3BBD8D0600BB +class CNwssTransLookUpTable : public CBase + { +public: // embedded classes + + /** + @since 7.0 + This class implements a single entry in the transaction look-up table. It is + an association of the following five items : + * NWSS Wap Stack transaction handler (RWSPCOTrans) + * NWSS Wap Stack transaction ID (RWSPCOTrans::TTransID) - for convenience + * Client transaction callback (MWspCOMethodCallback) + * Client's request body data supplier (MHTTPDataSupplier) + * WSP Transport Handler response body handler (CNwssWspTrHndDataSupplier) + */ + //##ModelId=3BBD8D150198 + class CNwssTransLUTEntry : public CBase + { + public: // methods + + /** + Factory construction. + @since 7.0 + */ + static CNwssTransLUTEntry* NewL(); + + /** + Destructor. + @since 7.0 + */ + virtual ~CNwssTransLUTEntry(); + + private: // methods + + /** + Default constructor. + @since 7.0 + */ + //##ModelId=3C4C49C30046 + CNwssTransLUTEntry(); + + public: // attributes + + /** Client callback pointer for the transaction. This uniquely identifies the + transaction. + */ + //##ModelId=3C4C49C3003C + MWspCOMethodCallback* iCallback; + + /** WAP Stack transaction handle + */ + //##ModelId=3C4C49C30014 + RWSPCOTrans iStackTrans; + + /** WAP Stack transaction ID + */ + //##ModelId=3C4C49C30002 + RWSPCOTrans::TTransID iStackTransID; + + /** Response body data handler + */ + //##ModelId=3C4C49C203DE + CNwssWspTrHndDataSupplier* iResponseBodyHandler; + + /** A flag to indicate whether this transaction has been aborted by the + client, but is in the EDone state. + */ + TBool iAborted; + }; + +public: // methods + +/** + Factory construction. Pre-allocates a table of the specified size. + @since 7.0 + @param aTableSize (in) The initial size of the look-up table. + @return The newly constructed instance. + @leave System error codes, e.g. KErrNoMemory. + */ + //##ModelId=3C4C49D601AC + static CNwssTransLookUpTable* NewL(TInt aTableSize); + +/** + Destructor. + @since 7.0 + */ + //##ModelId=3C4C49D6015C + virtual ~CNwssTransLookUpTable(); + +/** + Returns the next available LUT entry at the top of the table. + @since 7.0 + @return A reference to the entry. + */ + //##ModelId=3C4C49D60101 + CNwssTransLUTEntry& NewEntry(); + +/** + Locate a look-up table entry that matches the supplied transaction + ID. It is assumed that the look-up table user does not allow + duplicates to be entered in the table. + @since 7.0 + @param aTransId (in) The WAP Stack transaction ID. + @param aFound (out) A flag indicating if the entry was found. + @return A reference to the located entry. Note, if aFound is EFalse + the reference should be discard, as it will be garbage. + */ + //##ModelId=3C4C49D50345 + CNwssTransLUTEntry& LookUpByTransId(RWSPCOTrans::TTransID aTransId, TBool& aFound); + +/** + Locate a look-up table entry that matches the supplied client + method callback. It is a requirement on the client that it + uses unique MWspCOMethodCallback objects for each transaction. + Hence there is an assumption that the look-up table user does + not allow entries with duplicate callback's to be entered in + the table. + @since 7.0 + @param aCallback (in) The client transaction callback. + @param aFound (out) A flag indicating if the entry was found. + @return A reference to the located entry. Note, if aFound is EFalse + the reference should be discard, as it will be garbage. + */ + //##ModelId=3C4C49D501AA + CNwssTransLUTEntry& LookUpByCallback(MWspCOMethodCallback& aCallback, TBool& aFound); + +/** + Removes the entry corresponding to aCallback from the table. Note + that since the table is pre-allocated, the actual entry is just + recycled by moving it to the top of the table, adjusting the high- + water mark (if necessary) to point at it. + @since 7.0 + @param aCallback (in) A callback, uniquely identifying the table entry + to remove. + */ + //##ModelId=3C4C49D500B0 + void RemoveEntry(MWspCOMethodCallback& aCallback); + +/** + Resizes the look-up table. If aNewSize exceeds the current + size, then entries are added. If it is less than the current + size, then surplus entries are deleted. + @since 7.0 + @param aNewSize (in) The new table size + @leave System error codes, e.g. KErrNoMemory if the table can't be + enlarged. + */ + //##ModelId=3C591A9A038E + void ResizeTableL(TInt aNewSize); + +/** + Indicates whether there are any 'live' entries in the lookup table, + @since 7.0 +*/ + //##ModelId=3C9B095601B8 + TBool IsEmpty() const; + +/** + Returns the first entry in the lookup table. + @param aFound (out) A flag indicating if the entry was found. + @return A reference to the located entry. Note, if aFound is EFalse + the reference should be discard, as it will be garbage. +*/ + //##ModelId=3C9B09560186 + CNwssTransLUTEntry& Head(TBool& aFound); + +private: // methods + +/** + Normal constructor. + @since 7.0 + */ + //##ModelId=3C4C49D5004C + CNwssTransLookUpTable(); + +/** + Second phase construction. Pre-allocates table entries upto + the specified table size. + @since 7.0 + @param aTableSize (in) The required initial table size. + @leave System error codes, e.g. KErrNoMemory. + */ + //##ModelId=3C4C49D40325 + void ConstructL(TInt aTableSize); + +/** + Helper in making look-ups based on a call-back object. + @since 7.0 + @param aCallback (in) A callback, uniquely identifying a table entry + @param aIndex (out) The index in the table at which the entry was located + @return Pointer to the table entry if found, or NULL if not found. + */ + //##ModelId=3C9B0956012B + CNwssTransLUTEntry* LookUp(MWspCOMethodCallback& aCallback, TInt& aIndex); + +private: // attributes + + /** The number of active entries in the look-up table. + iEntries[iNumActiveLUTEntries] will return the next free entry. + */ + //##ModelId=3C4DA52D0338 + TInt iNumActiveLUTEntries; + + /** The pre-allocated look-up table. It is ready populated with + entry structures. + */ + //##ModelId=3C4C49D402AD + RPointerArray iEntries; + }; + + +#endif // __CNWSSTRANSLOOKUPTABLE_H__