diff -r 000000000000 -r 62f9d29f7211 webservices/wsframework/inc/senprovider.h --- /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 +#include // for RCriticalSection + +#include +#include "senwsdescription.h" +#include + +#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