webservices/wsframework/inc/msenservicesession.h
changeset 0 62f9d29f7211
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsframework/inc/msenservicesession.h	Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,168 @@
+/*
+* 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:        Non-public callback interface, which transports typically call
+*
+*/
+
+
+
+
+
+
+
+
+#ifndef M_SEN_SERVICE_SESSION
+#define M_SEN_SERVICE_SESSION
+
+
+/**
+ * RServiceSession is a non-public remote interface
+ * only implemented by the CSenServiceSession class. 
+ * These methods are typically invoked by transport
+ * instancies.
+ *
+ * Interface equals with com.nokia.serene.framework.RServiceSession
+ * 
+ * @see CSenServiceSession and Jave ref-implementation
+ * in com.nokia.serene.framework.ServiceSession (2005)
+ */
+
+ 
+
+// FORWARD DECLARES
+class MSenRemoteServiceConsumer;
+class MSenRemoteHostlet;
+class MSenProperties;
+
+// CLASS DECLARATION
+class MSenServiceSession
+    {
+    public:
+        /**
+        * Send a message with transaction ID to the service consumer.
+        * This method allows session implementation to perform internal
+        * mechanisms prior handing the response to the actual, already
+        * known consumer (MSenRemoteServiceConsumer).
+        *
+        * Session implementation might decide, that certain messages are
+        * not delivered to consumer(s). Or, the session may validate the
+        * received message and actually decide sending an error to the
+        * consumer.
+        * 
+        * @see sendToConsumer in com.nokia.serene.framework.RServiceSession
+        *
+        * @param aMessage is the response message from service
+        * @param aTxnId is the transaction id of this async responsed message
+        * @param aConsumer is the consumer of the service. It could
+        * be CSenClientSession or some subclass of CSenInternalConsumer
+        * (like in Liberty ID-WSF it could be authentication service client
+        * or discovery service client).
+        * @param aResponseTransportProperties contains the properties related
+        * to this response (from the transport plug-in).
+        * @return KErrNone if message was successfully delivered to consumer(s).
+        *         Otherwise, some system-wide error code.
+        */
+        virtual TInt SendToConsumerL(HBufC8* apMessage,
+                                     const TInt aTxnId,
+                                     MSenRemoteServiceConsumer& aConsumer,
+                                     MSenProperties* aResponseTransportProperties = NULL) = 0; 
+
+        /**
+        * Send an error code and message with transaction ID to the service 
+        * consumer. This method allows session implementation to perform 
+        * internal mechanisms prior handing the response to the actual, 
+        * already known consumer (MSenRemoteServiceConsumer).
+        *
+        * Session implementation might decide, that certain errors are handled
+        * without notifying the consumer(s).
+        *
+        * @see sendFaultToConsumer in com.nokia.serene.framework.RServiceSession
+        *
+        * @param aErrorCode is the error code identifying this error
+        * @param aError is the error message - a response from service
+        * @param aConsumer is the consumer of the service. It could
+        * be CSenClientSession or some subclass of CSenInternalConsumer
+        * (like in Liberty ID-WSF it could be authentication service client
+        * or discovery service client).
+        * @param aTxnId is the transaction id of this async responsed error.
+        * @return KErrNone if error message was successfully delivered to 
+        *         consumer(s). Otherwise, some system-wide error code.
+        */
+        virtual TInt SendErrorToConsumerL(const TInt aErrorCode,
+                                          HBufC8* apError,
+                                          const TInt aTxnId,
+                                          MSenRemoteServiceConsumer& aConsumer,
+                                          MSenProperties* aResponseTransportProperties = NULL) = 0; 
+
+
+        /**
+        * Method allows sessions of service invocation framework to recover
+        * from certain errors (like certain SOAP faults) which can be recognized
+        * at (low) transport layer. This way these faults could be  processed 
+        * silently between service and its session, without disturbing the 
+        * actual service consumer.
+        *  
+        * Since this type of errors (or faults) usually consists of XML,
+        * a spesific error class can also be created to parse received
+        * error.
+        *
+        * @see Java ref-implementation: handleFault in 
+        *  com.nokia.serene.framework.RServiceSession
+        *
+        * @param aErrorCode is the error code identifying this error
+        * @param aError is the error message - actual response from service
+        * @param aTxnId is the transaction id of this async responsed error.
+        * @param aConsumer is the consumer of the service. It could
+        * be CSenClientSession or some subclass of CSenInternalConsumer
+        * (like in Liberty ID-WSF it could be authentication service client
+        * or discovery service client).
+        * @param aResponseTransportProperties contains the properties related
+        * to this response (from the transport plug-in).
+        * @return KErrNone if error message was successfully delivered to 
+        *         consumer(s). Otherwise, some system-wide error code.
+        */
+        virtual TInt HandleErrorL(const TInt aErrorCode,
+                                  HBufC8* aError,
+                                  const TInt aTxnId,
+                                  MSenRemoteServiceConsumer& aConsumer,
+                                  MSenProperties* aResponseTransportProperties = NULL) = 0; 
+
+        /**
+        * Returns the currently set hostlet 
+        * @return MSenRemoteHostlet pointer or NULL, if this session
+        * does not interact with hostlet (local service provider 
+        * application).
+        */
+        virtual MSenRemoteHostlet* Hostlet() const = 0;
+
+                      
+       /*
+        * @param aReceiver is the hostlet to which the message should be delivered
+        * @param aMessage is the request from service a service consumer. 
+        * SIF spesific service session implementation(s) may read or manipulate this
+        * message by before handling it over to the hostlet (application).
+        * @param aFrom is the consumer of the service, which is sending
+        * the message.
+        * @param aTxnId is the transaction id of this async message
+        * @return KErrNone if message was successfully delivered to consumer(s).
+        *         Otherwise, some system-wide error code.
+        */             
+        virtual TInt SendToHostletL(MSenRemoteHostlet& aReceiver,
+                                    const TDesC8& aMessage,
+                                    const TInt aTxnId,
+                                    MSenRemoteServiceConsumer& aFrom,
+                                    MSenProperties* aProperties = NULL) = 0; 
+                                                                       
+    };
+#endif // M_SEN_SERVICE_SESSION