epoc32/include/mw/sipconnectionobserver.h
branchSymbian2
changeset 3 e1b950c65cb4
parent 2 2fe1408b6811
child 4 837f303aceeb
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/epoc32/include/mw/sipconnectionobserver.h	Wed Mar 31 12:27:01 2010 +0100
     1.3 @@ -0,0 +1,231 @@
     1.4 +/*
     1.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.6 +* All rights reserved.
     1.7 +* This component and the accompanying materials are made available
     1.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
     1.9 +* which accompanies this distribution, and is available
    1.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    1.11 +*
    1.12 +* Initial Contributors:
    1.13 +* Nokia Corporation - initial contribution.
    1.14 +*
    1.15 +* Contributors:
    1.16 +*
    1.17 +* Description:
    1.18 +* Name        : sipconnectionobserver.h
    1.19 +* Part of     : SIP Client
    1.20 +* Interface   : SDK API, SIP Client API
    1.21 +* Version     : 1.0
    1.22 +*
    1.23 +*/
    1.24 +
    1.25 +
    1.26 +
    1.27 +#ifndef MSIPCONNECTIONOBSERVER_H
    1.28 +#define MSIPCONNECTIONOBSERVER_H
    1.29 +
    1.30 +//  INCLUDES
    1.31 +#include "sipconnection.h"
    1.32 +
    1.33 +// FORWARD DECLARATIONS
    1.34 +class CSIPDialogAssocBase;
    1.35 +class CSIPInviteDialogAssoc;
    1.36 +class CSIPRegistrationBinding;
    1.37 +class CSIPDialog;
    1.38 +class CSIPTransactionBase;
    1.39 +class CSIPServerTransaction;
    1.40 +
    1.41 +// CLASS DECLARATION
    1.42 +
    1.43 +/**
    1.44 +*  @publishedAll
    1.45 +*  @released
    1.46 +*
    1.47 +*  An interface to be implemented by users of CSIPConnection.
    1.48 +*  Interface allows to be able to receive requests, responses, connection state
    1.49 +*  notifications and error notifications from sip stack.
    1.50 +*
    1.51 +*  Note: The client must not delete related CSIPConnection object 
    1.52 +*  during the execution of the interface function.
    1.53 +*
    1.54 +*  @lib n/a
    1.55 +*/
    1.56 +
    1.57 +class MSIPConnectionObserver
    1.58 +	{    	
    1.59 +    public:
    1.60 +		/**
    1.61 +		* A SIP request outside a dialog has been received from the network.
    1.62 +        *
    1.63 +        * @pre aTransaction != 0
    1.64 +		* @param aTransaction SIP server transaction. The ownership is
    1.65 +        *   transferred.
    1.66 +        */
    1.67 +		virtual void IncomingRequest (CSIPServerTransaction*
    1.68 +									  aTransaction) = 0;
    1.69 +
    1.70 +		/**
    1.71 +		* A SIP request within a dialog has been received from the network.
    1.72 +		* The client must resolve the actual dialog association to which
    1.73 +		* this request belongs.
    1.74 +		*
    1.75 +        * @pre aTransaction != 0
    1.76 +		* @param aTransaction SIP server transaction. The ownership is
    1.77 +        *   transferred.
    1.78 +		* @param aDialog the dialog that this transaction belongs to.        
    1.79 +		*/
    1.80 +		virtual void IncomingRequest (CSIPServerTransaction* aTransaction,
    1.81 +					                  CSIPDialog& aDialog) = 0;
    1.82 +
    1.83 +		/**
    1.84 +		* A SIP response received from the network.
    1.85 +		*
    1.86 +		* @param aTransaction contains response elements.
    1.87 +		*/
    1.88 +		virtual void IncomingResponse (CSIPClientTransaction&
    1.89 +                                       aTransaction) = 0;
    1.90 +
    1.91 +		/**
    1.92 +		* A SIP response received from the network that is within a dialog
    1.93 +		* association or creates a dialog association.
    1.94 +		*
    1.95 +		* @param aTransaction contains response elements.
    1.96 +		* @param aDialogAssoc a dialog association.        
    1.97 +		*/		
    1.98 +		virtual void IncomingResponse (
    1.99 +					CSIPClientTransaction& aTransaction,
   1.100 +					CSIPDialogAssocBase& aDialogAssoc) = 0;
   1.101 +
   1.102 +        /**
   1.103 +		* Multiple SIP responses have been received to the single INVITE due
   1.104 +		* to the forking proxy. Note that each response creates a separate
   1.105 +		* INVITE dialog association.
   1.106 +        * Multiple responses can arrive until SIP stack completes UAC core
   1.107 +		* INVITE transaction.
   1.108 +        * If clients deletes INVITE transaction after first SIP response
   1.109 +		* other possible responses will be consumed by the implementation.
   1.110 +		* 
   1.111 +		* @param aTransaction contains response elements
   1.112 +		* @param aDialogAssoc INVITE dialog association; the ownership is 
   1.113 +		*        transferred
   1.114 +		*/
   1.115 +		virtual void IncomingResponse (
   1.116 +					CSIPClientTransaction& aTransaction,
   1.117 +					CSIPInviteDialogAssoc* aDialogAssoc) = 0;
   1.118 +
   1.119 +		/**
   1.120 +		* A SIP response related a registration binding or an error response
   1.121 +		* that is related to registration binding has been received
   1.122 +        * from the network.
   1.123 +        *
   1.124 +		* @param aTransaction contains response elements
   1.125 +		* @param aRegistration registration binding this transaction belongs to
   1.126 +		*/
   1.127 +		virtual void
   1.128 +			IncomingResponse (CSIPClientTransaction& aTransaction,
   1.129 +                              CSIPRegistrationBinding& aRegistration) = 0;
   1.130 +
   1.131 + 		/**
   1.132 +		* An asynchronous error has occurred in the stack related to the
   1.133 +		* request indicated by the given transaction.
   1.134 +		*
   1.135 +		* @param aError system wide or SIP error code
   1.136 +		* @param aTransaction failed transaction
   1.137 +		* @param aSIPConnection a SIP connection        
   1.138 +		*/
   1.139 +		virtual void ErrorOccured (TInt aError,
   1.140 +                                   CSIPTransactionBase& aTransaction) = 0;
   1.141 +
   1.142 +		/**
   1.143 +		* An asynchronous error has occurred in the stack related
   1.144 +		* to the request indicated by the given transaction.
   1.145 +        *
   1.146 +		* @param aError system wide or SIP error code
   1.147 +		* @param aTransaction the failed transaction
   1.148 +		* @param aRegistration the failed registration binding
   1.149 +		*/
   1.150 +		virtual void ErrorOccured (TInt aError,
   1.151 +				                   CSIPClientTransaction& aTransaction,
   1.152 +					               CSIPRegistrationBinding& aRegistration) = 0;
   1.153 +
   1.154 +		/**
   1.155 +		* An asynchronous error has occured related to a request within
   1.156 +		* an existing dialog.
   1.157 +        *
   1.158 +		* @param aError system wide or SIP error code
   1.159 +		* @param aTransaction the failed transaction.
   1.160 +		* @param aDialogAssoc the failed dialog associoation.        
   1.161 +		*/
   1.162 +		virtual void ErrorOccured (
   1.163 +					TInt aError,
   1.164 +				    CSIPTransactionBase& aTransaction,
   1.165 +					CSIPDialogAssocBase& aDialogAssoc) = 0;
   1.166 +
   1.167 +		/**
   1.168 +		* An asynchronous error has occured related to a refresh 
   1.169 +        *
   1.170 +		* @param aError system wide or SIP error code
   1.171 +		* @param aSIPRefresh original refresh object.        
   1.172 +		*/
   1.173 +		virtual void ErrorOccured (TInt aError, CSIPRefresh& aSIPRefresh) = 0;
   1.174 +
   1.175 +		/**
   1.176 +		* An asynchronous error has occured related to a periodical refresh
   1.177 +        * that relates to a registration.
   1.178 +        *
   1.179 +		* @param aError system wide or SIP error code; 
   1.180 +		*		 KErrCouldNotConnect if the refresh has failed
   1.181 +		*		 due to the suspended connection.
   1.182 +		* @param aRegistration associated registration binding
   1.183 +		*/
   1.184 +		virtual void ErrorOccured (TInt aError,					
   1.185 +					               CSIPRegistrationBinding& aRegistration) = 0;
   1.186 +
   1.187 +		/**
   1.188 +		* An asynchronous error has occured related to a periodical refresh
   1.189 +        * that belongs to SIP dialog association.
   1.190 +        *
   1.191 +		* @param aError system wide or SIP error code; 
   1.192 +		*        KErrCouldNotConnect if the refresh has failed
   1.193 +		*		 due to the suspended connection.
   1.194 +		* @param aDialogAssoc SIP dialog association.        
   1.195 +		*/
   1.196 +		virtual void ErrorOccured (TInt aError,			
   1.197 +					               CSIPDialogAssocBase& aDialogAssoc) = 0;
   1.198 +
   1.199 +        /**
   1.200 +		* SIP stack has completed UAC core INVITE transaction 64*T1 seconds
   1.201 +        * after the reception of the first 2xx response. No more 2xx responses
   1.202 +        * can be received to the issued single INVITE.
   1.203 +        *
   1.204 +        * If the INVITE transaction does not create a dialog, or the INVITE
   1.205 +        * transaction encounters an error, this event will not be sent.
   1.206 +        *
   1.207 +		* @param aTransaction a complete UAC core INVITE transaction
   1.208 +		*/
   1.209 +        virtual void InviteCompleted (CSIPClientTransaction& aTransaction) = 0;
   1.210 +
   1.211 +		/**
   1.212 +        * Invite was canceled with the CANCEL
   1.213 +        * @param aTransaction a canceled INVITE UAS transaction
   1.214 +        */
   1.215 +        virtual void InviteCanceled (CSIPServerTransaction& aTransaction) = 0;
   1.216 +                
   1.217 +		/**
   1.218 +		* Connection state has changed.
   1.219 +        * If connection state has changed to EInactive or EUnavailable,
   1.220 +		* SIP stack has removed all stand-alone SIP refreshes, registrations 
   1.221 +		* and dialog associations that client requested to refresh. Client may
   1.222 +		* re-issue refresh requests (stand-alone, registration or dialog 
   1.223 +		* association related) when connection becomes EActive again.
   1.224 +		* SIP stack also terminates all pending SIP client transactions and no
   1.225 +        * errors are reported back to the client about the terminated
   1.226 +        * transactions nor about removed refreshes in order to avoid event
   1.227 +        * flood.
   1.228 +		* 
   1.229 +		* @param aState indicates the current connection state        
   1.230 +		*/
   1.231 +		virtual void ConnectionStateChanged (CSIPConnection::TState aState) = 0;
   1.232 +	};
   1.233 +
   1.234 +#endif