realtimenetprots/sipfw/SIP/Refreshes/inc/MSipRefreshMgr.h
changeset 0 307788aac0a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/SIP/Refreshes/inc/MSipRefreshMgr.h	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,328 @@
+/*
+* 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          : MSipRefreshMgr.h
+* Part of       : SIPRefreshes
+* Version       : SIP/5.0 
+*
+*/
+
+
+
+
+/**
+ @internalComponent
+*/
+
+
+#ifndef MSIPREFRESHMGR_H
+#define MSIPREFRESHMGR_H
+
+#include "SipStackServerDefs.h"
+
+class TSIPTransportParams;
+class MRefreshOwner;
+class MSIPSecUser;
+class CSIPRequest;
+class CURIContainer;
+class CSIPHeaderBase;
+class CSIPRouteHeader;
+class MTransactionHeaders;
+
+
+/**
+ * @brief An interface for adding, updating and
+ * removing refresh requests.
+ *
+ * @see MRefreshOwner
+ */
+
+class MSipRefreshMgr
+    {
+public:
+
+    virtual ~MSipRefreshMgr () { }
+
+	/**
+	 * Add a refresh for a given CSIPRequest.
+	 *
+	 * @pre aRequest!=0
+     * @pre aOwner!=0
+     *
+	 * @param aTransactionId; an empty transaction id that will be filled by TU
+	 *
+	 * @param aRefreshId; on return contains the id of the created refresh
+	 *
+	 * @param aRegistrationId a registration id with which a possible outbound
+	 *        proxy is used in TU.
+     *
+	 * @param aRequest SIP request to be refreshed. The ownership is 
+	 *        transferred if parameter aDeleteRequest is ETrue, otherwise not.
+     *
+     * @param aOwner a call back implemented by the caller
+     *
+     * @param aSIPSecUser a user for SIPSec
+     *
+     * @param aRemoteTarget. The remote target to be used.
+	 *
+	 * @param aDeleteRequest. If it is ETrue, refresh will keep 
+	 *        the ownership of the request, otherwise not.	 
+	 *
+	 * @param aPassAllResponsesToOwner. If ETrue all the responses
+	 *        are passed to the owner. 
+	 *        If EFalse only the first final response is passed.
+	 */
+	virtual void RefreshL (TTransactionId& aTransactionId,
+	                       TRefreshId& aRefreshId,
+	                       TRegistrationId aRegistrationId,
+				           CSIPRequest* aRequest,
+				           MRefreshOwner* aOwner,
+				           MSIPSecUser& aSIPSecUser,
+						   CURIContainer& aRemoteTarget,
+						   TBool aDeleteRequest,
+						   TBool aPassAllResponsesToOwner) = 0;
+
+
+	/**
+	 * Add a refresh for a given CSIPRequest and return the transaction 
+	 * related SIP headers.
+	 *
+	 * @pre aRequest!=0
+     * @pre aOwner!=0
+     *
+	 * @param aTransactionId; an empty transaction id 
+	 * that will be filled by TU
+	 *
+	 * @param aRefreshId; on return contains the id of the created refresh
+     *
+	 * @param aRegistrationId a registration id with which 
+	 *        a possible outbound proxy is used in TU.
+     *
+	 * @param aRequest SIP request to be refreshed. The ownership is 
+     *        transferred to MSipRefreshMgr.
+     *
+     * @param aOwner a callback interface implemented by the caller
+     *
+     * @param aSIPSecUser a user for SIPSec
+	 *
+     * @param aRemoteTarget. The remote target to be used.
+     *
+	 * @returns the transaction related headers @see MTransactionHeaders
+	 *          The ownership is transferred.
+	 */
+	virtual MTransactionHeaders* RefreshAndGetHeadersL (
+	                TTransactionId& aTransactionId,
+	                TRefreshId& aRefreshId,
+					TRegistrationId aRegistrationId,
+					CSIPRequest* aRequest,
+					MRefreshOwner* aOwner,
+					MSIPSecUser& aSIPSecUser,
+					CURIContainer& aRemoteTarget) = 0;
+
+	/**
+	 * Update a refresh for a given id. Leaves with
+	 * CSIPClient::ENonExistingRefreshId if no refresh for the given id was
+     * found.
+	 *
+	 * @pre aRequest!=0
+	 * @pre aRefreshId!=KEmptyRefreshId
+     *
+	 * @param aTransactionId; an empty transaction id that will 
+	 *                        be filled by TU
+	 *
+	 * @param aRefreshId a refresh id of an existing refresh 
+     *
+	 * @param aRequest an updated SIP request to be refreshed.
+	 *        The ownership is transferred if parameter aDeleteRequest 
+	 *        is ETrue, otherwise not.
+	 *
+	 * @param aOwner a callback interface implemented by the caller
+	 *
+	 * @param aDeleteRequest. If it is ETrue, refresh will keep the 
+	 *        ownership of the request, otherwise not.
+	 */
+	virtual void UpdateRefreshL (TTransactionId& aTransactionId,
+		                         const TRefreshId& aRefreshId,
+				                 CSIPRequest* aRequest,
+				                 const MRefreshOwner* aOwner,
+								 TBool aDeleteRequest) = 0;
+
+	/**
+	 * Ends a refresh with a given id. Leaves with
+	 * CSIPClient::ENonExistingRefreshId if no refresh for the given id was
+     * found.
+	 * Sends the given request and receives a response for it
+	 * before removing the refresh.
+	 *
+	 * @pre aRequest!=0
+	 * @pre aRefreshId!=KEmptyRefreshId
+     *
+	 * @param aTransactionId; an empty transaction id 
+	 *        that will be filled by TU
+	 *
+	 * @param aRefreshId a refresh id of an existing refresh 
+     *
+	 * @param aRequest a SIP request to be sent before ending the refresh.
+	 *        The ownership is transferred if parammeter aDeleteRequest 
+	 *        is ETrue otherwise not.
+	 *
+	 * @param aOwner a callback interface implemented by the caller
+	 * 
+	 * @param aDeleteRequest. If it is ETrue, refresh will keep the 
+	 *        ownership of the request, otherwise not.
+	 */
+	virtual void TerminateRefreshL (TTransactionId& aTransactionId,
+		                            const TRefreshId& aRefreshId,
+				                    CSIPRequest* aRequest,
+				                    const MRefreshOwner* aOwner,
+									TBool aDeleteRequest) = 0;
+
+	/**
+	 * Terminates a refresh with a given id abnormally. Deletes the
+	 * refresh immediately no matter what is the state of the refresh.
+     *
+	 * @param aRefreshId a refresh id of an existing refresh 
+     *
+     * @param aOwner a callback interface implemented by the caller
+     *
+	 * @returns CSIPClient::ENonExistingRefreshId if no refresh with 
+	 *          the given id was found, otherwise KErrNone.
+	 */
+	virtual TInt TerminateRefresh (const TRefreshId& aRefreshId,
+	                               const MRefreshOwner* aOwner) = 0;
+
+	/**
+	 * Stops all the refreshs for the given refresh owner.
+     * Using this function the user detaches itself from 
+	 * the refresh subsystem and the object implementing 
+	 * the call back can be deleted.
+	 *
+	 * @pre aOwner!=0
+     *
+     * @param aOwner a callback interface implemented by the caller
+     *
+	 * @returns CSIPClient::ENonExistingRefreshId if no refresh for 
+	 *          the given owner were found, otherwise KErrNone.
+	 */
+    virtual TInt RemoveRefreshesFor (const MRefreshOwner* aOwner) = 0;
+
+	/**
+	 * Returns a refreshing request.
+	 * The request ownership is not transferred.
+	 *
+	 * @param aRefreshId the id for the refresh whose request is returned
+	 *
+	 * @returns Request of the refresh. 0 if not found.
+     */
+	virtual CSIPRequest* Request (const TRefreshId& aRefreshId) = 0;
+
+    /**
+	 * Update the remote target.
+	 * 
+	 * @pre aOwner!=0
+     *
+     * @param aOwner. The ownership is not transferred.
+	 * @param aRemoteTarget the new remote target.
+	 *
+     */
+	virtual void UpdateRemoteTargetL (const MRefreshOwner* aOwner, 
+		                              CURIContainer& aRemoteTarget) = 0;
+
+	/**
+	 * Update header to a request of given refreshid. Leaves with
+	 * CSIPClient::ENonExistingRefreshId if no refresh for 
+	 * the given id was found.
+	 *
+	 * @pre aRefreshId!=KEmptyRefreshId
+	 * 
+	 * @param aRefreshId a refresh id of an existing refresh
+	 *
+	 * @param aOwner a callback interface implemented by the caller 
+	 *
+	 * @param aSIPHeader a SIP header to updated, 
+	 *        the ownership is transferred.
+	 */
+	virtual void UpdateHeaderL (const TRefreshId& aRefreshId,
+	                            const MRefreshOwner* aOwner,
+								CSIPHeaderBase* aSIPHeader) = 0;
+
+	/**
+	 * Update the Route-sets for all the refreshes of a given owner. 
+	 * @param aOwner. The ownership is not transferred.
+     * @param aRouteSet. An array of CSIPRouteHeader-objects.
+	 *        The ownership is not transfered.
+	 */
+	virtual void UpdateRouteSetsL (const MRefreshOwner* aOwner, 
+				                   const RPointerArray<CSIPRouteHeader>& aRouteSet) = 0;
+
+	/**
+	 * Removes the Route-sets for all the refreshes of a given owner.
+	 * @param aOwner. The ownership is not transferred.
+	 */
+	virtual void RemoveRouteSets (const MRefreshOwner* aOwner) = 0;
+
+	/**
+	 * Set all the registration ids empty for the given refresh owner.
+	 *
+	 * @param aOwner. The ownership is not transferred.
+	 */
+	virtual void SetRegistrationIdsEmpty (const MRefreshOwner* aOwner) = 0;
+	
+	/**
+	 * Set the refresh interval for the request. 
+	 * If no request is pending adjusts the timer immediately.
+	 * If a request is pending, the new interval will be taken into use
+	 * after the final response for the pending request has been received. 
+	 *
+	 * @param aRefreshId identifies the refresh
+	 *
+	 * @param aInterval the interval with which the request is refreshed
+	 */	
+	virtual void SetIntervalL  (const TRefreshId& aRefreshId,
+	                            TInt aInterval) = 0;
+	
+	/**
+	 * Gets the refresh interval for the request.
+	 *
+	 * @param aRefreshId identifies the refresh
+	 *
+	 * @return refresh interval
+	 */		
+	virtual TInt IntervalL (const TRefreshId& aRefreshId) = 0;
+	
+	/**
+	 * Gets the current transaction id for a refresh.
+	 *
+	 * @param aRefreshId identifies the refresh
+	 *
+	 * @return current transaction id, if found, otherwise KEmptyTransactionId
+	 */	
+	virtual TTransactionId CurrentTransactionId(
+	    const TRefreshId& aRefreshId) const = 0;
+        
+	/**
+	 * Gets a MSIPSecUser related to a refresh.
+     *
+     * @param aRefreshId the refresh id
+     *
+     * @return MSIPSecUser related to the given refresh id, if found,
+     *         otherwise NULL.
+	 */    
+    virtual const MSIPSecUser* SIPSecUser(
+        const TRefreshId& aRefreshId) const = 0;    
+    };
+
+#endif // MSIPREFRESHMGR_H
+
+// End of File