webservices/idwsfplugin/src/idwsfcoreserviceconsumer.cpp
changeset 0 62f9d29f7211
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/idwsfplugin/src/idwsfcoreserviceconsumer.cpp	Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,356 @@
+/*
+* Copyright (c) 2002-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 "idwsfcoreserviceconsumer.h"
+
+#include "idwsfservicesession.h"
+#include "sendebug.h" // internal Utils\inc - filelogging MACROs
+#include "midwsfsessionvalidator.h"
+#include "msenremotehostlet.h"
+#include "senlogger.h"
+
+
+
+CIdWsfCoreServiceConsumer* CIdWsfCoreServiceConsumer::NewL(CSIF& aSIF)
+    {
+    CIdWsfCoreServiceConsumer* self = CIdWsfCoreServiceConsumer::NewLC(aSIF);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CIdWsfCoreServiceConsumer* CIdWsfCoreServiceConsumer::NewLC(CSIF& aSIF)
+    {
+    CIdWsfCoreServiceConsumer* self =
+        new (ELeave) CIdWsfCoreServiceConsumer(
+                                aSIF,
+                                MSenServiceDescription::ECoreServiceConsumer);
+    CleanupStack::PushL(self);
+    self->BaseConstructL();
+    return self;
+    }
+
+// constructor
+CIdWsfCoreServiceConsumer::CIdWsfCoreServiceConsumer(
+                                                 CSIF& aSIF,
+                                                 TDescriptionClassType aType)
+    : CSenInternalServiceConsumer(aType,aSIF),
+    iService(NULL),
+    iServedConsumer(NULL)
+    {
+    }
+
+void CIdWsfCoreServiceConsumer::BaseConstructL()
+    {
+    CSenInternalServiceConsumer::ConstructL();
+    }
+
+// destructor
+CIdWsfCoreServiceConsumer::~CIdWsfCoreServiceConsumer()
+    {
+    delete iService;
+    }
+
+// GETTERS
+
+CSenServiceSession* CIdWsfCoreServiceConsumer::ServiceSession()
+    {
+    return iService;
+    }
+
+CIdWsfServiceSession* CIdWsfCoreServiceConsumer::IdWsfServiceSession()
+    {
+    return iService;
+    }
+
+MSenRemoteServiceConsumer* CIdWsfCoreServiceConsumer::ServedConsumer()
+    {
+    return iServedConsumer;
+    }
+
+TPtrC8 CIdWsfCoreServiceConsumer::TrustAnchor() const
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::TrustAnchor");
+    TPtrC8 trustAnchor = iService->TrustAnchor();
+
+#ifdef _SENDEBUG
+    if(trustAnchor.Length()>0)
+        {
+        TLSLOG(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,(trustAnchor));
+        }
+    else
+        {
+        TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ," - trust anchor not set - ");
+        }
+#endif
+
+    return trustAnchor;
+    }
+
+TPtrC8 CIdWsfCoreServiceConsumer::ProviderId() const
+    {
+    TPtrC8 providerId = iService->ProviderId();
+    return providerId;
+    }
+
+TPtrC8 CIdWsfCoreServiceConsumer::Endpoint()
+    {
+    TPtrC8 endpoint = iService->Endpoint();
+    return endpoint;
+    }
+
+TPtrC8 CIdWsfCoreServiceConsumer::Contract()
+    {
+    TPtrC8 contract =  iService->Contract();
+    return contract;
+    }
+
+TPtrC8 CIdWsfCoreServiceConsumer::FrameworkId()
+    {
+    return iService->FrameworkId();
+    }
+
+const TTime& CIdWsfCoreServiceConsumer::ValidUntilL()
+    {
+    return iService->ValidUntilL();
+    }
+
+
+TPtrC8 CIdWsfCoreServiceConsumer::FrameworkVersion()
+    {
+    TPtrC8 fwVersion = iService->FrameworkVersion();
+
+#ifdef _SENDEBUG
+    if(fwVersion.Length()>0)
+        {
+        TLSLOG(KSenCoreServiceManagerLogChannelBase  , KMaxLogLevel ,(fwVersion));
+        }
+    else
+        {
+        TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ," - framework version not set - ");
+        }
+#endif
+
+    return fwVersion;
+    }
+
+void CIdWsfCoreServiceConsumer::WriteAsXMLToL(RWriteStream& aWriteStream)
+    {
+    iService->WriteAsXMLToL(aWriteStream);
+    }
+
+
+// SETTERS
+
+// 2004-07-28: the ownership of the given session should be transferred in here
+// note: current implementation leaves iService in NULL state, if such arg is
+// given(!). But, it might be as well bad idea to preserve old iService
+// (session) in case of NULL arg.
+void CIdWsfCoreServiceConsumer::SetServiceSessionL( CIdWsfServiceSession* aSession )
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::SetServiceSessionL");
+
+	_LIT8(KTouch, "touch");
+	
+    const TDesC8* attrValue = aSession->AsElement().AttrValue(KTouch);
+    if(attrValue != NULL)
+    	{
+    	AsElement().AddAttrL(KTouch, *attrValue);
+    	}
+    // free memory
+    delete iService;
+    iService = aSession;
+
+    if(iService)
+        {
+        iService->AddConsumerL(*this);
+        }
+    }
+
+TInt CIdWsfCoreServiceConsumer::SetSessionL(MSenRemoteServiceSession& /* aSession */)
+    {
+    return KErrNone;
+    }
+
+void CIdWsfCoreServiceConsumer::SetEndPointL(const TDesC8& aURI)
+    {
+    iService->SetEndPointL(aURI);
+    }
+
+void CIdWsfCoreServiceConsumer::SetContractL(const TDesC8& aContract)
+    {
+    iService->SetContractL(aContract);
+    }
+
+// CHECKERS
+TBool CIdWsfCoreServiceConsumer::Matches(MSenServiceDescription& aPattern)
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::Matches");
+    TBool retVal = iService->Matches(aPattern);
+#ifdef _SENDEBUG
+    if(retVal)  TLSLOG(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,(_L("- TRUE")));
+    else        TLSLOG(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,(_L("- FALSE")));
+#endif
+    return retVal;
+    }
+
+TInt CIdWsfCoreServiceConsumer::HasFacetL(const TDesC8& aURI, TBool& aHasFacet)
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::HasFacetL");
+    TInt retVal = iService->HasFacetL(aURI, aHasFacet);
+    TLSLOG(KSenCoreServiceManagerLogChannelBase  , KNormalLogLevel ,(aURI));
+#ifdef _SENDEBUG
+    if(aHasFacet)   TLSLOG(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,(_L("- TRUE")));
+    else            TLSLOG(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,(_L("- FALSE")));
+#endif
+    return retVal;
+    }
+
+TInt CIdWsfCoreServiceConsumer::FacetValue(TDesC8& aURI, HBufC8*& aValueTo)
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::FacetValue");
+    TInt retVal = iService->FacetValue(aURI, aValueTo);
+#ifdef _SENDEBUG
+    if(aValueTo)
+        {
+        TLSLOG(KSenCoreServiceManagerLogChannelBase  , KNormalLogLevel ,(*aValueTo));
+        }
+#endif
+    return retVal;
+    }
+
+TInt CIdWsfCoreServiceConsumer::AddFacetL(const CSenFacet& aFacet)
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::AddFacetL");
+    TInt retVal = iService->AddFacetL(aFacet);
+    return retVal;
+    }
+
+TInt CIdWsfCoreServiceConsumer::SetFacetL(const CSenFacet& aFacet)
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::SetFacetL");
+    TInt retVal = iService->SetFacetL(aFacet);
+    return retVal;
+    }
+
+TInt CIdWsfCoreServiceConsumer::FacetsL(RFacetArray& aFacetArray)
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::FacetsL");
+    TInt retVal = iService->FacetsL(aFacetArray);
+    return retVal;
+    }
+
+TInt CIdWsfCoreServiceConsumer::RemoveFacet(const TDesC8& aURI)
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::RemoveFacetL");
+    TInt retVal = iService->RemoveFacet(aURI);
+    return retVal;
+    }
+
+TInt CIdWsfCoreServiceConsumer::ScoreMatchL(MSenServiceDescription& aPattern)
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::ScoreMatch");
+    TInt retVal = iService->ScoreMatchL(aPattern);
+    return retVal;
+    }
+
+void CIdWsfCoreServiceConsumer::StartTransaction()
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::StartTransaction");
+    iService->StartTransaction();
+    }
+
+void CIdWsfCoreServiceConsumer::TransactionCompleted()
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::TransactionCompleted");
+    iService->TransactionCompleted();
+    }
+
+    
+void CIdWsfCoreServiceConsumer::SetValidator(MIdWsfSessionValidator* aValidator)
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::SetValidator");
+    iService->SetValidator(aValidator);
+    }
+
+MIdWsfSessionValidator* CIdWsfCoreServiceConsumer::Validator()
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::Validator");
+    return iService->Validator();
+    }
+
+MSenTransport& CIdWsfCoreServiceConsumer::TransportL()
+    {
+    TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::TransportL");
+
+    if(!iServedConsumer)
+        {
+        TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"- Fatal error: served remote consumer is NULL!");
+        User::Leave(KErrNotFound);
+        }
+    return iServedConsumer->TransportL();
+    }
+
+TInt CIdWsfCoreServiceConsumer::ChunkByTxnIdL(TInt aTxnId, CSenChunk*& aChunk)
+    {
+    if(iServedConsumer)
+        {
+        return iServedConsumer->ChunkByTxnIdL(aTxnId, aChunk);
+        }
+    else
+        {
+        TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"CIdWsfCoreServiceConsumer::TransportL:");
+        TLSLOG_L(KSenCoreServiceManagerLogChannelBase  , KMinLogLevel ,"- Consumer not found!");
+        return KErrNotFound;
+        }
+    }
+
+TBool CIdWsfCoreServiceConsumer::HasSuperClass( TDescriptionClassType aType )
+    {
+    if( aType == CSenInternalServiceConsumer::DescriptionClassType() ) // direct superclass!
+        {
+        // If asked type is the know *direct* father/mother, return true:
+        return ETrue; 
+        } 
+    else
+        {
+        // Otherwise, ask from superclass (chain, recursively)
+        return CSenInternalServiceConsumer::HasSuperClass( aType ); 
+        }
+    }
+
+
+MSenRemoteHostlet* CIdWsfCoreServiceConsumer::Hostlet() const
+    {
+    MSenRemoteHostlet* pHostlet = NULL;
+    if( iService )
+        {
+        pHostlet = iService->Hostlet();
+        }
+    return pHostlet;
+    }
+
+
+// End of file
+
+