--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsframework/src/sentransportcontext.cpp Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,300 @@
+/*
+* 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 "senwsdescription.h"
+#include "sentransportcontext.h"
+#include "msencoreservicemanager.h"
+#include "senservicesession.h"
+#include "sencontextitem.h"
+
+EXPORT_C CSenTransportContext::CSenTransportContext()
+: CSenContext(SenContext::EBoth)
+ {
+ }
+
+EXPORT_C CSenTransportContext::~CSenTransportContext()
+ {
+ }
+
+
+EXPORT_C CSenTransportContext* CSenTransportContext::NewL(MSenCoreServiceManager& aCore,
+ CSenWSDescription& aSessionInitializer)
+ {
+ CSenTransportContext* pNew = CSenTransportContext::NewLC(aCore, aSessionInitializer);
+ CleanupStack::Pop();
+ return pNew;
+ }
+
+EXPORT_C CSenTransportContext* CSenTransportContext::NewLC(MSenCoreServiceManager& aCore,
+ CSenWSDescription& aSessionInitializer)
+ {
+// CSenXmlReader* reader = aCore.XMLReader();
+// if(!reader) User::Leave(KErrArgument);
+ CSenTransportContext* pNew = new (ELeave) CSenTransportContext();
+ CleanupStack::PushL(pNew);
+ pNew->BaseConstructL(aCore, aSessionInitializer, NULL);
+ return pNew;
+ }
+
+EXPORT_C CSenTransportContext* CSenTransportContext::NewL(MSenCoreServiceManager& aCore,
+ CSenWSDescription& aSessionInitializer,
+ CSenServiceSession& aInvoker)
+ {
+ CSenTransportContext* pNew = CSenTransportContext::NewLC(aCore, aSessionInitializer, aInvoker);
+ CleanupStack::Pop();
+ return pNew;
+ }
+
+EXPORT_C CSenTransportContext* CSenTransportContext::NewLC(MSenCoreServiceManager& aCore,
+ CSenWSDescription& aSessionInitializer,
+ CSenServiceSession& aInvoker)
+ {
+ CSenTransportContext* pNew = new (ELeave) CSenTransportContext();
+ CleanupStack::PushL(pNew);
+ pNew->BaseConstructL(aCore, aSessionInitializer, &aInvoker);
+ return pNew;
+ }
+
+EXPORT_C void CSenTransportContext::BaseConstructL(MSenCoreServiceManager& aCore,
+ CSenWSDescription& aSessionInitializer,
+ CSenServiceSession* apInvoker)
+ {
+ CSenContextItem* pCore = CSenContextItem::NewLC(aCore);
+ User::LeaveIfError( iItems.Append( &KSenCtxKeyCoreServiceManager(), pCore ) );
+ CleanupStack::Pop(pCore);
+
+ CSenContextItem* pInit = CSenContextItem::NewLC(aSessionInitializer);
+ User::LeaveIfError( iItems.Append( &KSenCtxKeySessionInitializer(), pInit ) );
+ CleanupStack::Pop(pInit);
+
+ if(apInvoker)
+ {
+ CSenContextItem* pSess = CSenContextItem::NewLC(*apInvoker);
+ User::LeaveIfError( iItems.Append(&KSenCtxKeyServiceSession(), pSess ) );
+ CleanupStack::Pop(pSess);
+ }
+ }
+
+// From MSenTransportContext:
+//TInt CSenTransportContext::AddCore(MSenCoreServiceManager& aValue)
+// {
+// }
+
+MSenCoreServiceManager& CSenTransportContext::GetCoreL()
+ {
+ TInt index = iItems.Find( KSenCtxKeyCoreServiceManager );
+ User::LeaveIfError( index );
+
+ const CSenContextItem* pItem = iItems.ValueAt(index);
+ if ( pItem == NULL )
+ {
+ User::Leave( KErrNotFound );
+ }
+
+ return pItem->ToSenCoreL();
+
+
+
+ /*
+ TInt leaveCode(KErrNone);
+ MSenCoreServiceManager* pCore = NULL;
+ TRAP( leaveCode, pCore = pItem->ToSenCoreL(); )
+ if( leaveCode == KErrNone )
+ {
+ return pCore;
+ }
+ */
+ }
+
+// TInt CSenTransportContext::AddSession(CSenServiceSession* aValue) { };
+// TInt CSenTransportContext::UpdateSession(CSenServiceSession* aValue) { };
+
+
+//CSenServiceSession& CSenTransportContext::GetSessionL()
+const CSenServiceSession* CSenTransportContext::GetSession()
+ {
+ CSenServiceSession* pSession = NULL;
+ TInt index = iItems.Find( KSenCtxKeyServiceSession );
+ if(index != KErrNotFound)
+ {
+ const CSenContextItem* pItem = iItems.ValueAt(index);
+ if ( pItem )
+ {
+ TInt leaveCode(KErrNone);
+ TRAP( leaveCode, pSession = &(pItem->ToSenServiceSessionL()); )
+ if ( leaveCode != KErrNone )
+ {
+ pSession = NULL;
+ }
+ }
+ }
+ return pSession;
+ }
+
+//TInt CSenTransportContext::AddInitializer(CSenWSDescription* aValue) { };
+
+// TInt CSenTransportContext::UpdateInitializer(CSenWSDescription* aValue);
+
+//const CSenWSDescription* CSenTransportContext::GetInitializer()
+CSenWSDescription& CSenTransportContext::GetInitializerL()
+ {
+ TInt index = iItems.Find( KSenCtxKeySessionInitializer );
+ User::LeaveIfError( index );
+
+ const CSenContextItem* pItem = iItems.ValueAt(index);
+ if ( pItem == NULL )
+ {
+ User::Leave( KErrNotFound );
+ }
+
+ return pItem->ToSenServiceDescriptionL();
+ }
+
+// TInt CSenTransportContext::AddServiceDescription(const TDesC8& aKey, CSenWSDescription* aValue);
+// TInt CSenTransportContext::UpdateServiceDescription(const TDesC8& aKey, CSenWSDescription* aValue);
+// const CSenWSDescription* CSenTransportContext::GetServiceDescriptionL(const TDesC8& aKey);
+// TInt CSenTransportContext::Add(const TDesC8& aKey, MSenRemoteServiceSession& aValue); // protected context
+// TInt CSenTransportContext::Update(const TDesC8& aKey, MSenRemoteServiceSession& aValue);
+// const MSenRemoteServiceSession* CSenTransportContext::GetSenRemoteServiceSessionL(const TDesC8& aKey);
+
+
+ // From MSenContext:
+SenContext::TContextType CSenTransportContext::Type() const
+ {
+ return SenContext::ETransportContext;
+ }
+
+SenContext::TContextDirection CSenTransportContext::Direction() const
+ {
+ return CSenContext::Direction();
+ }
+
+TInt CSenTransportContext::Add(const TDesC8& aKey, const TDesC8& aValue)
+ {
+ return CSenContext::Add(aKey, aValue);
+ }
+
+TInt CSenTransportContext::Update(const TDesC8& aKey, const TDesC8& aValue)
+ {
+ return CSenContext::Update(aKey, aValue);
+ }
+
+const TDesC8* CSenTransportContext::GetDesC8L(const TDesC8& aKey)
+ {
+ return CSenContext::GetDesC8L(aKey);
+ }
+
+TInt CSenTransportContext::Add(const TDesC8& aKey, TInt aValue)
+ {
+ return CSenContext::Add(aKey, aValue);
+ }
+
+TInt CSenTransportContext::Update(const TDesC8& aKey, TInt aValue)
+ {
+ return CSenContext::Update(aKey, aValue);
+ }
+
+const TInt* CSenTransportContext::GetIntL(const TDesC8& aKey)
+ {
+ return CSenContext::GetIntL(aKey);
+ }
+
+TInt CSenTransportContext::Add(const TDesC8& aKey, CSenElement* aValue)
+ {
+ return CSenContext::Add(aKey, aValue);
+ }
+
+TInt CSenTransportContext::Update(const TDesC8& aKey, CSenElement* aValue)
+ {
+ return CSenContext::Update(aKey, aValue);
+ }
+
+const CSenElement* CSenTransportContext::GetSenElementL(const TDesC8& aKey)
+ {
+ return CSenContext::GetSenElementL(aKey);
+ }
+
+TInt CSenTransportContext::Add(const TDesC8& aKey, TAny* aValue)
+ {
+ return CSenContext::Add(aKey, aValue);
+ }
+
+TInt CSenTransportContext::Update(const TDesC8& aKey, TAny* aValue)
+ {
+ return CSenContext::Update(aKey, aValue);
+ }
+
+TAny* CSenTransportContext::GetAnyL(const TDesC8& aKey) //codescannerwarnings
+ {
+ return CSenContext::GetAnyL(aKey); //codescannerwarnings
+ }
+
+TInt CSenTransportContext::Remove(const TDesC8& aKey)
+ {
+ return CSenContext::Remove(aKey);
+ }
+
+TInt CSenTransportContext::Count() const
+ {
+ return CSenContext::Count();
+ }
+
+TPtrC8 CSenTransportContext::KeyAtL(TInt aIndex)
+ {
+ return CSenContext::KeyAtL(aIndex);
+ }
+
+void CSenTransportContext::Reset()
+ {
+ CSenContext::Reset();
+ }
+
+
+TInt CSenTransportContext::SetDirection( SenContext::TContextDirection aDirection )
+ {
+ return CSenContext::SetDirection( aDirection );
+ }
+
+const CSenXmlReader* CSenTransportContext::GetParser()
+ {
+ CSenXmlReader* reader = NULL;
+ MSenCoreServiceManager* core = NULL;
+ TInt leaveCode(KErrNone);
+ TRAP( leaveCode, core = &GetCoreL(); )
+ if( leaveCode == KErrNone && core)
+ {
+ TRAP( leaveCode, reader = core->XMLReader(); )
+ if( leaveCode == KErrNone && reader )
+ {
+ return reader;
+ }
+
+ }
+ return NULL;
+ }
+
+
+
+// End of File