--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsframework/src/sencontextitem.cpp Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,828 @@
+/*
+* Copyright (c) 2002-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 FILES
+#include "sencontextitem.h"
+
+
+#include "msencoreservicemanager.h" // internal: Core\inc
+#include "msenremotehostlet.h"
+
+#include "SenXmlElement.h" // Xml\inc
+#include "SenXmlReader.h" // Xml\inc
+#include "senwsdescription.h" // ServiceDescription\inc
+#include "SenHttpTransportProperties.h" // Utils\inc
+#include "senlayeredhttptransportproperties.h"
+
+#include "senmessagebase.h"
+#include "SenSoapMessage2.h"
+#include "senatomentry.h"
+#include "SenSoapMessage.h"
+
+#include "MSenMessage.h"
+
+#include "senchunk.h"
+
+// From MSenContextItem:
+MSenContextItem::TClass CSenContextItem::Type() const
+ {
+ return MSenContextItem::EContextItem;
+ }
+
+CSenContextItem::CSenContextItem(TAny* apData, MSenContextItem::TData aType, TInt* apFlags)
+: ipData(apData), iType(aType), ipFlags(apFlags)
+// NOTE: currently only "flag" is ownership: **if ipFlags == NULL, data is owned**
+ {
+ }
+
+EXPORT_C CSenContextItem::~CSenContextItem()
+ {
+ if(ipFlags == NULL)
+ {
+ // Destroy the owned data
+ switch(iType)
+ {
+ case ETDesC8:
+ {
+ TDesC8* p = (TDesC8*) ipData;
+ delete p;
+ ipData = NULL;
+ }
+ break;
+ case ETInt:
+ {
+ TInt* p = (TInt*) ipData;
+ delete p;
+ ipData = NULL;
+ }
+ break;
+ case ETUint:
+ {
+ TUint* p = (TUint*) ipData;
+ delete p;
+ ipData = NULL;
+ }
+ break;
+ case EMSenProperties:
+ {
+ MSenProperties* pM = (MSenProperties*) ipData;
+ MSenProperties::TSenPropertiesClassType t = pM->PropertiesClassType();
+ if( t == MSenProperties::ESenXmlProperties ||
+ t == MSenProperties::ESenTransportProperties ||
+ t == MSenProperties::ESenHttpTransportProperties ||
+ t == MSenProperties::ESenVtcpTransportProperties )
+ {
+ CSenXmlProperties* p = (CSenXmlProperties*)ipData;
+ delete p;
+ ipData = NULL;
+ }
+ else if( t == MSenProperties::ESenLayeredXmlProperties ||
+ t == MSenProperties::ESenLayeredTransportProperties ||
+ t == MSenProperties::ESenLayeredHttpTransportProperties ||
+ t == MSenProperties::ESenLayeredVtcpTransportProperties )
+ {
+ CSenLayeredXmlProperties* p = (CSenLayeredXmlProperties*)ipData;
+ delete p;
+ ipData = NULL;
+ }
+ }
+ case ECSenWSDescription:
+ {
+ CSenWSDescription* p = (CSenWSDescription*) ipData;
+ delete p;
+ ipData = NULL;
+ }
+ break;
+ case ECSenXmlReader:
+ {
+ CSenXmlReader* p = (CSenXmlReader*) ipData;
+ delete p;
+ ipData = NULL;
+ }
+ break;
+ case ECSenElement:
+ {
+ CSenElement* p = (CSenElement*) ipData;
+ delete p;
+ ipData = NULL;
+ }
+ break;
+ case ECSenSoapMessage:
+ {
+ CSenSoapEnvelope* p = (CSenSoapEnvelope*) ipData;
+ delete p;
+ ipData = NULL;
+ }
+ break;
+ case ECSenSoapEnvelope2:
+ {
+ CSenSoapEnvelope2* p = (CSenSoapEnvelope2*) ipData;
+ delete p;
+ ipData = NULL;
+ }
+ break;
+ case ECSenAtomMessage:
+ {
+ CSenAtomEntry* p = (CSenAtomEntry*) ipData;
+ delete p;
+ ipData = NULL;
+ }
+ break;
+ case ECSenMessageBase:
+ {
+ CSenMessageBase* p = (CSenMessageBase*) ipData;
+ delete p;
+ ipData = NULL;
+ }
+ break;
+ case ETAny: // delete void* is not defined(!)
+ case EMSenCoreServiceManager:
+ case EMSenRemoteServiceConsumer:
+ case EMSenRemoteHostlet:
+ case EMSenMessage:
+ default:
+ {
+ #ifdef _SENDEBUG
+ User::Panic(KErrUnknown, _LIT("~SenCtxItem"));
+ #endif
+ }
+ }
+ }
+ else delete ipFlags; // onlyg ipFlags were owned..
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(TAny* apNotOwned)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apNotOwned);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(TAny* apNotOwned)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(apNotOwned, MSenContextItem::ETAny, new (ELeave) TInt(1)); // not owned
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+
+/*
+EXPORT_C CSenContextItem* CSenContextItem::NewL(TAny* apValue, TBool aIsOwnedOrNot)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apValue, aIsOwnedOrNot);
+ // REMOVED, REASON: if owned: deleting of void* pointer is undefined =>
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(TAny* apValue, TBool aIsOwnedOrNot)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(apValue, MSenContextItem::ETAny, aIsOwnedOrNot?NULL:(new (ELeave) TInt(1)));
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+*/
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(const TDesC8& aRefToValue)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(aRefToValue);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(const TDesC8& aRefToValue)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(&(TDesC8&)aRefToValue, MSenContextItem::ETDesC8, new (ELeave) TInt(1)); // not owned
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(TDesC8* apOwned)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apOwned);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(TDesC8* apOwned)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(apOwned, MSenContextItem::ETDesC8, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(const TInt apValue)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apValue);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(const TInt apValue)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(new (ELeave) TInt(apValue), MSenContextItem::ETInt, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(TInt* apOwned)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apOwned);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(TInt* apOwned)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(apOwned, MSenContextItem::ETInt, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(const TUint aValue)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(aValue);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(const TUint aValue)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(new (ELeave) TUint(aValue), MSenContextItem::ETUint, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(TUint* apOwned)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apOwned);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(TUint* apOwned)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(apOwned, MSenContextItem::ETInt, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(MSenCoreServiceManager& aValue)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(aValue);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(MSenCoreServiceManager& aValue)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(&aValue, MSenContextItem::EMSenCoreServiceManager, new (ELeave) TInt(1));
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(MSenRemoteServiceConsumer& aValue)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(aValue);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(MSenRemoteServiceConsumer& aValue)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(&aValue, MSenContextItem::EMSenRemoteServiceConsumer, new (ELeave) TInt(1));
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(MSenRemoteHostlet& aValue)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(aValue);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(MSenRemoteHostlet& aValue)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(&aValue, MSenContextItem::EMSenRemoteHostlet, new (ELeave) TInt(1));
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenWSDescription& aValue)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(aValue);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenWSDescription& aValue)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(&aValue, MSenContextItem::ECSenWSDescription, new (ELeave) TInt(1));
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenWSDescription* apOwned)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apOwned);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenWSDescription* apOwned)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(apOwned, MSenContextItem::ECSenWSDescription, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenChunk& aValue)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(aValue);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenChunk& aValue)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(&aValue, MSenContextItem::ECSenChunk, new (ELeave) TInt(1));
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenChunk* apOwned)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apOwned);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenChunk* apOwned)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(apOwned, MSenContextItem::ECSenChunk, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+
+
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenElement& aValue)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(aValue);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenElement& aValue)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(&aValue, MSenContextItem::ECSenElement, new (ELeave) TInt(1));
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenElement* apOwned)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apOwned);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenElement* apOwned)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(apOwned, MSenContextItem::ECSenElement, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenSoapMessage& aValue)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(aValue);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenSoapMessage& aValue)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(&aValue, MSenContextItem::ECSenSoapMessage, new (ELeave) TInt(1));
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(MSenMessage& aValue)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(aValue);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(MSenMessage& aValue)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(&aValue, MSenContextItem::EMSenMessage, new (ELeave) TInt(1));
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenSoapMessage* apOwned)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apOwned);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenSoapMessage* apOwned)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(apOwned, MSenContextItem::ECSenSoapMessage, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenSoapEnvelope2* apOwned)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apOwned);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenSoapEnvelope2* apOwned)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(apOwned, MSenContextItem::ECSenSoapEnvelope2, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenAtomEntry* apOwned)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(apOwned, MSenContextItem::ECSenAtomMessage, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenAtomEntry* apOwned)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apOwned);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenMessageBase* apOwned)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apOwned);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenMessageBase* apOwned)
+ {
+ CSenContextItem* pNew = new (ELeave) CSenContextItem(apOwned, MSenContextItem::ECSenMessageBase, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenXmlReader& aValue)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(aValue);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenXmlReader& aValue)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(&aValue, MSenContextItem::ECSenXmlReader, new (ELeave) TInt(1));
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenXmlReader* apOwned)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apOwned);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenXmlReader* apOwned)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(apOwned, MSenContextItem::ECSenXmlReader, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(MSenProperties& aValue)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(aValue);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(MSenProperties& aValue)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(&aValue, MSenContextItem::EMSenProperties, new (ELeave) TInt(1));
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenXmlProperties* apOwned)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apOwned);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenXmlProperties* apOwned)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(apOwned, MSenContextItem::EMSenProperties, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewL(CSenLayeredXmlProperties* apOwned)
+ {
+ CSenContextItem* pNew = CSenContextItem::NewLC(apOwned);
+ CleanupStack::Pop(pNew);
+ return pNew;
+ }
+
+EXPORT_C CSenContextItem* CSenContextItem::NewLC(CSenLayeredXmlProperties* apOwned)
+ {
+ CSenContextItem* pNew =
+ new (ELeave) CSenContextItem(apOwned, MSenContextItem::EMSenProperties, NULL);
+ CleanupStack::PushL(pNew);
+ return pNew;
+ }
+
+// New methods:
+TAny* CSenContextItem::ToAnyL() const
+ {
+ if( iType != MSenContextItem::ETAny )
+ {
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ }
+ return ipData;
+ }
+
+TPtrC8 CSenContextItem::ToPtrC8L() const
+ {
+ if( iType != MSenContextItem::ETDesC8 )
+ {
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ }
+
+ return *((TDesC8*)ipData);
+ }
+
+const TDesC8* CSenContextItem::ToDesC8L() const
+ {
+ if( iType != MSenContextItem::ETDesC8 )
+ {
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ }
+
+ return (TDesC8*)ipData;
+ }
+
+
+const TInt* CSenContextItem::ToIntL() const
+ {
+ if( iType != MSenContextItem::ETInt )
+ {
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ }
+ return (TInt*)ipData;
+ }
+
+const TUint* CSenContextItem::ToUintL() const
+ {
+ if( iType != MSenContextItem::ETInt )
+ {
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ }
+ return (TUint*)ipData;
+ }
+
+MSenCoreServiceManager& CSenContextItem::ToSenCoreL() const
+ {
+ if( iType != MSenContextItem::EMSenCoreServiceManager )
+ {
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ }
+ return *((MSenCoreServiceManager*)ipData);
+ }
+
+MSenRemoteServiceConsumer& CSenContextItem::ToSenRemoteConsumerL() const
+ {
+ if( iType != MSenContextItem::EMSenRemoteServiceConsumer )
+ {
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ }
+ return *((MSenRemoteServiceConsumer*)ipData);
+ }
+
+MSenRemoteHostlet& CSenContextItem::ToSenRemoteHostletL() const
+ {
+ if( iType != MSenContextItem::EMSenRemoteHostlet )
+ {
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ }
+ return *((MSenRemoteHostlet*)ipData);
+ }
+
+CSenWSDescription& CSenContextItem::ToSenServiceDescriptionL() const
+ {
+ if(ipData)
+ {
+ if( iType == MSenContextItem::ECSenWSDescription )
+ {
+ CSenWSDescription* pDesc = (CSenWSDescription*) ipData;
+ if( pDesc->HasSuperClass( MSenServiceDescription::EWSDescription ) )
+ {
+ return *((CSenWSDescription*)ipData);
+ }
+ else if ( pDesc->DescriptionClassType() == MSenServiceDescription::EWSDescription )
+ {
+ return *((CSenWSDescription*)ipData);
+ }
+ }
+ }
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ return *((CSenWSDescription*)ipData);
+ }
+
+CSenServiceSession& CSenContextItem::ToSenServiceSessionL() const
+ {
+ if(ipData)
+ {
+ if( iType == MSenContextItem::ECSenWSDescription )
+ {
+ CSenWSDescription* pDesc = (CSenWSDescription*) ipData;
+ if( pDesc->HasSuperClass( MSenServiceDescription::EServiceSession ) )
+ {
+ return *((CSenServiceSession*)ipData);
+ }
+ else if ( pDesc->DescriptionClassType() == MSenServiceDescription::EServiceSession )
+ {
+ return *((CSenServiceSession*)ipData);
+ }
+ }
+ }
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ return *((CSenServiceSession*)ipData);
+ }
+
+CSenXmlProperties& CSenContextItem::ToSenXmlPropertiesL() const
+ {
+ if(ipData)
+ {
+ if( iType == MSenContextItem::EMSenProperties )
+ {
+ MSenProperties* pProp = (MSenProperties*) ipData;
+ MSenProperties::TSenPropertiesClassType t = pProp->PropertiesClassType();
+ if( t == MSenProperties::ESenXmlProperties ||
+ t == MSenProperties::ESenTransportProperties ||
+ t == MSenProperties::ESenHttpTransportProperties ||
+ t == MSenProperties::ESenVtcpTransportProperties )
+ {
+ return *((CSenXmlProperties*)ipData);
+ }
+ }
+ }
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ return *((CSenXmlProperties*)ipData);
+ }
+
+CSenLayeredXmlProperties& CSenContextItem::ToSenLayeredXmlPropertiesL() const
+ {
+ if(ipData)
+ {
+ if( iType == MSenContextItem::EMSenProperties )
+ {
+ MSenProperties* pProp = (MSenProperties*) ipData;
+ MSenProperties::TSenPropertiesClassType t = pProp->PropertiesClassType();
+ if( t == MSenProperties::ESenLayeredXmlProperties ||
+ t == MSenProperties::ESenLayeredTransportProperties ||
+ t == MSenProperties::ESenLayeredHttpTransportProperties ||
+ t == MSenProperties::ESenLayeredVtcpTransportProperties )
+ {
+ return *((CSenLayeredXmlProperties*)ipData);
+ }
+ }
+ }
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ return *((CSenLayeredXmlProperties*)ipData);
+ }
+
+MSenMessage& CSenContextItem::ToSenMessageL() const
+ {
+ if(ipData)
+ {
+ if( iType == MSenContextItem::EMSenMessage )
+ {
+ return *((MSenMessage*)ipData);
+ }
+ else if (iType == MSenContextItem::ECSenSoapEnvelope2)
+ {
+ return *((CSenSoapEnvelope2*)ipData);
+ }
+ else if (iType == MSenContextItem::ECSenAtomMessage)
+ {
+ return *((CSenAtomEntry*)ipData);
+ }
+ }
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ return *((MSenMessage*)ipData);
+ }
+
+CSenSoapMessage& CSenContextItem::ToSenSoapMessageL() const
+ {
+ if(ipData)
+ {
+ if( iType == MSenContextItem::ECSenSoapMessage )
+ {
+ return *((CSenSoapMessage*)ipData);
+ }
+ }
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ return *((CSenSoapMessage*)ipData);
+ }
+
+
+CSenChunk& CSenContextItem::ToSenChunkL() const
+ {
+ if( iType != MSenContextItem::ECSenChunk )
+ {
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ }
+ return *((CSenChunk*)ipData);
+ }
+
+
+CSenElement& CSenContextItem::ToSenElementL() const
+ {
+ if( iType != MSenContextItem::ECSenElement )
+ {
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ }
+ return *((CSenElement*)ipData);
+ }
+
+CSenXmlReader& CSenContextItem::ToSenXmlReaderL() const
+ {
+ if( iType != MSenContextItem::ECSenXmlReader )
+ {
+ User::Leave( KErrSenCtxItemTypeMismatch );
+ }
+ return *((CSenXmlReader*)ipData);
+ }
+// End of File
+