mmsharing/mmshavailability/tsrc/ut_availability/Stubs/inc/sipclienttransaction.h
changeset 0 f0cf47e981f9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/Stubs/inc/sipclienttransaction.h	Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,187 @@
+/*
+* 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: 
+*
+*/
+
+
+
+#ifndef CSIPCLIENTTRANSACTION_H
+#define CSIPCLIENTTRANSACTION_H
+
+
+// INCLUDES
+#include "siptransactionbase.h"
+
+// FORWARD DECLARATIONS
+class CSIPRefresh;
+
+
+#ifdef CPPUNIT_TEST
+#undef IMPORT_C
+#define IMPORT_C
+#endif
+
+
+/**
+*
+*  Class for managing SIP client transactions.
+*  It provides services for ending and getting the SIP client transaction
+*  parameters. Some client transactions can also be canceled.
+*
+*  The user of the class cannot instante this class.
+*  @lib sipclient
+*/
+class CSIPClientTransaction: public CSIPTransactionBase
+	{
+	public:
+
+        /**
+        * Destructor
+		*/
+
+		IMPORT_C ~CSIPClientTransaction();
+
+	public:
+
+        /**
+        * Gets response elements of the most recent response.
+        * @return Response elements. Ownership isn't transferred.
+        */
+
+		IMPORT_C const CSIPResponseElements* ResponseElements() const;
+
+
+        /**
+		* Cancels client transaction i.e. creates a CANCEL request
+		* and sends to the remote UA;
+		* leaves on failure.
+		* @pre State()==EProceeding
+		* @pre CancelAllowed()==ETrue
+		* @pre Connection().State()==EActive
+		* @return SIP CANCEL transaction, ownership is transferred.
+		* @leave KErrSIPInvalidTransactionState if canceling is not possible
+		*	at all, or because the transaction is not in a proper state or the
+        *   transaction is not related to a dialog.
+		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
+		*	object has been deleted
+		*/
+
+		IMPORT_C CSIPClientTransaction* CancelL();
+
+
+		/**
+		* Gets the associated refresh with the transaction.
+		* If the refresh is associated with the transaction,
+		* transaction will be refreshed at defined interval.
+		* @return associated refresh or 0-pointer if there's no
+		*         associated refresh. Ownership isn't transferred.
+		*/
+
+		IMPORT_C const CSIPRefresh* Refresh() const;
+
+
+        /**
+		* Checks if the client transaction is such that it can be cancelled.
+        * This does no check whether the transaction is currently in such a
+        * state that the canceling can be done now.
+        *
+		* @return ETrue if client transaction can be cancelled;
+		*         EFalse otherwise
+		*/
+
+		IMPORT_C TBool CancelAllowed() const;
+
+        /**
+		* Gets the associated refresh with the transaction and allows
+        * modification fo the refresh. This method is for internal use only.
+        *
+		* @return associated refresh or 0-pointer if there's no
+		*         associated refresh. Ownership isn't transferred.
+		*/
+
+        CSIPRefresh* Refresh();
+
+
+        /**
+	    * Clears the association from ClientTransaction to CSIPRefresh
+	    */
+
+        void RemoveRefresh();
+        
+    public: // Not in real SIP API
+    
+ 		IMPORT_C static CSIPClientTransaction* NewL( RStringF aType );
+
+        IMPORT_C void SetResponseElements(CSIPResponseElements* aE);    
+
+        
+	public:
+
+        /**
+		* Instantiates a CSIPClientTransaction object, leaves on failure.
+        *
+        * @param aType Identifies the transaction type
+        * @param aRequestId RequestId obtained from SIP client
+        * @param aAssociation Object to which the transaction is associated
+        *   with.
+        * @param aRefresh If transaction is refreshed, this points to a
+        *   CSIPRefresh, otherwise this is NULL. Ownership is not transferred.
+		* @return SIP client transaction, ownership is transferred.
+		*/
+
+		static CSIPClientTransaction*
+            NewL(RStringF aType,
+                 TUint32 aRequestId,
+                 MTransactionAssociation& aAssociation,
+                 CSIPRefresh* aRefresh=0);
+
+        /**
+		* Instantiates a CSIPClientTransaction object and pushes it into
+        * CleanupStack, leaves on failure.
+        *
+        * @param aType Identifies the transaction type
+        * @param aRequestId RequestId obtained from SIP client
+        * @param aAssociation Object to which the transaction is associated
+        *   with.
+        * @param aRefresh If transaction is refreshed, this points to a
+        *   CSIPRefresh, otherwise this is NULL. Ownership is not transferred.
+		* @return SIP client transaction, ownership is transferred.
+		*/
+
+		static CSIPClientTransaction*
+            NewLC(RStringF aType,
+                  TUint32 aRequestId,
+                  MTransactionAssociation& aAssociation,
+                  CSIPRefresh* aRefresh=0);
+
+    protected:
+		CSIPClientTransaction( RStringF aType );
+
+    private:
+        //NULL if this transaction is not refreshed.
+        //CSIPClientTransaction does not own the refresh object.
+        CSIPRefresh* iRefresh;
+        
+        CSIPResponseElements* iE;
+        
+        TBool iIsCancelAllowed;
+
+
+#ifdef CPPUNIT_TEST
+	    friend class CSIP_Test;
+#endif
+	};
+
+#endif