diff -r 000000000000 -r 62f9d29f7211 webservices/wsframework/inc/senserviceinvocationframework.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/wsframework/inc/senserviceinvocationframework.h Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,198 @@ +/* +* 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 SERVICE_INVOCATION_FRAMEWORK_INTERFACE_H +#define SERVICE_INVOCATION_FRAMEWORK_INTERFACE_H + +// INCLUDES +#include + +#include "msenserviceinvocationframework.h" + +// CONTANTS +const TInt KErrSenReinitRequired = -30304; +const TInt KErrSenResendRequired = -30316; +const TInt KErrSenFailedAuthentication = -30320; +//const TInt KErrSenResendComplete = -30322; + +// Default events +const TInt KSenEventWsfReady = 1; +const TInt KSenEventSessionsDbReadBegin = 100; +const TInt KSenEventSessionsDbReadComplete = 101; +const TInt KSenEventSessionsDbWriteBegin = 102; +const TInt KSenEventSessionsDbWriteComplete = 103; +const TInt KSenEventIdWsfSessionValidatorRequested = 200; +const TInt KSenEventConsumerReleasesSession = 300; +const TInt KSenEventConsumerAdded = 301; +const TInt KSenEventConsumerRemoved = 302; +const TInt KSenEventRegisterNewServiceDescription = 400; +const TInt KSenEventRegisterIdentityProvider = 500; +const TInt KSenEventUnregisterIdentityProvider = 501; + +// FORWARD DECLARATIONS +class CSenSecurityMechanism; +struct TSifData; + +/** + * Class: CSIF (ServiceInvocationFramework ECOM interface) + * Custom ECOM interface definition. This interface is used by + * clients to find specific instance implementation(s). + */ +class CSIF : public CSenBaseFragment, public MSIF + { + public: // Constructors and destructor + + /** + * Wraps ECom object instantiation, which returns the + * default interface implementation. + * Note: This is not a "normal" NewL method, since normally NewL + * methods are only defined for concrete classes. + * Note that the implementations of this interface + * ALSO provide NewL methods. They are the familiar + * EPOC NewL's, which create instance of classes. + */ + static CSIF* NewL( MSenCoreServiceManager& aManager ); + + /** + * Wraps ECom object instantitation, which returns the + * interface implementation matching to given aCue. + * IMPLEMENTATION_INFO::default_data. + * For details, see EcomSIFDefinition.inl comments. + * Note: This is not a "normal" NewL method, since normally NewL + * methods are only defined for concrete classes. + * Note that the implementations of this interface ALSO + * provide NewL methods. They are the familiar EPOC + * NewL's, which create instance of classes. + * @param aCue is the "name" of the requested implementation. + * Implementations advertise their cue as specified + * in their resource file field + */ + static CSIF* NewL( const TDesC8& aCue, MSenCoreServiceManager& aManager ); + + /** + * Destructor. + */ + virtual ~CSIF(); + + // New functions + + /** + * Try to find one or more services that match the given + * ServiceDescription. Register ServiceDescriptions for these to the + * owner of the framework, i.e. to the ServiceManager. Return the + * number of ServiceDescriptions that were added. + * @param aPattern - A ServiceDescriptin that should be treated + * as a pattern + * @param aErrorMsg will be allocated to provide detailed + * information about error, if available (like SOAP fault) + * @return On success, returns a positive number: - a total count + * of matching ServiceDescriptions that were added. + * In case of error, the returned value will be negative: + * - one of the system-wide error codes. + */ + virtual TInt AddServiceDescriptionL( MSenServiceDescription& aPattern, + MSenRemoteServiceConsumer& aRemoteConsumer, + HBufC8*& aErrorMsg ) = 0; + + /** + * Set the ServiceManager to which this instance reports. + * The (singleton) ServiceManager calls this method when + * it instantiates a framework. + * @param aServiceManager The singleton ServiceManager in the system. + */ + virtual void SetManager( MSenCoreServiceManager& aServiceManager ) = 0; + + /** + * The CoreServiceManager asks for this BaseFragment upon startup + * in order to give this framework a chance to read its configuration + * information from the central ServiceManager configuration document. + * @return CSenBaseFragment - an object that can do SAX based parsing of a XML fragment + * that contains framework specific configuration information. + */ + virtual CSenBaseFragment& ConfigParser() = 0; + + /** + * This method may be called to pass certain events to the SIF + * plug-in. + * There may be few common events in WSF scope plus other, plug-in + * specific events. + * Plug-ins can themselves decide, whether or not to take action + * on notified event. For example, ID-WSF plug-in might be interested + * to assign "session validators" (AS and DS clients) to the newly + * instantiated sessions, after it has been notified, that all sessions + * have been parsed into memory (de-serialized) from sensessions.xml + * database. + */ + virtual TInt OnEvent( const TInt aEvent, TAny* aArgument ) = 0; + + /** + * Getter for SIF specific extension interface, which caller + * typically class-casts to pre-known type + * @return pointer to plug-in specific interface, or NULL + * if interface extension is NOT implemented. + */ + virtual TAny* ExtendedInterface() = 0; + + /** + * @return a string that is the unique for this implementation. Note that there might be multiple + * frameworks, which all implement same TYPE (framework ID is the same), but which have different + * design. This might mean that they implement different VERSION of the framework. It is recommended + * that framework CUE is the ECOM cue of the framework, and that it is in form of URN (unique resource + * name). + * This default, inline implementation is returning the ECOM cue value of this plug-in. + */ + virtual TPtrC8 Cue() const; + private: + + struct TSifData + { + /** 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; + + /* + * This equals to ECOM's data type (== "cue" of the plug-in) + */ + HBufC8* iCue; + //HBufC8* iReserved; + //HBufC8* iReserved*; + inline void Close(); + }; + + private: // Data + TSifData* iData; + }; + +// Inline includes the implementation of the instantiation +// functions and destructor +#include "senserviceinvocationframework.inl" + +#endif // SERVICE_INVOCATION_FRAMEWORK_INTERFACE_H + +// End of File +