realtimenetprots/sipfw/SIP/Transaction/src/NormalClientTa.h
changeset 0 307788aac0a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/SIP/Transaction/src/NormalClientTa.h	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,186 @@
+/*
+* Copyright (c) 2006-2009 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:
+* Name          : NormalClientTa.h
+* Part of       : Transaction
+* Version       : SIP/5.0
+*
+*/
+
+
+
+
+/**
+ @internalComponent
+*/
+
+#ifndef NORMALCLIENTTA_H
+#define NORMALCLIENTTA_H
+
+// INCLUDES
+#include "ClientTransaction.h"
+
+// FORWARD DECLARATIONS
+class CTimerRetransmit;
+class CTimerTerminateTa;
+
+
+// CLASS DECLARATION
+/*
+ * This class is used for sending a non-INVITE (and non-ACK) request, and
+ * receiving the responses.
+ */
+class CNormalClientTransaction : public CClientTransaction
+	{
+public: // Constructors and destructor
+
+	/**
+	 * Creates a new instance of CNormalClientTransaction
+	 *
+	 * @param aUserAgent UserAgent owning the new transaction being created.
+	 * @param aTransmitter CTransmitter used for sending messages
+	 * @param aTimers LwTimer subsystem
+	 * @param aInitialState Initial state of the CTransaction object
+	 * @param aTimerValues Values for calculating timer durations
+	 * @param aTransactionStore TransactionStore
+	 * @return CNormalClientTransaction object, ownership is transferred
+	 */
+	static CNormalClientTransaction* NewL(CUserAgentBase& aUserAgent,
+									  CTransmitter& aTransmitter,
+									  MTimerManager& aTimers,
+									  CTransactionState& aInitialState,
+									  TTimerValues& aTimerValues,
+									  MTransactionStore& aTransactionStore);
+
+	~CNormalClientTransaction();
+
+public: // From CClientTransaction
+
+	void DeleteTimer(const CTransactionTimer& aTimer);
+	
+public: // New functions
+
+	/**
+	 * Sets the duration used for timer E to maximum (=T2).
+	 *	 
+	 * @pre iTimerE = NULL
+	 */		
+	void IncreaseTimerEtoT2();
+
+	/**
+	 * Starts timer E.
+	 *	 
+	 * @pre iTimerE = NULL
+	 */
+	void StartTimerEL();
+	
+	/**
+	 * Starts timer F, unless it has already been started.	 
+	 */
+	void StartTimerFUnlessExistsL();	
+
+	static CNormalClientTransaction& Ptr(CTransaction& aTransaction);
+
+    /**
+	 * Receive a SIP response.
+	 *	 
+	 * @pre aResponse != NULL
+	 *
+     * @param aResponse SIP response, ownership is transferred
+     * @param aCurrentState Transaction's current state
+     * @param aProceeding Proceeding state of transaction state machine
+     * @param aCompleted Completed state of transaction state machine
+	 * @return
+	 */
+    void ReceiveResponseL(CSIPResponse* aResponse,
+                          const CTransactionState& aCurrentState,
+                          const CTransactionState& aProceeding,
+                          const CTransactionState& aCompleted);
+
+private: // Constructor, for internal use
+
+	CNormalClientTransaction(CUserAgentBase& aUserAgent,
+							 CTransmitter& aTransmitter,
+							 MTimerManager& aTimers,
+							 CTransactionState& aInitialState,
+							 TTimerValues& aTimerValues,
+							 MTransactionStore& aTransactionStore);
+
+private: // New functions, for internal use
+
+	/**
+	 * Starts timer K.
+	 *
+	 * @pre iTimerK = NULL
+	 */
+	void StartTimerKL();
+
+    /**
+	 * Stops timer E
+	 *	
+	 * @post iTimerE = NULL	 
+	 */
+	void StopTimerE();
+
+    /**
+	 * Stops timer F
+	 *
+	 * @post iTimerF = NULL
+	 */
+	void StopTimerF();
+
+    /**
+	 * Stops timer K
+	 *	 
+	 * @post iTimerK = NULL	 
+	 */
+	void StopTimerK();
+
+    /**
+	 * Stops all timers of this transaction
+	 *
+	 * @post iTimerE = NULL, iTimerF = NULL, iTimerK = NULL	 
+	 */
+	void CancelAllTimers();
+
+private: // Data
+
+	//Duration (ms) of timer E
+	TUint iTimerEDuration;
+
+	//Timer E, owned
+	CTimerRetransmit* iTimerE;
+	//Timer F, owned
+	CTimerTerminateTa* iTimerF;
+	//Timer K, owned
+	CTimerTerminateTa* iTimerK;
+
+private: // For testing purposes
+
+	void __DbgTestInvariant() const;
+
+
+
+#ifdef CPPUNIT_TEST
+	friend class CTransactionUser_Test;
+	friend class CNormalCTa_Trying_Test;
+	friend class CNormalCTa_Proceeding_Test;
+	friend class CNormalCTa_Completed_Test;
+	friend class ClientTransaction_Test;
+#endif
+	};
+
+#endif // end of NORMALCLIENTTA_H
+
+// End of File