diff -r 000000000000 -r e4d67989cc36 genericservices/httputils/inc/WSPDecoder.h --- /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 +#include + + +/** +* This file contains the following classes: +* TWspField +* TWspHeaderSegmenter +* TWspPrimitiveDecoder +* +*/ + + +/** +enum DecoderPanic +@publishedAll +@deprecated +*/ +enum TWspDecoderPanic + { + /** + LongIntOverflow + */ + EWspDecoderLongIntOverflow, + /** + DateOverflow + */ + EWspDecoderDateOverflow + }; + +/** +TWspField class holds the pair +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__ + +