webservices/wsframework/inc/senserviceinvocationframework.h
changeset 0 62f9d29f7211
--- /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 <ecom/ecom.h>
+
+#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
+