1.1 --- a/epoc32/include/sipnotifydialogassoc.h Tue Mar 16 16:12:26 2010 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,232 +0,0 @@
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 : sipnotifydialogassoc.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 -
1.28 -#ifndef CSIPNOTIFYDIALOGASSOC_H
1.29 -#define CSIPNOTIFYDIALOGASSOC_H
1.30 -
1.31 -// INCLUDES
1.32 -#include <e32base.h>
1.33 -#include "sipdialogassocbase.h"
1.34 -
1.35 -// CONSTANTS
1.36 -
1.37 -// FORWARD DECLARATIONS
1.38 -class CSIPEventHeader;
1.39 -class CSIPSubscriptionStateHeader;
1.40 -class MSIPRegistrationContext;
1.41 -
1.42 -// CLASS DECLARATION
1.43 -
1.44 -/**
1.45 -* @publishedAll
1.46 -* @released
1.47 -*
1.48 -* Class for managing SIP NOTIFY dialog associations.
1.49 -* It provides services for creating, using and
1.50 -* terminating SIP NOTIFY dialog associations. The user can have multiple
1.51 -* NOTIFY dialog associations per same SIP dialog.
1.52 -* Implementation handles SUBSCRIBE on the dialog level defined by Call-Id,
1.53 -* local and remote tags; user is responsible for "Event" and
1.54 -* "Subscription-State" header semantics.
1.55 -* @lib sipclient.lib
1.56 -*/
1.57 -class CSIPNotifyDialogAssoc: public CSIPDialogAssocBase
1.58 - {
1.59 - public: // Constructors and destructor
1.60 -
1.61 - /**
1.62 - * Two-phased constructor.
1.63 - * The response to the received SIP request will create a SIP NOTIFY
1.64 - * dialog association that will be correlated with the SIP dialog in
1.65 - * which SIP server transaction was received. If the server transaction
1.66 - * was not received within a SIP dialog, a new SIP dialog is created.
1.67 - * The server transaction must be either SUBSCRIBE or REFER transaction.
1.68 - * @pre aTransaction.State()==ETrying || EProceeding
1.69 - * @pre aTransaction.Type() ==
1.70 - * SipStrConsts::ESubscribe || SipStrConsts::ERefer
1.71 - * @pre aEvent != 0 && aState != 0
1.72 - * @param aTransaction a SIP server transaction
1.73 - * @param aEvent an event to send a notification about; the ownership
1.74 - * is transferred.
1.75 - * @param aState a subscription state; the ownership is transferred.
1.76 - * @return New object; the ownership is transferred
1.77 - * @leave KErrArgument if aTransaction is not a SUBSCRIBE or REFER
1.78 - * transaction, or aEvent == 0 or aState == 0.
1.79 - * @leave KErrSIPInvalidTransactionState if aTransaction is in a wrong
1.80 - * state
1.81 - */
1.82 - IMPORT_C static CSIPNotifyDialogAssoc*
1.83 - NewL(CSIPServerTransaction& aTransaction,
1.84 - CSIPEventHeader* aEvent,
1.85 - CSIPSubscriptionStateHeader* aState);
1.86 -
1.87 - /**
1.88 - * Two-phased constructor.
1.89 - * The response to the received SIP request will create a SIP NOTIFY
1.90 - * dialog association that will be correlated with the SIP dialog in
1.91 - * which SIP server transaction was received. If the server transaction
1.92 - * was not received within a SIP dialog, a new SIP dialog is created.
1.93 - * The server transaction must be either SUBSCRIBE or REFER transaction.
1.94 - * @pre aTransaction.State()==ETrying || EProceeding
1.95 - * @pre aTransaction.Type() ==
1.96 - * SipStrConsts::ESubscribe || SipStrConsts::ERefer
1.97 - * @pre aEvent != 0 && aState != 0
1.98 - * @param aTransaction a SIP server transaction
1.99 - * @param aEvent an event to send a notification about; the ownership
1.100 - * is transferred.
1.101 - * @param aState a subscription state; the ownership is transferred.
1.102 - * @return New object; the ownership is transferred
1.103 - * @leave KErrArgument if aTransaction is not a SUBSCRIBE or REFER
1.104 - * transaction, or aEvent == 0 or aState == 0.
1.105 - * @leave KErrSIPInvalidTransactionState if aTransaction is in a wrong
1.106 - * state
1.107 - */
1.108 - IMPORT_C static CSIPNotifyDialogAssoc*
1.109 - NewLC(CSIPServerTransaction& aTransaction,
1.110 - CSIPEventHeader* aEvent,
1.111 - CSIPSubscriptionStateHeader* aState);
1.112 -
1.113 - /**
1.114 - * Two-phased constructor.
1.115 - * The response to the received SIP request will create a SIP NOTIFY
1.116 - * dialog association that will be correlated with the SIP dialog in
1.117 - * which SIP server transaction was received. If the server transaction
1.118 - * was not received within a SIP dialog, a new SIP dialog is created.
1.119 - * The server transaction must be either SUBSCRIBE or REFER transaction.
1.120 - * @pre aTransaction.State()==ETrying || EProceeding
1.121 - * @pre aTransaction.Type() ==
1.122 - * SipStrConsts::ESubscribe || SipStrConsts::ERefer
1.123 - * @pre aContext.IsContextActive() == ETrue
1.124 - * @pre aEvent != 0 && aState != 0
1.125 - * @param aTransaction a SIP server transaction
1.126 - * @param aContext that will be used for populating
1.127 - * the Contact-header of the response to aTransaction
1.128 - * @param aEvent an event to send a notification about; the ownership
1.129 - * is transferred.
1.130 - * @param aState a subscription state; the ownership is transferred.
1.131 - * @return New object; the ownership is transferred
1.132 - * @leave KErrArgument if aTransaction is not a SUBSCRIBE or REFER
1.133 - * transaction, or aEvent == 0 or aState == 0.
1.134 - * @leave KErrSIPInvalidTransactionState if aTransaction is in a wrong
1.135 - * state
1.136 - */
1.137 - IMPORT_C static CSIPNotifyDialogAssoc*
1.138 - NewL(CSIPServerTransaction& aTransaction,
1.139 - const MSIPRegistrationContext& aContext,
1.140 - CSIPEventHeader* aEvent,
1.141 - CSIPSubscriptionStateHeader* aState);
1.142 -
1.143 - /**
1.144 - * Two-phased constructor.
1.145 - * The response to the received SIP request will create a SIP NOTIFY
1.146 - * dialog association that will be correlated with the SIP dialog in
1.147 - * which SIP server transaction was received. If the server transaction
1.148 - * was not received within a SIP dialog, a new SIP dialog is created.
1.149 - * The server transaction must be either SUBSCRIBE or REFER transaction.
1.150 - * @pre aTransaction.State()==ETrying || EProceeding
1.151 - * @pre aTransaction.Type() ==
1.152 - * SipStrConsts::ESubscribe || SipStrConsts::ERefer
1.153 - * @pre aContext.IsContextActive() == ETrue
1.154 - * @pre aEvent != 0 && aState != 0
1.155 - * @param aTransaction a SIP server transaction
1.156 - * @param aContext that will be used for populating
1.157 - * the Contact-header of the response to aTransaction
1.158 - * @param aEvent an event to send a notification about; the ownership
1.159 - * is transferred.
1.160 - * @param aState a subscription state; the ownership is transferred.
1.161 - * @return New object; the ownership is transferred
1.162 - * @leave KErrArgument if aTransaction is not a SUBSCRIBE or REFER
1.163 - * transaction, or aEvent == 0 or aState == 0.
1.164 - * @leave KErrSIPInvalidTransactionState if aTransaction is in a wrong
1.165 - * state
1.166 - */
1.167 - IMPORT_C static CSIPNotifyDialogAssoc*
1.168 - NewLC(CSIPServerTransaction& aTransaction,
1.169 - const MSIPRegistrationContext& aContext,
1.170 - CSIPEventHeader* aEvent,
1.171 - CSIPSubscriptionStateHeader* aState);
1.172 -
1.173 - /**
1.174 - * Destructor
1.175 - */
1.176 - IMPORT_C ~CSIPNotifyDialogAssoc();
1.177 -
1.178 - public: // New functions
1.179 -
1.180 - /**
1.181 - * Creates NOTIFY and sends it to the remote target.
1.182 - * If client provides optional SIP headers they must
1.183 - * not contain Event and Subscription-State headers.
1.184 - * @pre Dialog().Connection().State()==EActive
1.185 - * @pre Dialog().State()==CSIPDialog::TState::EConfirmed
1.186 - * @param aElements optional SIP message headers and body.
1.187 - * Ownership is transferred.
1.188 - * @return NOTIFY SIP UAC transaction
1.189 - * @leave KErrSIPInvalidDialogState if dialog's state is incorrect
1.190 - * @leave KErrSIPResourceNotAvailable if a required SIP Client API
1.191 - * object has been deleted.
1.192 - * @capability NetworkServices
1.193 - */
1.194 - IMPORT_C CSIPClientTransaction*
1.195 - SendNotifyL(CSIPMessageElements* aElements=0);
1.196 -
1.197 - /**
1.198 - * Gets an event about which the notification is done
1.199 - * @return an event
1.200 - */
1.201 - IMPORT_C const CSIPEventHeader& Event() const;
1.202 -
1.203 - /**
1.204 - * Gets subscription state
1.205 - * @return subscription state
1.206 - */
1.207 - IMPORT_C CSIPSubscriptionStateHeader& SubscriptionState();
1.208 -
1.209 - /**
1.210 - * Gets subscription state
1.211 - * @return subscription state
1.212 - */
1.213 - IMPORT_C const CSIPSubscriptionStateHeader& SubscriptionState() const;
1.214 -
1.215 - public: // New functions, for internal use
1.216 -
1.217 - CSIPClientTransaction*
1.218 - DoSendNotifyWithinDialogL(CSIPMessageElements* aElements);
1.219 -
1.220 - private: // Constructors
1.221 -
1.222 - CSIPNotifyDialogAssoc();
1.223 -
1.224 - void ConstructL(CSIPServerTransaction& aTransaction,
1.225 - const MSIPRegistrationContext* aContext,
1.226 - CSIPEventHeader* aEvent,
1.227 - CSIPSubscriptionStateHeader* aState);
1.228 -
1.229 - private: // Data
1.230 -
1.231 - CSIPEventHeader* iEvent;
1.232 - CSIPSubscriptionStateHeader* iSubscriptionState;
1.233 - };
1.234 -
1.235 -#endif