--- /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 <e32base.h>
+#include <wapcli.h>
+
+
+// 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<CNwssTransLUTEntry> iEntries;
+ };
+
+
+#endif // __CNWSSTRANSLOOKUPTABLE_H__