diff -r 000000000000 -r 307788aac0a8 realtimenetprots/sipfw/SIP/Refreshes/inc/MSipRefreshMgr.h --- /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& 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