--- /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