webservices/wsframework/src/sentransportcontext.cpp
changeset 0 62f9d29f7211
--- /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