diff -r 000000000000 -r b16258d2340f applayerpluginsandutils/httpprotocolplugins/wspheadercodec/CWspHeaderCodec.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerpluginsandutils/httpprotocolplugins/wspheadercodec/CWspHeaderCodec.h Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,301 @@ +// 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: +// + +#ifndef __CWSPHEADERCODEC_H__ +#define __CWSPHEADERCODEC_H__ + +// System Includes +#include +#include +#include + + +/** +@internalAll +@since 7.0 +This class is the WSP specific header codec that is required to encode and decode +WSP headers between a usable form and the form required for transport. The codec +derives from CHeaderCodec interface and provided the WSP specific encoding and +decoding of header fields following the specifications stated in the WSP specs +available from http://www.wapforum.org and the RFC2616. +*/ +//##ModelId=3C4C41B30305 +class CWspHeaderCodec : public CHeaderCodec + { +public: // enums + /** + Enumeration defining the different WSP encoding versions that are supported + @since 7.0 + */ + enum TWspVersion + { + EVersion1_1, // Version 1.1 + EVersion1_2, // Version 1.2 + EVersion1_3, // Version 1.3 + EVersion1_4 // Version 1.4 + }; + +public: // methods + + /** + Standard factory 2 phase construction + @leave KErrNoMemory + @since 7.0 + @param aStrPool A handle to an open string pool with the string table + that contains the header field names already open + @param aStrTable The string table that contains the header field names + @return A pointer to the newly created object + @pre None + @post Fully constructed and initialized object + */ + //##ModelId=3C4C41B3037D + static CWspHeaderCodec* NewL(RStringPool aStrPool, const TStringTable& aStrTable); + + /** + Standard virtual destructor + @since 7.0 + @post Object has been fully destroyed + */ + //##ModelId=3C4C41B30375 + virtual ~CWspHeaderCodec(); + + /** + This method returns whether the header field passed in can + be encoded or not. + @since 7.0 + @param aHeaderField The header field to enquire about + @return ETrue if the header can be encoded otherwise EFalse + */ + //##ModelId=3C4C41B30373 + virtual TBool CanEncode(RStringF aHeaderField) const; + + /** + This method returns whether the header field passed in can + be decoded or not. + @since 7.0 + @param aHeaderField The header field to enquire about + @return ETrue if the header can be decoded otherwise EFalse + */ + //##ModelId=3C4C41B3036A + virtual TBool CanDecode(RStringF aHeaderField) const; + + /** + This method should be used to find an alternative codec for the + header field name if this codec cannot handle the header field. + The caller takes ownership of the returned codec. + @since 7.0 + @param aHeaderField The header field name string + @return A pointer to the newly created codec if one is found, otherwise + NULL is returned if a codec cannot be found. The caller takes + ownership of the returned codec. + */ + //##ModelId=3C4C41B30360 + virtual CHeaderCodec* FindDelegateCodecL(RStringF aHeaderField) const; + + /** + This method gets the current encoding version that is being + used. + @since 7.0 + @return The encoding version enumeration + */ + //##ModelId=3C4C41B3035F + TWspVersion GetWspVersion() const; + + /** + This method sets the encoding version to use. The encoding + version defaults to 1.2 if this method is not called. + @since 7.0 + @param aWspVersion The encoding version enumeration + @post The encoding version is set to the version passed in + */ + //##ModelId=3C4C41B30357 + void SetWspVersion(TWspVersion aWspVersion); + + /** + This method encodes a header field name to its correct encoded + token value. For WSP the returned value must be then be encoded + to a short integer by flipping the first bit to a 1, this is NOT + done in this method. + @since 7.0 + @param aFieldName The header field name string + @return The encoded token value of the header field name. KErrNotFound if + no encoding value could be found for the header field name + */ + //##ModelId=3C4C41B30355 + TInt EncodeFieldName(RStringF aFieldName) const; + +protected: // methods + + /** + Standard constructor + @since 7.0 + @param aStrPool A handle to an opened string pool with the string table + that contains the header field names already open + @param aStrTable The string table that contains the header field names + @pre None + @post Object is constructed + */ + //##ModelId=3C4C41B30342 + CWspHeaderCodec(RStringPool aStrPool, const TStringTable& aStrTable); + + /** + Standard 2nd phase construction + @leave KErrNoMemory + @since 7.0 + @pre Object is constructed + @post Object is initialized and all the required string tables have + been opened in the string pool + */ + //##ModelId=3C4C41B30341 + void ConstructL(); + +private: // methods + + /** + Standard default private constructor + @since 7.0 + @pre None + @post Object is constructed + */ + //##ModelId=3C4C41B3034D + CWspHeaderCodec(); + +private: // attributes + + /** + Handle to an opened string pool with the header field names table open + */ + //##ModelId=3C4C41B30339 + RStringPool iStrPool; + + /** + The string table that contains the header field names + */ + //##ModelId=3C4C41B3032D + const TStringTable& iStrTable; + + /** + The current encoding version that is to be used, defaults to 1.2 + */ + //##ModelId=3C4C41B3031C + TWspVersion iWspVersion; + }; + +/** +@internalAll +@since 7.0 +This class is the default WSP Header Codec that is used if no codec can encode/ +decode a particular header. This codec will encode/decode headers with the default +behaviour of treating the data as a text-string as defined in the WSP specifications +at www.wapforum.org. +*/ +class CWspDefaultHeaderCodec : public CHeaderCodec + { +public: + + /** + Standard factory 2 phase construction + @leave KErrNoMemory + @since 7.0 + @param aStrPool A handle to an open string pool with the string table + that contains the header field names already open + @return A pointer to the newly created object + @pre None + @post Fully constructed and initialized object + */ + static CWspDefaultHeaderCodec* NewL(RStringPool aStrPool); + + /** + Standard virtual destructor + @since 7.0 + @post Object has been fully destroyed + */ + virtual ~CWspDefaultHeaderCodec(); + + /** + This method returns whether the header field passed in can + be encoded or not. Always returns true because it will + handle anything by design! + @since 7.0 + @param aHeaderField The header field to enquire about + @return ETrue if the header can be encoded otherwise EFalse. In this + case ETrue is always returned + */ + virtual TBool CanEncode(RStringF aHeaderField) const; + + /** + This method returns whether the header field passed in can + be decoded or not. Always returns true because it will + handle anything by design! + @since 7.0 + @param aHeaderField The header field to enquire about + @return ETrue if the header can be decoded otherwise EFalse. In this + case ETrue is always returned + */ + virtual TBool CanDecode(RStringF aHeaderField) const; + + /** + Find a delegate codec... always returns NULL, since this codec + handles anything by design. + @since 7.0 + @param aHeaderField The header field name string + @return A pointer to the newly created codec if one is found, otherwise + NULL is returned if a codec cannot be found. The caller takes + ownership of the returned codec. In this case NULL is always + returned + */ + virtual CHeaderCodec* FindDelegateCodecL(RStringF aHeaderField) const; + +protected: // methods + + /** + Standard constructor + @since 7.0 + @param aStrPool A handle to an opened string pool with the string table + that contains the header field names already open + @pre None + @post Object is constructed + */ + CWspDefaultHeaderCodec(RStringPool aStrPool); + + /** + Standard 2nd phase construction + @leave KErrNoMemory + @since 7.0 + @pre Object is constructed + @post Object is initialized and all the required string tables have + been opened in the string pool + */ + void ConstructL(); + +private:// methods + + /** + Standard default private constructor + @since 7.0 + @pre None + @post Object is constructed + */ + CWspDefaultHeaderCodec(); + +private: // attributes + + /** + Handle to an opened string pool + */ + RStringPool iStrPool; + }; + +#endif // __CWSPHEADERCODEC_H__