PECengine/TransactionFramework2/Inc/MPEngOutgoingTransactionHandler.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/TransactionFramework2/Inc/MPEngOutgoingTransactionHandler.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,190 @@
+/*
+* Copyright (c) 2003 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:  Outgoing transaction handling interface.
+*                Defines a protocol between Presence Engine server
+*                and concrete transaction handlers to generate outgoing
+*                XML to network and process the responce.
+*
+*/
+
+#ifndef __MPENGOUTGOINGTRANSACTIONHANDLER_H__
+#define __MPENGOUTGOINGTRANSACTIONHANDLER_H__
+
+//  INCLUDES
+#include <E32Std.h>
+
+
+// FORWARD DECLARATIONS
+class CPEngTransactionStatus;
+
+
+
+// CLASS DECLARATION
+/**
+ * Outgoing transaction handling interface.
+ *
+ * Defines a protocol between Presence Engine server
+ * and concrete transaction handlers to generate outgoing
+ * XML to network and process the response.
+ *
+ * Methods are listed here in their "calling order".
+ *
+ * @since 3.0
+ */
+class MPEngOutgoingTransactionHandler
+    {
+    public: // New functions
+
+        /**
+         *	Synchronous method, get Outgoing transaction request
+         *
+         *	This method is called to generate a outgoing XML request
+         *	for the presence network server
+         *	request is no further processed and it is send to network
+         *
+         *  @since 3.0
+         *  @param aSendBuffer The send buffer to write XML request.
+         *        Buffer has the maximum send buffer size available.
+         *        Handler is responsible to divide too big requests
+         *        to smaller partitions, that fit into available
+         *        send buffer. In case of separation, handler must
+         *        utilize incremental sending, see method
+         *        OutgoingTransactionComplete().
+
+         */
+        virtual void RequestL( TDes8& aSendBuffer ) = 0;
+
+
+        /**
+         *	Signals to the transaction handler thst it is last
+         *	active transaction handler in the scope of the client request
+         *
+         *	This function is called by the transaction handler runner
+         *	when there is no more running transaction handler in
+         *	the scope of one client request, same as this transaction
+         *	handler is running.
+         *	However Request handler can still multiply itself
+         *	or continue running in loops as single instance.
+         *
+         *	@since 3.0
+         */
+        virtual void LastRunningTransactionHandler( ) = 0;
+
+        /**
+         *	Process the response to the request.
+         *
+         *	This method is called to process XML request response
+         *	from network server.
+         *	Request can be processed either in synchronous way
+         *	there passed TRequestStatus is not touched by the handler
+         *	or when state is changed to pending, and handler will not be
+         *	deleted till its completion.
+         *
+         *
+         *	@since 3.0
+         *	@param aResponse buffer containing XML request response
+         *	@param aStatus status where transaction signals completion
+         */
+        virtual void ProcessResponseL( const TDesC8& aResponse,
+                                       TRequestStatus& aStatus ) = 0;
+
+        /**
+         *	Cancels asynchronous processing of the request
+         *
+         *	When processing of the request is not asynchronous
+         *	this function does nothing
+         *
+         *  @since 3.0
+         *  @param
+         *  @return
+         */
+        virtual void CancelProcessing( ) = 0;
+
+        /**
+         *	Support for simultaneous transaction handling.
+         *
+         *	This method is called by the transaction handler
+         *	runner to ask if there is need to created extra
+         *	transaction handlers which will be run separately but
+         *	still withing the scope of the clients request this
+         *	request handler is belonging.
+         *
+         *  @since 3.0
+         *	@param aTransactionsArray Reference to the pointer array
+         *        where new transaction handlers can be stored.
+         */
+        virtual void NewTransactionHandlersL(
+            RPointerArray<MPEngOutgoingTransactionHandler>& aHandlers ) = 0;
+
+
+        /**
+         *	Function to signal completing of the transaction
+         *
+         *	Runner of the transaction handler is using this function
+         *	to check if handler needs to send another data to the
+         *	network server.
+         *	It is called one processing of the request response is
+         *	finished.
+         *
+         *  @since 3.0
+         *  @param
+         *  @return ETrue if transaction is completed and does not need
+         *		to create any new request
+         */
+        virtual TBool TransactionCompleted( ) = 0;
+
+        /**
+         *	Gets transaction status result class
+         *
+         *	Transaction handler returns instance of the transaction
+         *	status class where are details about finished transaction.
+         *	This function is called once transaction handler is completed
+         *	Ownership is transfered to the caller
+         *
+         *  @since 3.0
+         *  @return instance of the transaction status with ownership
+         */
+        virtual CPEngTransactionStatus* TransactionResult( ) = 0;
+
+        /**
+         *	Releases handler
+         *
+         *	This function is called when some Symbian system error will
+         *	occur, so handler has chance to do cleaning if this is
+         *	needed.
+         *	This function is called when for example processing of the
+         *	incoming date failed and left with some error
+         *	It is also called  when send data to network failed
+         *	How ever, handle is not informed about particular error
+         *	and its not event its concern
+         *
+         *  @since 3.0
+         */
+        virtual void ReleaseHandler( ) = 0;
+
+    public:  //Destructor
+
+        /**
+         * Virtual inline destructor.
+         *
+         * Concrete transaction handlers can be
+         * destroyed using this inteface.
+         */
+        virtual ~MPEngOutgoingTransactionHandler() {};
+    };
+
+#endif      //  __MPENGOUTGOINGTRANSACTIONHANDLER_H__
+
+//  End of File
+