diff -r 000000000000 -r b16258d2340f applayerpluginsandutils/httpprotocolplugins/httpheadercodec/chttpgeneralheadercodec.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerpluginsandutils/httpprotocolplugins/httpheadercodec/chttpgeneralheadercodec.cpp Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,145 @@ +// 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: +// + +#include "chttpgeneralheadercodec.h" + +#include +#include + +#include "chttpdefaultheadercodec.h" +#include "chttpgeneralheaderwriter.h" +#include "chttpgeneralheaderreader.h" + +CHttpGeneralHeaderCodec* CHttpGeneralHeaderCodec::NewL(TAny* aStringPool) +/** + Factory constructor. + @internalComponent + @param aStringPool The current string pool. + @return A pointer to a fully initialised object. + @leave KErrNoMemory Not enough memory to create object. + @leave CHttpGeneralHeaderCodec::ConstructL +*/ + { + RStringPool* strPool = static_cast(aStringPool); + CHttpGeneralHeaderCodec* self = new (ELeave) CHttpGeneralHeaderCodec(*strPool); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +CHttpGeneralHeaderCodec::~CHttpGeneralHeaderCodec() +/** + Destructor. + @internalComponent +*/ + { + } + +CHttpGeneralHeaderCodec::CHttpGeneralHeaderCodec(RStringPool aStringPool) +: CHeaderCodecPlugin(), iStringPool(aStringPool), iStringTable(RHTTPSession::GetTable()) +/** + Constructor + @internalComponent + @param aStringPool The current string pool. +*/ + { + } + +void CHttpGeneralHeaderCodec::ConstructL() +/** + Second phase constructor + @internalComponent + @leave CHeaderCodec::ConstructL + @leave CHttpGeneralHeaderWriter::NewL + @leave CHttpGeneralHeaderReader::NewL +*/ + { + // Do second phase construction of the base class + CHeaderCodec::ConstructL(); + + // Create the header writer and reader objects on behalf of the base class + iWriter = CHttpGeneralHeaderWriter::NewL(iStringPool); + iReader = CHttpGeneralHeaderReader::NewL(iStringPool); + } + +/* + * Methods from CHeaderCodec + */ + +TBool CHttpGeneralHeaderCodec::CanEncode(RStringF aHeaderField) const +/** + Asks if the codec can encode the specified header. The default codec can + encode all headers. + @internalComponent + @param aHeaderField The header to be encoded. + @return A value of ETrue if the codec can encode the header or a value + of EFalse if not. +*/ + { + TBool encode = EFalse; + switch( aHeaderField.Index(iStringTable) ) + { + case HTTP::ECacheControl: + case HTTP::EConnection: + case HTTP::EDate: + case HTTP::EPragma: + case HTTP::ETransferEncoding: + case HTTP::EContentEncoding: + case HTTP::EContentLanguage: + case HTTP::EContentLength: + case HTTP::EContentLocation: + case HTTP::EContentMD5: + case HTTP::EContentType: + case HTTP::EContentDisposition: + case HTTP::EExpires: + case HTTP::ELastModified: + case HTTP::EUpgrade: + { + // Can encode these headers + encode = ETrue; + } break; + default: + // Return default value + break; + } + return encode; + } + +TBool CHttpGeneralHeaderCodec::CanDecode(RStringF aHeaderField) const +/** + Asks if the codec can decode the specified header. The default codec can + decode all headers. + @internalComponent + @param aHeaderField The header to be decoded. + @return A value of ETrue if the codec can decode the header or a value + of EFalse if not. +*/ + { + return CanEncode(aHeaderField); + } + +CHeaderCodec* CHttpGeneralHeaderCodec::FindDelegateCodecL(RStringF /*aHeaderField*/) const +/** + Asks the codec to find a delegate codec that can deal with the header field. + The http default codec is the final codec that can be used. + @internalComponent + @param aHeaderField The header field to be handled. + @return A pointer to the http default codec. + @leave CHttpDefaultHeaderCodec::NewL +*/ + { + return CHeaderCodecPlugin::CreateDelegateCodecL(iStringPool); + }