--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsframework/src/senlayeredtransportproperties.cpp Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,600 @@
+/*
+* Copyright (c) 2006 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 <s32strm.h> // RWriteStream
+#include <SenXmlReader.h>
+#include "senlayeredtransportproperties.h"
+#include <SenTransportProperties.h>
+#include "senpropertieselement.h" // private: Utils\inc
+#include "senpropertiesfragment.h" // private: Utils\inc
+#include "senxmldebug.h"
+
+EXPORT_C CSenLayeredTransportProperties* CSenLayeredTransportProperties::NewL()
+ {
+ CSenLayeredTransportProperties* pNew = NewLC();
+ CleanupStack::Pop(); // pNew
+ return pNew;
+ }
+
+EXPORT_C CSenLayeredTransportProperties* CSenLayeredTransportProperties::NewLC()
+ {
+ CSenLayeredTransportProperties* pNew = new (ELeave) CSenLayeredTransportProperties;
+ CleanupStack::PushL(pNew);
+
+ // omit parsing by passing zero-length descriptor
+ pNew->BaseConstructL(KSenLayeredXmlPropertiesLocalname,
+ KNullDesC8,
+ NULL);
+ return pNew;
+ }
+
+EXPORT_C CSenLayeredTransportProperties* CSenLayeredTransportProperties::NewL(const TDesC8& aXmlUtf8,
+ CSenXmlReader& aParser)
+ {
+ CSenLayeredTransportProperties* pNew = NewLC(aXmlUtf8, aParser);
+ CleanupStack::Pop(); // pNew
+ return pNew;
+ }
+
+EXPORT_C CSenLayeredTransportProperties* CSenLayeredTransportProperties::NewLC(const TDesC8& aXmlUtf8,
+ CSenXmlReader& aParser)
+ {
+ CSenLayeredTransportProperties* pNew = new (ELeave) CSenLayeredTransportProperties;
+ CleanupStack::PushL(pNew);
+
+ // parse the XML document descriptor into DOM fragment
+ pNew->BaseConstructL(KSenLayeredXmlPropertiesLocalname,
+ aXmlUtf8,
+ &aParser);
+ return pNew;
+ }
+
+EXPORT_C CSenLayeredTransportProperties* CSenLayeredTransportProperties::NewL(const CSenElement& aElement)
+ {
+ CSenLayeredTransportProperties* pNew = NewLC(aElement);
+ CleanupStack::Pop(); // pNew
+ return pNew;
+ }
+
+EXPORT_C CSenLayeredTransportProperties* CSenLayeredTransportProperties::NewLC(const CSenElement& aElement)
+ {
+ CSenLayeredTransportProperties* pNew = new (ELeave) CSenLayeredTransportProperties;
+ CleanupStack::PushL(pNew);
+
+ // parse the XML document descriptor into DOM fragment
+ pNew->BaseConstructL(aElement);
+ return pNew;
+ }
+
+
+// The RStringPool variants:
+EXPORT_C CSenLayeredTransportProperties* CSenLayeredTransportProperties::NewL(RStringPool& aStringPool)
+ {
+ CSenLayeredTransportProperties* pNew = NewLC(aStringPool);
+ CleanupStack::Pop(); // pNew
+ return pNew;
+ }
+
+EXPORT_C CSenLayeredTransportProperties* CSenLayeredTransportProperties::NewLC(RStringPool& aStringPool)
+ {
+ CSenLayeredTransportProperties* pNew = new (ELeave) CSenLayeredTransportProperties;
+ CleanupStack::PushL(pNew);
+
+ // omit parsing by passing zero-length descriptor
+ pNew->BaseConstructL(KSenLayeredXmlPropertiesLocalname,
+ KNullDesC8,
+ NULL,
+ &aStringPool);
+ return pNew;
+ }
+
+EXPORT_C CSenLayeredTransportProperties* CSenLayeredTransportProperties::NewL(const TDesC8& aXmlUtf8,
+ CSenXmlReader& aParser,
+ RStringPool& aStringPool)
+ {
+ CSenLayeredTransportProperties* pNew = NewLC(aXmlUtf8, aParser, aStringPool);
+ CleanupStack::Pop(); // pNew
+ return pNew;
+ }
+
+EXPORT_C CSenLayeredTransportProperties* CSenLayeredTransportProperties::NewLC(const TDesC8& aXmlUtf8,
+ CSenXmlReader& aParser,
+ RStringPool& aStringPool)
+ {
+ CSenLayeredTransportProperties* pNew = new (ELeave) CSenLayeredTransportProperties;
+ CleanupStack::PushL(pNew);
+
+ // parse the XML document descriptor into DOM fragment
+ pNew->BaseConstructL(KSenLayeredXmlPropertiesLocalname,
+ aXmlUtf8,
+ &aParser,
+ &aStringPool);
+ return pNew;
+ }
+
+EXPORT_C CSenLayeredTransportProperties* CSenLayeredTransportProperties::NewL(const CSenElement& aElement,
+ RStringPool& aStringPool)
+ {
+ CSenLayeredTransportProperties* pNew = NewLC(aElement, aStringPool);
+ CleanupStack::Pop(); // pNew
+ return pNew;
+ }
+
+EXPORT_C CSenLayeredTransportProperties* CSenLayeredTransportProperties::NewLC(const CSenElement& aElement,
+ RStringPool& aStringPool)
+ {
+ CSenLayeredTransportProperties* pNew = new (ELeave) CSenLayeredTransportProperties;
+ CleanupStack::PushL(pNew);
+
+ // Pparse the XML document descriptor into DOM fragment
+ pNew->BaseConstructL(aElement, &aStringPool);
+ return pNew;
+ }
+
+
+
+EXPORT_C void CSenLayeredTransportProperties::SetReader(CSenXmlReader& aReader)
+ {
+ CSenLayeredXmlProperties::SetReader(aReader);
+ }
+
+EXPORT_C MSenProperties::TSenPropertiesClassType CSenLayeredTransportProperties::PropertiesClassType()
+ {
+ return ESenLayeredTransportProperties;
+ }
+
+EXPORT_C void CSenLayeredTransportProperties::WriteToL(RWriteStream& aWriteStream)
+ {
+ CSenLayeredXmlProperties::WriteToL(aWriteStream);
+ }
+
+EXPORT_C void CSenLayeredTransportProperties::ReadFromL(const TDesC8& aBuffer)
+ {
+ CSenLayeredXmlProperties::ReadFromL(aBuffer);
+ }
+
+EXPORT_C HBufC8* CSenLayeredTransportProperties::AsUtf8L()
+ {
+ return CSenLayeredXmlProperties::AsUtf8L();
+ }
+
+EXPORT_C HBufC8* CSenLayeredTransportProperties::AsUtf8LC()
+ {
+ return CSenLayeredXmlProperties::AsUtf8LC();
+ }
+
+
+EXPORT_C TBool CSenLayeredTransportProperties::IsSafeToCast(TSenPropertiesClassType aClass)
+ {
+ if ( aClass == MSenProperties::ESenLayeredTransportProperties )
+ {
+ return ETrue;
+ }
+ else
+ {
+ return CSenLayeredXmlProperties::IsSafeToCast( aClass );
+ }
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::SetPropertyL(const TDesC8& aName,
+ const TDesC8& aValue)
+ {
+ return CSenLayeredXmlProperties::SetPropertyL(aName, aValue);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::PropertyL(const TDesC8& aName,
+ TPtrC8& aValue)
+ {
+ return CSenLayeredXmlProperties::PropertyL(aName, aValue);
+ }
+
+
+EXPORT_C TInt CSenLayeredTransportProperties::PropertyL(const TDesC8& aName,
+ MSenProperty*& aValue,
+ TSenPropertiesLayer aLayer)
+ {
+ return CSenLayeredXmlProperties::PropertyL(aName, aValue, aLayer);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::PropertyL(const TDesC8& aName,
+ MSenProperty*& aValue)
+ {
+ return CSenLayeredXmlProperties::PropertyL(aName, aValue);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::PropertiesByTypeL(
+ const TDesC8& aType,
+ RPointerArray<MSenProperty>& aArray)
+ {
+ return CSenLayeredXmlProperties::PropertiesByTypeL(aType, aArray);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::SetIntPropertyL(const TDesC8& aName,
+ const TInt aValue)
+ {
+ return CSenLayeredXmlProperties::SetIntPropertyL(aName, aValue);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::IntPropertyL(const TDesC8& aName,
+ TInt& aValue)
+ {
+ return CSenLayeredXmlProperties::IntPropertyL(aName, aValue);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::SetBoolPropertyL(const TDesC8& aName,
+ const TBool aValue)
+ {
+ return CSenLayeredXmlProperties::SetBoolPropertyL(aName, aValue);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::BoolPropertyL(const TDesC8& aName,
+ TBool& aValue)
+ {
+ return CSenLayeredXmlProperties::BoolPropertyL(aName, aValue);
+ }
+
+EXPORT_C void CSenLayeredTransportProperties::WriteToL(RWriteStream& aWriteStream, TSenPropertiesLayer aLayer)
+ {
+ CSenLayeredXmlProperties::WriteToL(aWriteStream, aLayer);
+ }
+
+EXPORT_C void CSenLayeredTransportProperties::ReadFromL(const TDesC8& aBuffer, TSenPropertiesLayer aLayer)
+ {
+ CSenLayeredXmlProperties::ReadFromL(aBuffer, aLayer);
+ }
+
+EXPORT_C HBufC8* CSenLayeredTransportProperties::AsUtf8L(TSenPropertiesLayer aLayer)
+ {
+ return CSenLayeredXmlProperties::AsUtf8L(aLayer);
+ }
+
+EXPORT_C HBufC8* CSenLayeredTransportProperties::AsUtf8LC(TSenPropertiesLayer aLayer)
+ {
+ return CSenLayeredXmlProperties::AsUtf8LC(aLayer);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::ShrinkTo(TSenPropertiesLayer aLayer)
+ {
+ return CSenLayeredXmlProperties::ShrinkTo(aLayer);
+ }
+
+EXPORT_C void CSenLayeredTransportProperties::ExpandToL(TSenPropertiesLayer aLayer)
+ {
+ CSenLayeredXmlProperties::ExpandToL(aLayer);
+ }
+
+EXPORT_C MSenLayeredProperties::TSenPropertiesLayer CSenLayeredTransportProperties::TopLayer()
+ {
+ return CSenLayeredXmlProperties::TopLayer();
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::SetPropertyL(const TDesC8& aName,
+ const TDesC8& aValue,
+ TSenPropertiesLayer aLayer)
+ {
+ return CSenLayeredXmlProperties::SetPropertyL(aName, aValue, aLayer);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::PropertyL(const TDesC8& aName,
+ TPtrC8& aValue,
+ TSenPropertiesLayer aLayer)
+ {
+ return CSenLayeredXmlProperties::PropertyL(aName, aValue, aLayer);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::SetIntPropertyL(const TDesC8& aName,
+ const TInt aValue,
+ TSenPropertiesLayer aLayer)
+ {
+ return CSenLayeredXmlProperties::SetIntPropertyL(aName, aValue, aLayer);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::IntPropertyL(const TDesC8& aName,
+ TInt& aValue,
+ TSenPropertiesLayer aLayer)
+ {
+ return CSenLayeredXmlProperties::IntPropertyL(aName, aValue, aLayer);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::SetBoolPropertyL(const TDesC8& aName,
+ const TBool aValue,
+ TSenPropertiesLayer aLayer)
+ {
+ return CSenLayeredXmlProperties::SetBoolPropertyL(aName, aValue, aLayer);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::BoolPropertyL(const TDesC8& aName,
+ TBool& aValue,
+ TSenPropertiesLayer aLayer)
+ {
+ return CSenLayeredXmlProperties::BoolPropertyL(aName, aValue, aLayer);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::SetPropertyL(const TDesC8& aName,
+ const TDesC8& aValue,
+ const TDesC8& aType)
+ {
+ return CSenLayeredXmlProperties::SetPropertyL(aName, aValue, aType);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::PropertyL(const TDesC8& aName,
+ TPtrC8& aValue,
+ TPtrC8& aType)
+ {
+ return CSenLayeredXmlProperties::PropertyL(aName, aValue, aType);
+ }
+EXPORT_C MSenProperties* CSenLayeredTransportProperties::CloneL() const
+ {
+ CSenElement& element = ipFragment->AsElement();
+
+ CSenLayeredTransportProperties* pProperties = NewLC(element);
+ if ( ipChildProperties )
+ {
+ CSenLayeredTransportProperties* pChildProperties =
+ (CSenLayeredTransportProperties*)ipChildProperties->CloneL();
+ pProperties->ipChildProperties = pChildProperties;
+ }
+
+ CleanupStack::Pop(pProperties);
+ return pProperties;
+ }
+
+EXPORT_C MSenProperties* CSenLayeredTransportProperties::Clone(TInt& aOkOrError) const
+ {
+ MSenProperties* pClone = NULL;
+ TRAP( aOkOrError, pClone = CloneL(); )
+ return pClone;
+ }
+
+EXPORT_C void CSenLayeredTransportProperties::BaseConstructL(const TDesC8& aLocalname,
+ const TDesC8& aXml,
+ CSenXmlReader* aParser,
+ RStringPool* aStringPool)
+ {
+ CSenLayeredXmlProperties::BaseConstructL(aLocalname, aXml, aParser, aStringPool);
+ }
+
+EXPORT_C void CSenLayeredTransportProperties::BaseConstructL(const TDesC8& aNamespace,
+ const TDesC8& aLocalname,
+ const TDesC8& aXml,
+ CSenXmlReader* aParser,
+ RStringPool* aStringPool)
+ {
+ CSenLayeredXmlProperties::BaseConstructL(aNamespace, aLocalname, aXml, aParser, aStringPool);
+ }
+
+EXPORT_C void CSenLayeredTransportProperties::BaseConstructL(const TDesC8& aNamespace,
+ const TDesC8& aLocalname,
+ const TDesC8& aQualifiedName,
+ const TDesC8& aXml,
+ CSenXmlReader* aParser,
+ RStringPool* aStringPool)
+ {
+ CSenLayeredXmlProperties::BaseConstructL(aNamespace, aLocalname, aQualifiedName,
+ aXml, aParser, aStringPool);
+ }
+
+EXPORT_C void CSenLayeredTransportProperties::BaseConstructL(const CSenElement& aElement,
+ RStringPool* aStringPool)
+ {
+ CSenLayeredXmlProperties::BaseConstructL(aElement, aStringPool);
+ }
+
+EXPORT_C CSenLayeredTransportProperties::CSenLayeredTransportProperties()
+ {
+ }
+
+EXPORT_C CSenLayeredTransportProperties::~CSenLayeredTransportProperties()
+ {
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::DeviceIDL(TPtrC8& aDeviceID)
+ {
+ return PropertyL(KDeviceIDLocalName, aDeviceID);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::SoapActionL(TPtrC8& aAction)
+ {
+ return PropertyL(KSoapActionLocalName, aAction);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::IapIdL(TUint32& aCurrentIapId)
+ {
+ TPtrC8 value;
+ TInt retVal = PropertyL(KIapIdLocalName, value);
+
+ if ( retVal == KErrNone )
+ {
+ TLex8 lex(value);
+ retVal = lex.Val(aCurrentIapId, EDecimal);
+ }
+ if(aCurrentIapId > 0) return retVal;
+ else return KErrNotFound;
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::SnapIdL(TUint32& aCurrentSnapId)
+ {
+ TPtrC8 value;
+ TInt retVal = PropertyL(KSnapIdLocalName, value);
+
+ if ( retVal == KErrNone )
+ {
+ TLex8 lex(value);
+ retVal = lex.Val(aCurrentSnapId, EDecimal);
+ }
+
+ if(aCurrentSnapId > 0) return retVal;
+ else return KErrNotFound;
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::ProxyPortL(TInt& aProxyPort)
+ {
+ TPtrC8 value;
+ TInt retVal = PropertyL(KProxyPortLocalName, value);
+ if ( retVal == KErrNone )
+ {
+ TLex8 lex(value);
+ TUint proxyPort;
+ retVal = lex.Val(proxyPort, EDecimal);
+ if ( retVal == KErrNone )
+ {
+ aProxyPort = proxyPort;
+ }
+ }
+
+ return retVal;
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::HeartbeatL(TInt& aHeartbeat)
+ {
+ return IntPropertyL(KSenConnectionHeartbeat, aHeartbeat);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::MaxTimeToLiveL(TInt& aMax)
+ {
+ return IntPropertyL(KSenConnectionHeartbeatMaxTTL, aMax);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::MinTimeToLiveL(TInt& aMin)
+ {
+ return IntPropertyL(KSenConnectionHeartbeatMinTTL, aMin);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::ProxyHostL(TPtrC8& aProxyHost)
+ {
+ return PropertyL(KProxyHostLocalName, aProxyHost);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::ProxyUsageL(TBool& aValue)
+ {
+ return BoolPropertyL(KProxyUsageLocalName, aValue);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::IAPDialogL(TBool& aValue)
+ {
+ return BoolPropertyL(KSenIAPDoNotPrompt, aValue);
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::SnapDialogL(TBool& aValue)
+ {
+ return BoolPropertyL(KSenSNAPDoNotPrompt, aValue);
+ }
+EXPORT_C TInt CSenLayeredTransportProperties::UserAgentL(TPtrC8& aUserAgent)
+ {
+ return PropertyL(KUserAgentLocalName, aUserAgent);
+ }
+EXPORT_C TInt CSenLayeredTransportProperties::DownloadFolderL(TPtrC8& aDownloadFolder)
+ {
+ return PropertyL(KDownloadFolderLocalName, aDownloadFolder);
+ }
+EXPORT_C TInt CSenLayeredTransportProperties::SetMaxRetryTTLL(TInt aMaxRetryTTL)
+ {
+ return SetIntPropertyL( KSenConnectionRetryMaxTTL, aMaxRetryTTL );
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::MaxRetryTTLL(TInt& aMaxRetryTTL)
+ {
+ return IntPropertyL( KSenConnectionRetryMaxTTL, aMaxRetryTTL );
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::SetMinRetryTTLL(TInt aMinRetryTTL)
+ {
+ return SetIntPropertyL( KSenConnectionRetryMinTTL, aMinRetryTTL );
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::MinRetryTTLL(TInt& aMinRetryTTL)
+ {
+ return IntPropertyL( KSenConnectionRetryMinTTL, aMinRetryTTL );
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::SetRetryDeltaTimeoutL(TInt aTimeout)
+ {
+ return SetIntPropertyL( KSenConnectionRetryDelta, aTimeout );
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::RetryDeltaTimeoutL(TInt& aTimeout)
+ {
+ return IntPropertyL( KSenConnectionRetryDelta, aTimeout );
+ }
+
+
+
+EXPORT_C TInt CSenLayeredTransportProperties::FileAttachmentL(const TDesC8& aCid, HBufC8*& aFileName)
+ {
+ _LIT8(KAttachment,"Attachment");
+ TPtrC8 pFileAttachments;
+ TInt err(KErrNone);
+ err = PropertyL(KFileAttachmentsLocalName,pFileAttachments);
+ if (err!=KErrNone)
+ {
+ return err;
+ }
+ else
+ {
+ CSenXmlReader* reader = CSenXmlReader::NewL(KXmlParserMimeType); // use libxml2 sax parser
+ CleanupStack::PushL(reader);
+ CSenDomFragment* pFragment = CSenDomFragment::NewL();
+ CleanupStack::PushL(pFragment);
+ pFragment->SetReader(*reader);
+ pFragment->BuildFrom(pFileAttachments);
+ HBufC8* pLocalName = HBufC8::NewLC(KAttachment().Length()+aCid.Length());
+ TPtr8 localNameDes = pLocalName->Des();
+ localNameDes.Append(KAttachment);
+ localNameDes.Append(aCid);
+ CSenElement* pElement = pFragment->AsElement().Element(*pLocalName);
+ if(pElement)
+ {
+ if (aFileName)
+ {
+ delete aFileName;
+ aFileName = NULL;
+ }
+ aFileName = HBufC8::NewL(pElement->Content().Length());
+ TPtr8 fileNameDes = aFileName->Des(); //CodeScannerWarnings
+ fileNameDes.Append(pElement->Content());
+ CleanupStack::PopAndDestroy(pLocalName);
+ CleanupStack::PopAndDestroy(pFragment);
+ CleanupStack::PopAndDestroy(reader);
+ return KErrNone;
+ }
+ else
+ {
+ CleanupStack::PopAndDestroy(pLocalName);
+ CleanupStack::PopAndDestroy(pFragment);
+ CleanupStack::PopAndDestroy(reader);
+ return KErrNotFound;
+ }
+ }
+ }
+
+EXPORT_C TInt CSenLayeredTransportProperties::MwsNamespaceL(TPtrC8& aMwsNamespace)
+ {
+ return PropertyL(KMwsNamespaceLocalName, aMwsNamespace);
+ }
+// END OF FILE
+
+