genericservices/httputils/inc/WSPDecoder.h
changeset 0 e4d67989cc36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/genericservices/httputils/inc/WSPDecoder.h	Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,244 @@
+// Copyright (c) 2001-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 WSPDecoder.h
+ @publishedAll
+ @deprecated
+*/
+
+#ifndef	__WSPDECODER_H__
+#define	__WSPDECODER_H__
+
+#include <e32base.h>
+#include <stringpool.h>
+
+
+/** 
+* This file contains the following classes:
+*	TWspField 
+*	TWspHeaderSegmenter 
+*	TWspPrimitiveDecoder  
+*	
+*/
+
+
+/**
+enum DecoderPanic
+@publishedAll
+@deprecated
+*/
+enum TWspDecoderPanic
+	{
+	/**
+	LongIntOverflow
+	*/
+	EWspDecoderLongIntOverflow,
+	/**
+	DateOverflow
+	*/
+	EWspDecoderDateOverflow
+	};
+
+/**
+TWspField class holds the pair <HeaderName, ValueBuffer>
+This is a simple class that associates these values.
+No ownership is handed to this class.  It is up to user of this class to
+open and close all resources used.
+@publishedAll
+@deprecated
+*/
+class TWspField 
+	{
+public:
+
+	inline TWspField();
+
+	inline TWspField(RStringF aHdrName, TPtrC8 aValBuf);
+
+	/**
+	The header name of a opened RStringF - *Not Owned*
+	This is externally opened.  It must be externally 
+	closed.
+	*/
+	RStringF iHdrName;
+	
+	/** The raw value buffer - Note: Not owned by this */
+	TPtrC8	 iValBuffer;
+	};
+
+/** 
+TWspHeaderSegmenter segments a WSP buffer into WSP header/value pairs.  
+It detects boundaries between header/values based on the WAP-WSP spec.
+	- To construct, buffer and string pool is passed in
+	- Call to NextL() to iterate through the buffer - this returns a TWspField
+	- NextL() returns KErrNotFound when done
+
+@publishedAll
+@deprecated
+*/ 
+class TWspHeaderSegmenter
+	{
+public:
+
+	inline TWspHeaderSegmenter(RStringPool aPool, const TStringTable& aStringTable, TPtrC8 aBuffer); 
+
+	IMPORT_C TInt NextL(TWspField& aWspHeader);
+
+	inline TInt Offset() const;
+
+private:
+	/** Raw buffer that will be segmented - Not Owned */
+	TPtrC8		iBuffer;
+
+	/** Segment offset into the buffer. */
+	TInt		iOffset;
+
+	/** Opened string pool to use with the string table already loaded - Not Owned */
+	RStringPool iPool;
+
+	/** The string table to use in the string pool - Not Owned */
+	const TStringTable& iStringTable;
+	};
+
+/** 
+Decoder for WSP Primitves - WAP-WSP Section 8.4.1
+@publishedAll
+@deprecated
+*/ 
+class TWspPrimitiveDecoder 
+	{
+  public:
+
+	/**
+	* TWspHeaderType describe the types from WAP-WSP Section 8.4.1.2
+	*/
+	 enum TWspHeaderType
+		{
+		/**
+		The type has not been set 
+		*/
+		ENotSet,		
+		/**
+		0-31 -  octet is a value length 
+		*/
+		ELengthVal,		
+		/**
+		34 - value is a quoted text string, terminated by a Null
+		*/
+		EQuotedString,	
+		/** 
+		32-127 - value is a text string, terminated by a Null
+		*/
+		EString,		
+		/**
+		128-255 - encoded 7 bit value, this header has no more data	
+		*/
+		E7BitVal		
+		};
+
+			
+	inline TWspPrimitiveDecoder(TPtrC8 aBuffer);
+	
+	IMPORT_C TWspHeaderType VarType() const;
+	
+	IMPORT_C TInt LengthVal(TInt& aVal);
+	
+	IMPORT_C TInt String(TPtrC8& aString);
+
+
+	IMPORT_C TInt Val7Bit(TUint8& aVal);
+	
+	IMPORT_C TInt Integer(TUint32& aVal);
+
+	IMPORT_C TInt LongInt(TUint32& aVal);
+
+	IMPORT_C TInt UintVar(TUint32& aVal);
+
+	IMPORT_C TInt VersionL(RStringPool aPool, RStringF& aVer);
+
+	IMPORT_C TInt Date(TDateTime& aDateTime);
+  
+  private:
+	/** The raw buffer */
+	TPtrC8 iBuffer;
+
+	/** The current offset */
+	TInt   iOffset;
+	};
+
+/**
+  Constructor
+  
+ */
+inline TWspField::TWspField()
+	{
+	}
+
+/**
+  Constructor
+  
+  @param aHdrName In - The Header Name.  This must be an opened RStringF
+  @param aValBuf In - the Buffer containing the header value in its raw format
+*/
+inline TWspField::TWspField(RStringF aHdrName, TPtrC8 aValBuf) : 
+		iHdrName(aHdrName), 
+		iValBuffer(aValBuf) 
+	{
+	}
+
+/**
+  Constructor
+
+  @param aPool In - an opened RStringPool - owned by the caller
+  @param aStringTable In - the string table in the string pool to use
+  @param aBuffer In - the buffer containing the WSP header data - owned by the caller
+  @pre The string table must be opened with the WSP Sting constants table
+*/
+inline TWspHeaderSegmenter::TWspHeaderSegmenter(RStringPool aPool, const TStringTable& aStringTable, TPtrC8 aBuffer) : 
+		iBuffer(aBuffer), 
+		iOffset(0),
+		iPool(aPool),
+		iStringTable(aStringTable)
+	{
+	}
+
+/**
+  Offset	returns the current offset into the buffer being parsed.
+  
+  @return	TInt offset value. It will point to beginning of next segmented field.
+ 			If NextL has not been called it will be set to 0. The beginning of the buffer.
+ 			If buffer has been completely parsed, will return KErrNotFound.
+*/
+inline TInt TWspHeaderSegmenter::Offset() const
+	{
+	return (iOffset < iBuffer.Length()) ? iOffset : KErrNotFound;	
+	}
+
+/**
+  Constructor
+  
+  @param aBuffer In - the buffer containing the value in its raw format
+*/
+inline TWspPrimitiveDecoder::TWspPrimitiveDecoder(TPtrC8 aBuffer) : 
+		iBuffer(aBuffer), 
+		iOffset(0) 
+	{
+	}
+
+
+#endif // __WSPDECODER_H__
+
+