PECengine/PresenceServer2/ServerSrc/CPEngHandlerSendData.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/PresenceServer2/ServerSrc/CPEngHandlerSendData.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,224 @@
+/*
+* Copyright (c) 2002 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:  Request Handler to update data to the network server
+*
+*/
+
+
+
+#ifndef __CPENGHANDLERSENDDATA_H__
+#define __CPENGHANDLERSENDDATA_H__
+
+//  INCLUDES
+#include <e32base.h>
+
+#include "MPEngRequestHandler.h"
+#include "MPEngHandlerSendData.h"
+
+//	Own RMessage class wraper
+#include "RPEngMessage.h"
+
+
+// FORWARD DECLARATIONS
+class	MPEngRequestHandlerObserver;
+class	MPEngPureDataHandler;
+class	CPEngOutGoingTransContainer;
+class	MPEngOutgoingTransactionHandler;
+class	CPEngTransactionStatus;
+class	MPEngSubSession;
+
+// CLASS DECLARATION
+/**
+ *  Request Handler to update data to the network server
+ *
+ *  @lib PEngServer2
+ *  @since 3.0
+ */
+NONSHARABLE_CLASS( CPEngHandlerSendData ):
+        public CBase,
+        public MPEngRequestHandler,
+        public MPEngHandlerSendData
+    {
+public:  // Constructors and destructor
+
+    /**
+     *	Two-phased constructor. which creates Send Data handler from
+     *	Transaction handlers.
+     *	Transaction handlers from the passed pointer array are removed
+     *	and its owner ship is taked by the created class.
+     *	Due to the nature of the construction, it can happen that only
+     *	part of the transaction handler is removed from the array,
+     *	before construction fails,however remained elements in the
+     *	array have now relation to failed object, and removed ones
+     *	have been destroied among failed contruction of
+     *	the CPEngHandlerSendData object. This constructor can be called
+     *	without valid client message. In that case, when handler
+     *	is completed there is no client notify about it.
+     *
+     *  @since 3.0
+     *  @param aRequestObserver	request handler observer
+     *  @param aPureDataHandler	Pure data handler,
+     *  @param aServSubSession sub session
+     *  @param aTransactions outgoing transactions
+     *  @param aMessage message to complete request to
+     *  @param aSessionId session id
+     *  @param aSubSessionId subsession id
+     *  @return pointer to the constructed class
+     */
+    static CPEngHandlerSendData* NewLC(
+        MPEngRequestHandlerObserver&  aRequestObserver,
+        MPEngPureDataHandler& aPureDataHandler,
+        MPEngSubSession& aServSubSession,
+        const RPEngMessage& aMessage,
+        RPointerArray<MPEngOutgoingTransactionHandler>& aTransactions,
+        TInt32 aSessionId,
+        TInt32 aSubSessionId );
+
+
+    /**
+     * Destructor.
+     */
+    ~CPEngHandlerSendData();
+
+public: // Function from MPEngRequestHandler
+
+    /**
+     * Start Handling of the request
+     * @see <MPEngRequestHandler.h>
+     */
+    void StartHandlerL();
+
+    /**
+     * Return Session Id
+     * @see <MPEngRequestHandler.h>
+     */
+    TInt32 SessionId() const ;
+
+    /**
+     * Return Sub-Session Id
+     * @see <MPEngRequestHandler.h>
+     */
+    TInt SubSessionId() const ;
+
+    /**
+     * Return Request function
+     * @see <MPEngRequestHandler.h>
+     */
+    TInt RequestFunction() const;
+
+    /**
+     * Cancel Request
+     * @see <MPEngRequestHandler.h>
+     */
+    void CancelRequestD();
+
+    /**
+     * Set message handler
+     * @see <MPEngRequestHandler.h>
+     */
+    void SetMessage( const RPEngMessage& aMessage );
+
+
+public: // Function from MPEngHandlerSendData
+
+    /**
+     *  Create new transaction containers and start their processing
+     *	@see <MPEngHandlerSendData.h>
+     *  @since 3.0
+     */
+    void CreateNewContainersRunThemL( ) ;
+
+    /**
+     *  Complete passed transaction container
+     *	@see <MPEngHandlerSendData.h>
+     *  @since 3.0
+     */
+    void CompleteTransContainer(
+        CPEngOutGoingTransContainer* aContainer,
+        CPEngTransactionStatus* aStatus,
+        TInt aErrCode );
+    /**
+     *  Checks if this is last running transaction container
+     *	@see <MPEngHandlerSendData.h>
+     *  @since 3.0
+     */
+    TBool LastRunningTransaction( );
+
+private:  // Functions from base classes
+
+    /**
+     *	Complete request handlers
+     *	and delete Request Handler Class
+     *	@since 3.0
+     */
+    void CompleteRequestD();
+
+private:
+
+    /**
+     *	C++ default constructor.
+     */
+    CPEngHandlerSendData(
+        MPEngRequestHandlerObserver& aRequestHandlerObserver,
+        MPEngPureDataHandler& aPureDataHandler,
+        MPEngSubSession& aServSubSession,
+        const RPEngMessage& aMessage,
+        TInt32 aSessionId,
+        TInt32 aSubSessionId );
+
+
+    /**
+     *	Symbian 2nd phase constructor
+     */
+    void ConstructL(
+        RPointerArray<MPEngOutgoingTransactionHandler>& aTransactions );
+
+private:    // Data
+
+    /// REF: Request Handler Observer
+    MPEngRequestHandlerObserver&					iRequestHandlerObserver;
+
+    /// REF: Pure data handler
+    MPEngPureDataHandler&							iPureDataHandler;
+
+    /// REF: Server Sub-session
+    MPEngSubSession&								iServSubSession;
+
+    /// OWN: Request RPEngMessage
+    RPEngMessage									iMessage;
+
+    /// OWN: Session Id from where request was issued
+    TInt32											iSessionId;
+
+    /// OWN: SubSssion Id from where request was issued
+    TInt											iSubSessionId;
+
+    /// OWN: Request Function
+    TInt32											iFunction;
+
+    /// OWN: All running Outgoing Transaction Handler containers
+    ///      Elements OWNed
+    RPointerArray<CPEngOutGoingTransContainer>		iTrasactionContainersArray;
+
+    /// OWN: Not activated Outgoing Transaction handlers
+    ///      Elements OWNed
+    RPointerArray<MPEngOutgoingTransactionHandler> iOutgoingTransactionHandlers;
+
+    /// OWN: Transaction status
+    CPEngTransactionStatus*							iTransactionStatus;
+    };
+
+#endif      // __CPENGHANDLERSENDDATA_H__
+
+// End of File