presadap12/Parser2/Inc/MPEngTransactionFactory.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/presadap12/Parser2/Inc/MPEngTransactionFactory.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,131 @@
+/*
+* 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:  Transaction factory interface.
+*
+*/
+
+#ifndef __MPENGTRANSACTIONFACTORY_H__
+#define __MPENGTRANSACTIONFACTORY_H__
+
+//  INCLUDES
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class MPEngCSPInfo;
+class MPEngOutgoingTransactionHandler;
+class MPEngIncomingTransactionHandler;
+
+
+
+// CONSTANTS
+
+
+// CLASS DECLARATION
+/**
+ * Abstract interface for transaction factories.
+ *
+ * Transaction factories are used to create concrete
+ * transaction handlers. Presence engine subcomponents
+ * like ContactListLibrary and AttributeLibrary
+ * implement concrete transaction factories and
+ * concrete transaction handlers.
+ *
+ * @since 2.1
+ */
+class MPEngTransactionFactory
+    {
+    public: // New functions
+
+        /**
+         *	Clean up stack support for the factory
+         *
+         *	Transaction factory will be treated as reference counted
+         *	singleton.
+         *	@since 3.0
+         */
+        virtual void Close( void ) = 0;
+
+
+        /**
+         *	Factory method to create handler for incoming data
+         *
+         *	When incoming message from the Network server arrives, it is
+         *	offered to all transaction factories over this interface to
+         *	process the data.
+         *	If data requires processing, it is done by the Transaction
+         *	handler returned by this function call.
+         *	If there is no need to process data by the factory, NULL
+         *	pointer is returned instead.
+         *
+         *	Incoming data is passed to the factory as plain XML as it was
+         *	retrieved from the network.
+         *	Created Incoming request handler will be then run by
+         *	the presence Server to process it.
+         *
+         *  @since 3.0
+         *  @param	aIncomingRequest XML data as it was retrieved from the
+         *				network server.
+         *  @return NULL for no processing, or instance of the
+         *				incoming transaction handler
+         */
+        virtual MPEngIncomingTransactionHandler* IncomingTransactionHandlerL(
+            const TDesC8& aIncomingRequest ) = 0;
+
+
+
+        /**
+         *	Factory method to create outgoing handler(s)
+         *
+         *	This method is called to retrieve handlers for outgoing
+         *	operation.
+         *	First parameter defines transaction operation from which
+         *	factory shall understand if request concerns it.
+         *	There is optional parameter which caries data needed
+         *	for the operation procession. How ever it can be NULL
+         *	if transaction does not require it.
+         *	Once transaction handler is created and appended into the
+         *	passed array, owner ship of the handler is taken by
+         *	the caller of the function.
+         *
+         *  @since 3.0
+         *  @param	aOperation enumeration of the operation
+         *  @param	aData optional data needed for operation
+         *  @param	aHandlers array where newly created handlers
+         *				are stored
+         */
+        virtual void OutgoingTransactionHandlerL(
+            TInt aOperation,
+            const TDesC& aData,
+            RPointerArray<MPEngOutgoingTransactionHandler>& aHandlers ) = 0;
+
+
+
+    protected:  //Destructor
+
+        /**
+         * Virtual inline destructor.
+         *
+         * Concrete factories can't be destroyed
+         * using this interface.
+         *
+         * (Transaction Factories must be implemented as ref counted
+         *	singletons.)
+         */
+        virtual ~MPEngTransactionFactory() {};
+    };
+
+#endif      //  __MPENGTRANSACTIONFACTORY_H__
+
+//  End of File
+