webservices/wsframework/inc/senprovider.h
changeset 0 62f9d29f7211
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsframework/inc/senprovider.h	Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,197 @@
+/*
+* 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:    Header declaration
+*
+*/
+
+
+
+
+
+
+
+
+#ifndef SEN_PROVIDER_H
+#define SEN_PROVIDER_H
+
+//  INCLUDES
+#include <ecom/ecom.h>
+#include <e32std.h>   // for RCriticalSection
+
+#include <MSenServiceDescription.h>
+#include "senwsdescription.h"
+#include <SenFacet.h>
+
+#include "senidentifier.h" // internal Utils\inc
+#include "msenprovider.h" // internal Framework\inc
+
+// FORWARD DECLARE
+class CSenLocalRequest;
+
+// CLASS DECLARATION
+
+/**
+* Class for delivering SOAP request to Serene and response back.
+* Sub-classing actual Service Providers have to implement MSenProvider
+* interface.
+*
+*/       
+class CSenProvider : public CBase, public MSenProvider
+    {
+    public: // Constructors and destructor
+            /**
+            * Two-phased constructor.
+        */
+        static CSenProvider* NewL(const TDesC8& aMatch);
+        
+        static CSenProvider* NewL();
+        
+        /**
+        * Function:    ~CSenProvider
+        *
+        * Description: Destroy the object
+        */
+        virtual ~CSenProvider();
+
+        // From MSenHostlet:
+        /** 
+        * Default implementation returns the ECOM cue as endpoint of this local provider.
+        * @return ECOM cue of this plug-in implementation
+        */
+        inline virtual TPtrC8 Endpoint() const;
+
+        /**
+    	* Method provides the default implementation of adding facets in the SD after 
+    	* checking the  default values of the provider properties (exposed, shareable, 
+    	* complete client message etc). Each overriden default facet value is added
+    	* to the service description (SD).
+        *
+        * @param aSD is the service description into which all the facets of this
+        * hostlet (local service provider) will be added. 
+        *
+        * Method provides means of "auto-configuration" for service session creation.
+        * The sessions themself can read properties of the provider from the altered
+        * XML service description. This way, provider deployment does not need to be 
+        * followed by explicit Service Management API calls (configuration) to add 
+        * these facet.
+    	*/
+        inline virtual void DescribeServiceL(CSenWSDescription& aSD);
+        
+        /**
+        * This default, inline version returns EFalse. Any service exposed to outside world should
+        * override to return ETrue instead. That would cause inline method 
+        * InitServiceSession to add corresponding facet to the session.
+        * @see MSenProvider interface
+        */
+        inline virtual TBool Exposed() const;
+
+
+        /**
+        * This default, inline version version returns EFalse. Sharable, sub-classing providers need 
+        * to override this to return ETrue instead, if they allow multiple service consumers to have
+        * queued access to the ServiceL() of the same provider instance.
+        * @see MSenProvider interface
+        */
+        inline virtual TBool Sharable() const;
+
+        /**
+        * This default, inline version version returns EFalse. Providers, which wish to receive
+        * complete messages (with header information) need to override this to return ETrue instead.
+        * @see MSenProvider interface
+        */
+        inline virtual TBool CompleteClientMessages() const;
+
+
+        /**
+        * This default, inline version version returns EFalse. Providers, which have slow construction
+        * mechanism should make this return ETrue, to make WSF Core Service Manager to pre-load them
+        * after that (Symbian server) process is created and sensessions.xml database is being loaded.
+        * @see MSenProvider interface
+        */
+        inline virtual TBool LoadOnStartup() const;
+
+        /**
+        * This default, inline version version returns ETrue. Providers, which wish to permit
+        * un-thread-safe access to their ServiceL need to make this return EFalse instead.
+        * @see MSenProvider interface
+        */
+        inline virtual TBool Threadsafe() const;
+
+        /**
+        * This default, inline version version returns EFalse. Providers, which allow themselves
+        * to be re-cycled (reused) need to make this return EFalse. 
+        * @see MSenProvider interface
+        */
+        inline virtual TBool Reinitializable() const;
+
+        /**
+        * This default, inline version version returns EFalse. Providers, which want themselves
+        * to be left on background as long as main thread (Core Service Manager) is alive, need
+        * to make this return ETrue instead.
+        * @see MSenProvider interface
+        */
+        inline virtual TBool StayOnBackground() const;
+
+        /** 
+        * Default implementation does nothing, and
+        * returns KErrNotSupported.
+        * Subclasses should override this method in
+        * order to re-initialize any state variables
+        * that are not related to exact construction
+        * phase; for example, some provider might
+        * reset any state data it has, but still it
+        * might decide to keep negotiated client
+        * (connection) to some server open, making
+        * just corresponding "re-init" to that service
+        * being internally consumed by that provider.
+        *
+        * Typically, this method is a pair to Reinitializable()
+        * function, meaning that when one develops such provider 
+        * which supports reinitialization, that re-init should be 
+        * implemented behind this ReinitL() method.
+        *
+        * @see MSenProvider
+        */
+        inline virtual TInt ReinitL();
+
+        /**
+        * Default implementation does nothing. Subclasses should override this.
+        */
+        //inline virtual void ThreadInitL(const TDesC& /* aThreadId */) { ; }
+
+        /**
+        * Default implementation does nothing. Subclasses should override this.
+        */
+        //inline virtual void ThreadDestroy(const TDesC& /* aThreadId */) { ; }
+
+    private:
+        /** iDtor_ID_Key Instance identifier key. When instance of an
+        *               implementation is created by ECOM framework, the
+        *               framework will assign UID for it. The UID is used in
+        *               destructor to notify framework that this instance is
+        *               being destroyed and resources can be released.
+        */
+        TUid iDtor_ID_Key;
+
+        HBufC8* iCue;
+        
+        TAny* _reserved;
+        TAny* _reserved2;
+    };
+
+#include "senprovider.inl"
+
+#endif 
+
+// End of File