diff -r 000000000000 -r 62f9d29f7211 webservices/wsframework/src/senhttptransportproperties.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/wsframework/src/senhttptransportproperties.cpp Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,314 @@ +/* +* Copyright (c) 2005 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 // RWriteStream +#include +#include "SenHttpTransportProperties.h" + +namespace + { + _LIT8(KIapIdLocalName, "IapId"); + _LIT8(KProxyHostLocalName, "ProxyHost"); + _LIT8(KProxyPortLocalName, "ProxyPort"); + } + +EXPORT_C CSenHttpTransportProperties* CSenHttpTransportProperties::NewL() + { + CSenHttpTransportProperties* pNew = NewLC(); + CleanupStack::Pop(); // pNew + return pNew; + } + +EXPORT_C CSenHttpTransportProperties* CSenHttpTransportProperties::NewLC() + { + CSenHttpTransportProperties* pNew = new (ELeave) CSenHttpTransportProperties; + CleanupStack::PushL(pNew); + + // omit parsing by passing zero-length descriptor + pNew->BaseConstructL(KSenXmlPropertiesLocalname, + KNullDesC8, + NULL); + return pNew; + } + +EXPORT_C CSenHttpTransportProperties* CSenHttpTransportProperties::NewL(const TDesC8& aXmlUtf8, + CSenXmlReader& aParser) + { + CSenHttpTransportProperties* pNew = NewLC(aXmlUtf8, aParser); + CleanupStack::Pop(); // pNew + return pNew; + } + +EXPORT_C CSenHttpTransportProperties* CSenHttpTransportProperties::NewLC(const TDesC8& aXmlUtf8, + CSenXmlReader& aParser) + { + CSenHttpTransportProperties* pNew = new (ELeave) CSenHttpTransportProperties; + CleanupStack::PushL(pNew); + + // parse the XML document descriptor into DOM fragment + pNew->BaseConstructL(KSenXmlPropertiesLocalname, + aXmlUtf8, + &aParser); + return pNew; + } + +EXPORT_C CSenHttpTransportProperties* CSenHttpTransportProperties::NewL(const CSenElement& aElement) + { + CSenHttpTransportProperties* pNew = NewLC(aElement); + CleanupStack::Pop(); // pNew + return pNew; + } + +EXPORT_C CSenHttpTransportProperties* CSenHttpTransportProperties::NewLC(const CSenElement& aElement) + { + CSenHttpTransportProperties* pNew = new (ELeave) CSenHttpTransportProperties; + CleanupStack::PushL(pNew); + + // parse the XML document descriptor into DOM fragment + pNew->BaseConstructL(aElement); + return pNew; + } + + + +/** +* Get an integer identifying properties class type. +* All subclasses MUST return use unique integer value. +* @return unique TInt identifying this properties class type +*/ +TInt CSenHttpTransportProperties::PropertiesClassType() + { + return KSenPropertiesClassTypeSenHttpTransportProperties; + } + +/** +* Writes this properties object as descriptor into a stream. +* UTF-8 charset encoding will be used. +* @since Series60 +* @param aWriteStream The stream to write to. +*/ +void CSenHttpTransportProperties::WriteToL(RWriteStream& aWriteStream) + { + CSenTransportProperties::WriteAsXMLToL(aWriteStream); + /* + WriteAsXMLToL(aWriteStream); + */ + } + +/** +* Get these properties as UTF-8 charset encoded descriptor. +* @since Series60 +* @return a pointer to UTF-8 encoded descriptor. +* Caller takes ownership. +*/ +HBufC8* CSenHttpTransportProperties::AsUtf8L() + { + return CSenTransportProperties::AsUtf8L(); + /* + return AsXmlL(); + */ + } + + +/** +* Get these properties as UTF-8 charset encoded descriptor. +* @since Series60 +* @return a pointer to UTF-8 encoded descriptor, which is +* has been left on cleanup stack. +* Caller takes ownership. +*/ +HBufC8* CSenHttpTransportProperties::AsUtf8LC() + { + return CSenTransportProperties::AsUtf8LC(); + /* + HBufC8* pAsXml = AsXmlL(); + CleanupStack::PushL(pAsXml); + return pAsXml; + */ + } + +/** +* Destructor. +*/ +CSenHttpTransportProperties::~CSenHttpTransportProperties() + { + } + +/** +* Constructs this fragment. Subclasses should call this +* function in their corresponding 2nd phase constructor. +* +* @param aLocalname is used as XML localname for this instance +* @param aXml is the XML document to be parsed into this DOM tree +* this properties instance represents. +* Parsing is omitted iff descriptor is zero-length: KNullDesC8. +*/ +void CSenHttpTransportProperties::BaseConstructL(const TDesC8& aLocalname, + const TDesC8& aXml, + CSenXmlReader* aParser) + { + CSenTransportProperties::BaseConstructL(aLocalname, aXml, aParser); + } + +/** +* Constructs this fragment. Subclasses should call this +* function in their corresponding 2nd phase constructor. +* +* @param aNamespace is the XML namespace +* @param aLocalname is the XML localname +* @param aXml is the XML document to be parsed into this DOM tree +* this properties instance represents. +* Parsing is omitted iff descriptor is zero-length: KNullDesC8. +*/ +void CSenHttpTransportProperties::BaseConstructL(const TDesC8& aNamespace, + const TDesC8& aLocalname, + const TDesC8& aXml, + CSenXmlReader* aParser) + { + CSenTransportProperties::BaseConstructL(aNamespace, aLocalname, aXml, aParser); + } + +/** +* Constructs this fragment. Subclasses should call this +* function in their corresponding 2nd phase constructor. +* +* @param aNamespace is the XML namespace +* @param aLocalname is the XML localname +* @param aLocalname is the XML qualified name +* @param aXml is the XML document to be parsed into this DOM tree +* this properties instance represents. +* Parsing is omitted iff descriptor is zero-length: KNullDesC8. +*/ +void CSenHttpTransportProperties::BaseConstructL(const TDesC8& aNamespace, + const TDesC8& aLocalname, + const TDesC8& aQualifiedName, + const TDesC8& aXml, + CSenXmlReader* aParser) + { + CSenTransportProperties::BaseConstructL(aNamespace, aLocalname, aQualifiedName, aXml, aParser); + + } + +/** +* 2nd phase constructor: +*/ +void CSenHttpTransportProperties::BaseConstructL(const CSenElement& aElement) + { + CSenTransportProperties::BaseConstructL(aElement); + } + + + + +CSenHttpTransportProperties::CSenHttpTransportProperties() + { + } + + +// First versions of real HTTP spesific transport methods: + +EXPORT_C TInt CSenHttpTransportProperties::IapId(TUint32& aCurrentIapId) + { + CSenElement* pIapIdElement = AsElement().Element(KIapIdLocalName); + if(pIapIdElement && pIapIdElement->HasContent()) + { + TPtrC8 content = pIapIdElement->Content(); + TLex8 lex(content); + + TInt retVal = lex.Val(aCurrentIapId, EDecimal); + return retVal; + } + return KErrNotFound; + } + + +EXPORT_C void CSenHttpTransportProperties::SetIapIdL(TUint32 aIapId) + { + CSenElement* pIapIdElement = AsElement().Element(KIapIdLocalName); + if(!pIapIdElement) + { + pIapIdElement = &(AsElement().AddElementL(KIapIdLocalName)); + } + TBuf8<128> buf; + buf.AppendFormat(_L8("%u"), aIapId); + pIapIdElement->SetContentL(buf); + } + +EXPORT_C TInt CSenHttpTransportProperties::ProxyPort() + { + CSenElement* pProxyPortElement = AsElement().Element(KProxyPortLocalName); + if(pProxyPortElement && pProxyPortElement->HasContent()) + { + TPtrC8 content = pProxyPortElement->Content(); + TLex8 lex(content); + + TUint proxyPort(0); + TInt retVal = lex.Val(proxyPort, EDecimal); + if(retVal==KErrNone) + { + return (TInt)proxyPort; + } + else + { + return retVal; + } + } + return KErrNotFound; + } + +EXPORT_C void CSenHttpTransportProperties::SetProxyPortL(TInt aProxyPort) + { + CSenElement* pProxyPortElement = AsElement().Element(KProxyPortLocalName); + if(!pProxyPortElement) + { + pProxyPortElement = &(AsElement().AddElementL(KProxyPortLocalName)); + } + TBuf8<128> buf; + buf.AppendFormat(_L8("%u"), aProxyPort); + pProxyPortElement->SetContentL(buf); + } + +EXPORT_C TPtrC8 CSenHttpTransportProperties::ProxyHost() + { + CSenElement* pProxyHostElement = AsElement().Element(KProxyHostLocalName); + if(pProxyHostElement && pProxyHostElement->HasContent()) + { + return pProxyHostElement->Content(); + } + else return KNullDesC8(); + } + +EXPORT_C void CSenHttpTransportProperties::SetProxyHostL(const TDesC8& aProxyHost) + { + CSenElement* pProxyHostElement = AsElement().Element(KProxyHostLocalName); + if(!pProxyHostElement) + { + pProxyHostElement = &(AsElement().AddElementL(KProxyHostLocalName)); + } + pProxyHostElement->SetContentL(aProxyHost); + } + +// END OF FILEŽ + +