|
1 <?xml version="1.0" encoding="utf-8"?> |
|
2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. --> |
|
3 <!-- This component and the accompanying materials are made available under the terms of the License |
|
4 "Eclipse Public License v1.0" which accompanies this distribution, |
|
5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". --> |
|
6 <!-- Initial Contributors: |
|
7 Nokia Corporation - initial contribution. |
|
8 Contributors: |
|
9 --> |
|
10 <!DOCTYPE concept |
|
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
|
12 <concept id="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F" xml:lang="en"><title>Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
13 <p>The SIP Client API manages the multimedia sessions, subscribes to events, |
|
14 and sends SIP messages. It also provides access to the basic services of the |
|
15 SIP stack such as: </p> |
|
16 <ul> |
|
17 <li id="GUID-E9BF6031-1DAF-5238-A306-C44F0F91682D"><p>Sending and receiving |
|
18 of SIP messages </p> </li> |
|
19 <li id="GUID-C6A3FA97-1F09-587E-9504-9685D8306B04"><p>Creating registrations </p> </li> |
|
20 <li id="GUID-A02F02C7-A903-53E0-A64E-F0B62C93A90F"><p>Forming and tearing |
|
21 down dialogs initiated by INVITE, REFER and SUBSCRIBE requests </p> </li> |
|
22 </ul> |
|
23 <section id="GUID-8D3D5FB3-6037-5956-B3F0-DB14BD1BB17B"><title>Architectural |
|
24 relationships</title> <p>The SIP Client API uses the client-server mechanism |
|
25 to interact with the SIP stack. This means more than one client can use the |
|
26 SIP stack at the same time. The calls to the SIP Client API are synchronous. |
|
27 The SIP Client API implements a set of callback functions to pass the events |
|
28 back to the application. </p> <p><b>Capability information</b> </p> <p>The |
|
29 following table describes the capabilities required to use the SIP Client |
|
30 API and the conditions in which they are required: </p> <table id="GUID-B3DCF31A-C6D5-58B9-87FA-B2CD3E0ABA1F"> |
|
31 <tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/> |
|
32 <thead> |
|
33 <row> |
|
34 <entry>Capability </entry> |
|
35 <entry>Reason needed </entry> |
|
36 </row> |
|
37 </thead> |
|
38 <tbody> |
|
39 <row> |
|
40 <entry><p>NetworkServices </p> </entry> |
|
41 <entry><p>to send or receive SIP messages </p> </entry> |
|
42 </row> |
|
43 <row> |
|
44 <entry><p>WriteDeviceData </p> </entry> |
|
45 <entry><p>to create an instance of the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> class </p> </entry> |
|
46 </row> |
|
47 <row> |
|
48 <entry><p>NetworkControl </p> <p>Location </p> <p>ReadDeviceData </p> </entry> |
|
49 <entry><p>to use the function <codeph>CSIPConnection::SetOptL()</codeph> </p> </entry> |
|
50 </row> |
|
51 </tbody> |
|
52 </tgroup> |
|
53 </table> <p><b>Extending the API</b> </p> <p>SIP Client API cannot be extended. </p> </section> |
|
54 <section id="GUID-E055BF09-9605-57E6-9502-CB3F4CAC29B8"><title>SIP Client |
|
55 API class structure</title> <ul> |
|
56 <li id="GUID-3E500E7D-ECB9-50F8-B996-A212EE294E68"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-581B8017-EAA0-59CB-A9CB-490370E0CEC9"> CSIP, MSIPObserver, CSIPConnection and MSIPConnectionObserver</xref> </p> </li> |
|
57 <li id="GUID-461F8201-ED85-582A-945C-7471F9BF27AA"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-0E726099-31C4-5DD4-9AEA-67765589F462">Registration services</xref> </p> </li> |
|
58 <li id="GUID-F69AEAB7-0E13-5673-B696-843957CC4C72"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-80CE8929-9DFD-5DCA-A929-662BD996223B"> SIP dialog associations</xref> </p> </li> |
|
59 <li id="GUID-BFE257A7-EF1A-58BF-A047-00E0B11B1FD3"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-B0D208E4-D1F9-5C5F-B937-11118E778074">Requests sent to, and received from, the network</xref> </p> </li> |
|
60 <li id="GUID-D0AC4583-B181-501C-A97A-63F094AD4046"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-0427709F-CD4B-5363-9377-10402B8A5819">SIP message related classes</xref> </p> </li> |
|
61 <li id="GUID-31ED307B-2285-5DE0-A83B-D0CB7A8C585D"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-4E4FAFCA-0BF6-510C-B8E3-28A83936A154">Automatically refreshing a SIP request</xref> </p> </li> |
|
62 <li id="GUID-B6E46736-A250-5064-B4F8-595A20025478"><p> <xref href="GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita#GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F/GUID-B71BC486-18C2-5E71-965E-0881FBA9CE85">Managing HTTP digest security settings</xref> </p> </li> |
|
63 </ul> <p id="GUID-581B8017-EAA0-59CB-A9CB-490370E0CEC9"><b> CSIP, MSIPObserver, |
|
64 CSIPConnection and MSIPConnectionObserver </b> </p> <fig id="GUID-0834012C-083F-5FA0-B29D-E3E852165528"> |
|
65 <image href="GUID-4381EA7F-BE75-5B43-BE97-C97D71D04377_d0e338573_href.png" placement="inline"/> |
|
66 </fig> <p>An application creates a single instance of the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> class, |
|
67 and implements the callback functions defined by <xref href="GUID-C6FF4A83-0097-3A82-B4ED-802E1FEA05D1.dita"><apiname>MSIPObserver</apiname></xref>. |
|
68 The <codeph>CSIP</codeph> uses the <codeph>MSIPObserver</codeph> functions. |
|
69 The <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> class asks the supported security mechanisms and |
|
70 determines whether a <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> object exists for a |
|
71 given IAP. </p> <p>The <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> object creates an instance |
|
72 of <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> that allows you to send standalone SIP |
|
73 requests and ask for the state of the network connection. Responses are received |
|
74 through the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita"><apiname>MSIPConnectionObserver</apiname></xref> interface that defines |
|
75 a set of callback functions that an application must implement. </p> <p>An |
|
76 application can have many <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> objects, but each |
|
77 of them must have a different IAP. </p> <p id="GUID-0E726099-31C4-5DD4-9AEA-67765589F462"><b>Registration |
|
78 services</b> </p> <fig id="GUID-63E38B2E-975E-554C-8EDC-65B8BBA86838"> |
|
79 <image href="GUID-E4543D60-A9D0-5121-9540-993BB15D3275_d0e338630_href.png" placement="inline"/> |
|
80 </fig> <p>An existing <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> is required to create |
|
81 an instance of <codeph>CSIPRegistrationBinding</codeph>. The <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref> class |
|
82 provides services for registration, updating the registration, and deregistration. |
|
83 This class also provides instructions to the SIP stack to automatically refresh |
|
84 the registration, and to query and set the outbound proxy used by the registration. </p> <p id="GUID-80CE8929-9DFD-5DCA-A929-662BD996223B"><b> SIP dialog |
|
85 associations</b> </p> <fig id="GUID-4870BE80-44B6-50F0-B77E-73FEAD136304"> |
|
86 <image href="GUID-17D1489B-F7F7-5CA7-9F81-850AA9ACEFEB_d0e338655_href.png" placement="inline"/> |
|
87 </fig> <p> <xref href="GUID-9841AF1A-B8CF-3BA1-8445-93064549AE8C.dita"><apiname>CSIPDialogAssocBase</apiname></xref> is the base class for SIP |
|
88 dialog associations, such as <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref>, <xref href="GUID-9539CAEE-28AE-3134-8415-EEBCBCDA4D18.dita"><apiname>CSIPSubscribeDialogAssoc</apiname></xref>, <xref href="GUID-2E7EF887-ED59-3E8A-B9A2-686DF879A16C.dita"><apiname>CSIPReferDialogAssoc</apiname></xref> and <xref href="GUID-72F96612-A95C-3066-BFF0-2E288C945A2A.dita"><apiname>CSIPNotifyDialogAssoc</apiname></xref>. The <xref href="GUID-9841AF1A-B8CF-3BA1-8445-93064549AE8C.dita"><apiname>CSIPDialogAssocBase</apiname></xref> class |
|
89 is used to obtain the associated SIP dialog, for the associated <xref href="GUID-382BC1BE-3CF3-3E81-B1FF-341EEF2B67EA.dita"><apiname>CSIPDialog</apiname></xref> instance, |
|
90 and for sending a non-target Refresh request within the dialog. </p> <p> <b> Note: </b> The |
|
91 SIP Client API creates the <xref href="GUID-382BC1BE-3CF3-3E81-B1FF-341EEF2B67EA.dita"><apiname>CSIPDialog</apiname></xref> instance, it cannot |
|
92 be created by the application. </p> <p>If any of the <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref>, <xref href="GUID-9539CAEE-28AE-3134-8415-EEBCBCDA4D18.dita"><apiname>CSIPSubscribeDialogAssoc</apiname></xref>, <xref href="GUID-2E7EF887-ED59-3E8A-B9A2-686DF879A16C.dita"><apiname>CSIPReferDialogAssoc</apiname></xref> and <xref href="GUID-72F96612-A95C-3066-BFF0-2E288C945A2A.dita"><apiname>CSIPNotifyDialogAssoc</apiname></xref> objects |
|
93 are associated, they are bound to an existing <xref href="GUID-382BC1BE-3CF3-3E81-B1FF-341EEF2B67EA.dita"><apiname>CSIPDialog</apiname></xref> object, |
|
94 or they can be used to create a new <codeph>CSIPDialog</codeph> object. </p> <p> <b>Note:</b> </p> <ul> |
|
95 <li id="GUID-6A085F6F-C243-53AD-B33C-F37D14DFE0A4"><p> <xref href="GUID-B4A2FBBD-2B5F-3E64-800D-C4E9203679A8.dita"><apiname>CSIPInviteDialogAssoc</apiname></xref> allows |
|
96 an application to initiate a dialog and to send <codeph>INVITE</codeph>,,<codeph>PRACK</codeph>,,<codeph>ACK</codeph>, <codeph>UPDATE,</codeph> and <codeph>BYE</codeph> requests related to the dialog. </p> </li> |
|
97 <li id="GUID-19C504F0-EAD5-524A-82E9-2D15BFA2A6D2"><p> <xref href="GUID-9539CAEE-28AE-3134-8415-EEBCBCDA4D18.dita"><apiname>CSIPSubscribeDialogAssoc</apiname></xref> allows |
|
98 an application to subscribe to different events by sending SUBSCRIBE and UNSUBSCRIBE |
|
99 requests. It also orders the SIP stack to automatically refresh the SUBSCRIBE |
|
100 request. </p> </li> |
|
101 <li id="GUID-C47B74D8-2251-5FCC-A356-1364EB61CF05"><p> <xref href="GUID-2E7EF887-ED59-3E8A-B9A2-686DF879A16C.dita"><apiname>CSIPReferDialogAssoc</apiname></xref> allows |
|
102 an application to define and send REFER requests. </p> </li> |
|
103 <li id="GUID-18AD2000-2A37-5CD9-8118-8B3322211D28"><p> <xref href="GUID-72F96612-A95C-3066-BFF0-2E288C945A2A.dita"><apiname> CSIPNotifyDialogAssoc</apiname></xref> allows |
|
104 an application to define and send NOTIFY requests. </p> </li> |
|
105 </ul> <p id="GUID-B0D208E4-D1F9-5C5F-B937-11118E778074"><b>Sent and received |
|
106 network requests</b> </p> <fig id="GUID-2E0C9020-1863-5644-BF7E-62B4DB9104D2"> |
|
107 <image href="GUID-F5A82F61-B93A-5652-93A4-B9CE877B4D4A_d0e338792_href.png" placement="inline"/> |
|
108 </fig> <p>When a SIP request is sent to the network, the SIP Client API implementation |
|
109 creates a <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> object and returns it to |
|
110 the application. A <codeph>CSIPClientTransaction</codeph> object represents |
|
111 the SIP transaction and consists of the SIP request and the SIP response. |
|
112 After receiving a response, the application gets <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> from |
|
113 the <codeph>CSIPClientTransaction</codeph> object. <b>Note:</b> Some client |
|
114 transactions can also be cancelled or refreshed. </p> <p>When a SIP request |
|
115 is received from the network, it is passed to the application as a <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> object. |
|
116 The application gets <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> from the <codeph>CSIPServerTransaction</codeph> object. |
|
117 A <codeph>CSIPRequestElements</codeph> object describes the kind of SIP request |
|
118 received. After the application determines the type of response to send, it |
|
119 uses the <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> to send the responses. </p> <p> <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita"><apiname>CSIPTransactionBase</apiname></xref> is |
|
120 the base class for <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref>. |
|
121 It provides the functions to obtain the current state of the transaction and |
|
122 the transaction type. Some operations are only allowed when the transaction |
|
123 is in a certain state. <b>Note:</b> The SIP Client API creates instances of <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> and they cannot be created by the application. </p> <p id="GUID-0427709F-CD4B-5363-9377-10402B8A5819"><b>SIP |
|
124 message related classes</b> </p> <fig id="GUID-B99CF040-E91F-5281-8AAC-2151049C0EA8"> |
|
125 <image href="GUID-6290D35A-7A41-5B9E-882A-E14F6D165ED7_d0e338869_href.png" placement="inline"/> |
|
126 </fig> <p>When a SIP request is sent to the network, the SIP Client API implementation |
|
127 creates a <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> object and returns it to |
|
128 the application. A <codeph>CSIPClientTransaction</codeph> object represents |
|
129 the SIP transaction and consists of the SIP request and the SIP response. |
|
130 After receiving a response the application gets <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> from |
|
131 the <codeph>CSIPClientTransaction</codeph> object. <b>Note:</b> Some client |
|
132 transactions can be cancelled or refreshed. </p> <p>When a SIP request is |
|
133 received from the network, it is passed to the application as a <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> object. |
|
134 The application gets <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> from the <codeph>CSIPServerTransaction</codeph> object. |
|
135 A <codeph>CSIPRequestElements</codeph> object describes the type of SIP request |
|
136 received. After the application determines the type of response to send, it |
|
137 uses the <codeph>CSIPServerTransaction</codeph> to send the responses. </p> <p> <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita"><apiname>CSIPTransactionBase</apiname></xref> is |
|
138 the base class for <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref>. |
|
139 It provides functions to obtain the current state of the transaction and the |
|
140 transaction type. Some operations are only allowed when the transaction is |
|
141 in a certain state. <b>Note:</b> The SIP Client API creates instances of <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> and they cannot be created by the application. </p> <p id="GUID-4E4FAFCA-0BF6-510C-B8E3-28A83936A154"><b> Automatically |
|
142 refreshing a SIP request</b> </p> <fig id="GUID-49ACB697-512C-5FCF-AD48-20D6AAB0FEFC"> |
|
143 <image href="GUID-6B9E5B8D-E2F7-5972-ABFB-49F7F466EBBD_d0e338945_href.png" placement="inline"/> |
|
144 </fig> <p>The SIP stack automatically refreshes a SIP request using the <xref href="GUID-3C166C85-6E17-323B-9CD3-B3E2836DC1C3.dita"><apiname>CSIPRefresh</apiname></xref> object. <codeph>REGISTER</codeph>, <codeph>SUBSCRIBE</codeph> and a request outside the dialog are refreshed. After |
|
145 sending a refresh request, the application queries the state of the refresh |
|
146 from <codeph>CSIPRefresh</codeph>. </p> <p> <codeph>CSIPRefresh</codeph> provides |
|
147 functions for updating and terminating the refresh, for requests outside the |
|
148 dialog. The <xref href="GUID-48AA01D5-CE7B-3C22-B2E0-529261121EC4.dita"><apiname>CSIPRegistrationBinding</apiname></xref> and <xref href="GUID-9539CAEE-28AE-3134-8415-EEBCBCDA4D18.dita"><apiname>CSIPSubscribeDialogAssoc</apiname></xref> classes |
|
149 are used to update and terminate a refreshed <codeph>REGISTER</codeph> or <codeph>SUBSCRIBE</codeph>. </p> <p id="GUID-B71BC486-18C2-5E71-965E-0881FBA9CE85"><b> Managing HTTP digest security |
|
150 settings </b> </p> <fig id="GUID-7C296C1B-67E3-569F-A5E9-92A4F7922088"> |
|
151 <image href="GUID-1704898B-7836-53C2-8743-F733836EDE7B_d0e338991_href.png" placement="inline"/> |
|
152 </fig> <p>An application must create an instance of the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> class |
|
153 to use <codeph>CSIPHttpDigest</codeph>. The <xref href="GUID-F9FBAFBE-A895-3FD3-A526-604A6C9E035D.dita"><apiname>CSIPHttpDigest</apiname></xref> class |
|
154 manages HTTP digest security settings and contains only static functions. </p> </section> |
|
155 <section id="GUID-4195FAF9-D0D7-5046-BD62-9A314791BEFE"><title>Memory used</title> <p>After |
|
156 the <xref href="GUID-AFB2603A-8A35-3E70-8EC2-229C9726F00B.dita"><apiname>CSIP</apiname></xref> and <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> objects |
|
157 are created, most of the memory consumed is by <xref href="GUID-77CFD812-7238-3B84-80FF-475BD73C3506.dita"><apiname>CSIPMessageElements</apiname></xref>, <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> and <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> classes. <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita"><apiname>CSIPTransactionBase</apiname></xref> holds the most recent SIP |
|
158 response in a <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> object. When another |
|
159 response is received, the previous <xref href="GUID-13F32052-70BE-3B4D-9F8B-DF2DABB896B0.dita"><apiname>CSIPResponseElements</apiname></xref> object |
|
160 is deleted and a new one is created. </p> <p> <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> contains |
|
161 a <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref> object until the SIP request is transferred |
|
162 to the server side of the SIP stack. <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> contains |
|
163 the SIP request as <xref href="GUID-19FB031A-CFA7-3C67-A627-CFF501060AA5.dita"><apiname>CSIPRequestElements</apiname></xref>. The application |
|
164 owns the <xref href="GUID-059F9C3A-EA04-3295-912F-50444F073CE7.dita"><apiname>CSIPClientTransaction</apiname></xref> and <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> objects. |
|
165 When the transaction terminates, the application deletes these objects to |
|
166 conserve memory. </p> <p>A non-<codeph>INVITE</codeph> <codeph>CSIPClientTransaction</codeph> is |
|
167 deleted when it has received a final response or when the <codeph>ErrorOccured()</codeph> callback |
|
168 is called. A non-<codeph>INVITE</codeph> <codeph>CSIPServerTransaction</codeph> is |
|
169 deleted after the application sends a final response. </p> <p>The <codeph>INVITE</codeph> related |
|
170 transactions are deleted if the <codeph>ErrorOccured()</codeph> callback function |
|
171 is called. These transactions behave differently because of the presence of |
|
172 an <codeph>ACK</codeph>. </p> <p>When the application sends a 2xx response |
|
173 to an <codeph>INVITE</codeph> related <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref>, |
|
174 it enters the <xref href="GUID-93256B64-49C9-37F1-9A4E-72C521759749.dita#GUID-93256B64-49C9-37F1-9A4E-72C521759749/GUID-DF7E4DCE-1F6D-3F2A-A638-5516A733AA9D"><apiname>CSIPTransactionBase::ETerminated</apiname></xref> state and |
|
175 it is deleted at this point. A new <xref href="GUID-7E54C95E-5155-30B1-8169-A59778774403.dita"><apiname>CSIPServerTransaction</apiname></xref> object |
|
176 receives the ACK. </p> <p>When the application sends an <codeph>INVITE</codeph> request |
|
177 and the <codeph>CSIPClientTransaction</codeph> receives a 2xx response, the |
|
178 transaction enters the <codeph>CSIPTransactionBase::ETerminated</codeph> state. |
|
179 The associated <codeph>CSIPClientTransaction</codeph> must not be deleted |
|
180 as it is required to send the <codeph>ACK</codeph> and also to receive the <xref href="GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4.dita#GUID-B889A3FD-3B14-3785-90AE-3546F0C9A5D4/GUID-2E76BDA0-CE87-3538-A791-963A90230FD4"><apiname>MSIPConnectionObserver::InviteCompleted()</apiname></xref> callback. |
|
181 An <codeph>INVITE</codeph> related <codeph>CSIPClientTransaction</codeph> must |
|
182 be deleted only after a <codeph>MSIPConnectionObserver::InviteCompleted</codeph> or <xref href="GUID-D14D6845-1C5E-3C15-8310-574A2A8C6C95.dita#GUID-D14D6845-1C5E-3C15-8310-574A2A8C6C95/GUID-DED382FB-A6D5-37D7-B8E4-05262F690068"><apiname>MSIPConnectionObserver |
|
183 ::ErrorOccured</apiname></xref> event is received, or if the state of the associated <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita"><apiname>CSIPConnection</apiname></xref> goes |
|
184 to <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita#GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94/GUID-68DD22DC-67E4-387B-BBE9-B9B96D9C9016"><apiname>CSIPConnection::EInactive</apiname></xref> or <xref href="GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94.dita#GUID-2A070F4D-A35B-3505-BE86-E6C7A2F27B94/GUID-5963A947-BD5C-3B34-9D10-2CB5DC413774"><apiname>CSIPConnection::EUnavailable</apiname></xref>. </p> </section> |
|
185 </conbody></concept> |