webservices/wsframework/inc/senprovider.inl
changeset 0 62f9d29f7211
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsframework/inc/senprovider.inl	Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,229 @@
+/*
+* Copyright (c) 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:    Header declaration
+*
+*/
+
+
+
+
+
+
+
+
+// Interface's (abstract base class's) static factory method implementation.
+// Asks ECOM plug-in framework to instantiate appropriate concrete plug-in
+// implementation.
+
+// What to do if there are NO providers to be found - should there always be a 
+// "dummy" provider?
+
+inline CSenProvider* CSenProvider::NewL()
+    {
+    // Wish to instantiate the default provider - just a test provider...
+    const TUid KTestProviderUid = {0x10273114};
+    
+    // Find implementation behind KTestProviderUid.
+    TAny* intf = REComSession::CreateImplementationL(KTestProviderUid, 
+        _FOFF (CSenProvider, 
+        iDtor_ID_Key), 
+        NULL);
+
+    if(intf)
+        {
+        CSenProvider* provider = reinterpret_cast <CSenProvider*> (intf);
+        CleanupStack::PushL(provider);
+        provider->iCriticalSection.CreateLocal();
+        _LIT8(KTestProviderCue, "local://com.nokia.provider/TestProvider");
+        provider->iCue=KTestProviderCue().AllocL();
+        CleanupStack::Pop(); // provider
+        }
+
+    return reinterpret_cast <CSenProvider*> (intf);
+    }
+
+// Interface's (abstract base class's) static factory method implementation.
+// Asks ECOM plug-in framework to instantiate appropriate concrete plug-in
+// implementation.
+inline CSenProvider* CSenProvider::NewL(const TDesC8& aCue)
+    {
+#ifndef RD_SEN_COMPILE_SIS_PACKAGE_FILES     
+    const TUid KUidSenHostletPlugin = { 0x02000502 };
+#else
+    const TUid KUidSenHostletPlugin = { 0x10282C5D };
+#endif    
+    
+    TEComResolverParams resolverParams;
+    resolverParams.SetDataType(aCue);
+    resolverParams.SetWildcardMatch(EFalse);
+    
+    // Find implementation for our interface.
+    
+    TAny* intf = REComSession::CreateImplementationL(KUidSenHostletPlugin,
+        _FOFF (CSenProvider, iDtor_ID_Key), 
+        NULL, 
+        resolverParams); 
+    
+    if(intf)
+        {
+        CSenProvider* provider = reinterpret_cast <CSenProvider*> (intf);
+        provider->iCriticalSection.CreateLocal();
+        CleanupStack::PushL(provider);
+        provider->iCue = aCue.AllocL();
+        CleanupStack::Pop(); // provider
+        }
+    
+    return reinterpret_cast<CSenProvider*> (intf);
+    }
+
+
+// Interface's (abstract base class's) destructor
+inline CSenProvider::~CSenProvider()
+    {
+    // If in the NewL some memory is reserved for member data, it must be
+    // released here. This interface does not have any instance variables so
+    // no need to delete anything.
+    
+    // Inform the ECOM framework that this specific instance of the
+    // interface has been destroyed.
+    REComSession::DestroyedImplementation (iDtor_ID_Key);
+    delete iCue;
+    iCue = NULL;
+    iCriticalSection.Close();
+    }
+
+inline TPtrC8 CSenProvider::Endpoint() const
+    {
+    if(iCue)
+        return *iCue;
+    else
+        return KNullDesC8();
+    }
+
+// protected
+inline void CSenProvider::DescribeServiceL(CSenWSDescription& aSD)
+    {
+    aSD.SetEndPointL(Endpoint());
+    aSD.SetContractL(Contract());
+    aSD.SetFrameworkIdL(FrameworkId());
+      
+    if(Exposed())
+        {
+        CSenFacet* pExposed = CSenFacet::NewL();
+        CleanupStack::PushL(pExposed);
+        pExposed->SetNameL(KExposeLocalServiceFacet); // from MSenServiceDescription.h
+        aSD.SetFacetL(*pExposed);
+        CleanupStack::PopAndDestroy(); // pExposed
+        }
+    
+    if(Sharable())
+        {
+        CSenFacet* pSharable = CSenFacet::NewL();
+        CleanupStack::PushL(pSharable);
+        pSharable->SetNameL(KProviderSharableFacet);
+        aSD.SetFacetL(*pSharable);
+        CleanupStack::PopAndDestroy(); // pSharable
+
+       }
+    
+    if(CompleteClientMessages())
+        {
+        CSenFacet* pCompleteClientMsgs = CSenFacet::NewL();
+        CleanupStack::PushL(pCompleteClientMsgs);
+        pCompleteClientMsgs->SetNameL(KProviderCompleteClientMsgsFacet);
+        aSD.SetFacetL(*pCompleteClientMsgs);
+        CleanupStack::PopAndDestroy(); // pCompleteClientMsgs
+        }
+
+    if(LoadOnStartup())
+        {
+        CSenFacet* pLoadOnStartup = CSenFacet::NewL();
+        CleanupStack::PushL(pLoadOnStartup);
+        pLoadOnStartup->SetNameL(KProviderLoadOnStartupFacet);
+        aSD.SetFacetL(*pLoadOnStartup);
+        CleanupStack::PopAndDestroy(); // pLoadOnStartup
+        }
+
+    if(Threadsafe())
+        {
+        CSenFacet* pThreadsafe = CSenFacet::NewL();
+        CleanupStack::PushL(pThreadsafe);
+        pThreadsafe->SetNameL(KProviderThreadsafeFacet);
+        aSD.SetFacetL(*pThreadsafe);
+        CleanupStack::PopAndDestroy(); // pLoadOnStartup
+        }
+    
+    if(Reinitializable())
+        {
+        CSenFacet* pReinitializable = CSenFacet::NewL();
+        CleanupStack::PushL(pReinitializable);
+        pReinitializable->SetNameL(KProviderReinitializableFacet);
+        aSD.SetFacetL(*pReinitializable);
+        CleanupStack::PopAndDestroy(); // pReinitializable
+        }
+    
+    if(StayOnBackground())
+        {
+        CSenFacet* pStayOnBackgroudnd = CSenFacet::NewL();
+        CleanupStack::PushL(pStayOnBackgroudnd);
+        pStayOnBackgroudnd->SetNameL(KProviderStayOnBackgroundFacet);
+        aSD.SetFacetL(*pStayOnBackgroudnd);
+        CleanupStack::PopAndDestroy(); // pStayOnBackgroudnd
+        }
+    }
+  
+inline TBool CSenProvider::Exposed() const
+    {
+    return EFalse;
+    }
+    
+inline TBool CSenProvider::Sharable() const
+    {
+    return EFalse;
+    }
+
+inline TBool CSenProvider::CompleteClientMessages() const
+    {
+    return EFalse;
+    }
+
+
+inline TBool CSenProvider::LoadOnStartup() const
+    {
+    return EFalse;
+    }
+
+inline TBool CSenProvider::Threadsafe() const
+    {
+    return ETrue;
+    }
+
+inline TBool CSenProvider::Reinitializable() const
+    {
+    return EFalse;
+    }
+
+inline TBool CSenProvider::StayOnBackground() const
+    {
+    return EFalse;
+    }
+
+inline TInt CSenProvider::ReinitL()
+    {
+    return KErrNotSupported;
+    }
+
+// END OF FILE
+
+