diff -r 2fe1408b6811 -r e1b950c65cb4 epoc32/include/mw/sipconnectionobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/epoc32/include/mw/sipconnectionobserver.h Wed Mar 31 12:27:01 2010 +0100 @@ -0,0 +1,231 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* 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 +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Name : sipconnectionobserver.h +* Part of : SIP Client +* Interface : SDK API, SIP Client API +* Version : 1.0 +* +*/ + + + +#ifndef MSIPCONNECTIONOBSERVER_H +#define MSIPCONNECTIONOBSERVER_H + +// INCLUDES +#include "sipconnection.h" + +// FORWARD DECLARATIONS +class CSIPDialogAssocBase; +class CSIPInviteDialogAssoc; +class CSIPRegistrationBinding; +class CSIPDialog; +class CSIPTransactionBase; +class CSIPServerTransaction; + +// CLASS DECLARATION + +/** +* @publishedAll +* @released +* +* An interface to be implemented by users of CSIPConnection. +* Interface allows to be able to receive requests, responses, connection state +* notifications and error notifications from sip stack. +* +* Note: The client must not delete related CSIPConnection object +* during the execution of the interface function. +* +* @lib n/a +*/ + +class MSIPConnectionObserver + { + public: + /** + * A SIP request outside a dialog has been received from the network. + * + * @pre aTransaction != 0 + * @param aTransaction SIP server transaction. The ownership is + * transferred. + */ + virtual void IncomingRequest (CSIPServerTransaction* + aTransaction) = 0; + + /** + * A SIP request within a dialog has been received from the network. + * The client must resolve the actual dialog association to which + * this request belongs. + * + * @pre aTransaction != 0 + * @param aTransaction SIP server transaction. The ownership is + * transferred. + * @param aDialog the dialog that this transaction belongs to. + */ + virtual void IncomingRequest (CSIPServerTransaction* aTransaction, + CSIPDialog& aDialog) = 0; + + /** + * A SIP response received from the network. + * + * @param aTransaction contains response elements. + */ + virtual void IncomingResponse (CSIPClientTransaction& + aTransaction) = 0; + + /** + * A SIP response received from the network that is within a dialog + * association or creates a dialog association. + * + * @param aTransaction contains response elements. + * @param aDialogAssoc a dialog association. + */ + virtual void IncomingResponse ( + CSIPClientTransaction& aTransaction, + CSIPDialogAssocBase& aDialogAssoc) = 0; + + /** + * Multiple SIP responses have been received to the single INVITE due + * to the forking proxy. Note that each response creates a separate + * INVITE dialog association. + * Multiple responses can arrive until SIP stack completes UAC core + * INVITE transaction. + * If clients deletes INVITE transaction after first SIP response + * other possible responses will be consumed by the implementation. + * + * @param aTransaction contains response elements + * @param aDialogAssoc INVITE dialog association; the ownership is + * transferred + */ + virtual void IncomingResponse ( + CSIPClientTransaction& aTransaction, + CSIPInviteDialogAssoc* aDialogAssoc) = 0; + + /** + * A SIP response related a registration binding or an error response + * that is related to registration binding has been received + * from the network. + * + * @param aTransaction contains response elements + * @param aRegistration registration binding this transaction belongs to + */ + virtual void + IncomingResponse (CSIPClientTransaction& aTransaction, + CSIPRegistrationBinding& aRegistration) = 0; + + /** + * An asynchronous error has occurred in the stack related to the + * request indicated by the given transaction. + * + * @param aError system wide or SIP error code + * @param aTransaction failed transaction + * @param aSIPConnection a SIP connection + */ + virtual void ErrorOccured (TInt aError, + CSIPTransactionBase& aTransaction) = 0; + + /** + * An asynchronous error has occurred in the stack related + * to the request indicated by the given transaction. + * + * @param aError system wide or SIP error code + * @param aTransaction the failed transaction + * @param aRegistration the failed registration binding + */ + virtual void ErrorOccured (TInt aError, + CSIPClientTransaction& aTransaction, + CSIPRegistrationBinding& aRegistration) = 0; + + /** + * An asynchronous error has occured related to a request within + * an existing dialog. + * + * @param aError system wide or SIP error code + * @param aTransaction the failed transaction. + * @param aDialogAssoc the failed dialog associoation. + */ + virtual void ErrorOccured ( + TInt aError, + CSIPTransactionBase& aTransaction, + CSIPDialogAssocBase& aDialogAssoc) = 0; + + /** + * An asynchronous error has occured related to a refresh + * + * @param aError system wide or SIP error code + * @param aSIPRefresh original refresh object. + */ + virtual void ErrorOccured (TInt aError, CSIPRefresh& aSIPRefresh) = 0; + + /** + * An asynchronous error has occured related to a periodical refresh + * that relates to a registration. + * + * @param aError system wide or SIP error code; + * KErrCouldNotConnect if the refresh has failed + * due to the suspended connection. + * @param aRegistration associated registration binding + */ + virtual void ErrorOccured (TInt aError, + CSIPRegistrationBinding& aRegistration) = 0; + + /** + * An asynchronous error has occured related to a periodical refresh + * that belongs to SIP dialog association. + * + * @param aError system wide or SIP error code; + * KErrCouldNotConnect if the refresh has failed + * due to the suspended connection. + * @param aDialogAssoc SIP dialog association. + */ + virtual void ErrorOccured (TInt aError, + CSIPDialogAssocBase& aDialogAssoc) = 0; + + /** + * SIP stack has completed UAC core INVITE transaction 64*T1 seconds + * after the reception of the first 2xx response. No more 2xx responses + * can be received to the issued single INVITE. + * + * If the INVITE transaction does not create a dialog, or the INVITE + * transaction encounters an error, this event will not be sent. + * + * @param aTransaction a complete UAC core INVITE transaction + */ + virtual void InviteCompleted (CSIPClientTransaction& aTransaction) = 0; + + /** + * Invite was canceled with the CANCEL + * @param aTransaction a canceled INVITE UAS transaction + */ + virtual void InviteCanceled (CSIPServerTransaction& aTransaction) = 0; + + /** + * Connection state has changed. + * If connection state has changed to EInactive or EUnavailable, + * SIP stack has removed all stand-alone SIP refreshes, registrations + * and dialog associations that client requested to refresh. Client may + * re-issue refresh requests (stand-alone, registration or dialog + * association related) when connection becomes EActive again. + * SIP stack also terminates all pending SIP client transactions and no + * errors are reported back to the client about the terminated + * transactions nor about removed refreshes in order to avoid event + * flood. + * + * @param aState indicates the current connection state + */ + virtual void ConnectionStateChanged (CSIPConnection::TState aState) = 0; + }; + +#endif