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