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