Symbian3/PDK/Source/GUID-AFE7F3DA-6D61-5A4C-A08F-C998C8805A06.dita
changeset 5 f345bda72bc4
parent 3 46218c8b8afa
child 9 59758314f811
equal deleted inserted replaced
4:4816d766a08a 5:f345bda72bc4
     7     Nokia Corporation - initial contribution.
     7     Nokia Corporation - initial contribution.
     8 Contributors: 
     8 Contributors: 
     9 -->
     9 -->
    10 <!DOCTYPE concept
    10 <!DOCTYPE concept
    11   PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
    11   PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
    12 <concept xml:lang="en" id="GUID-AFE7F3DA-6D61-5A4C-A08F-C998C8805A06"><title>How the target Client is Resolved using CSIPResolvedClient2</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>The SIP Client Resolver determines the target clients by comparing the Request-URI of the incoming SIP request to the information stored in SIP Client Resolver mapping table in the Central Repository. The information required to access the map table in the Central Repository is defined in the <filepath>sipclientresolverconfigcrkey.h</filepath> file. The incoming SIP request compares with the Request-URI’s user part in the Central Repository mapping table. </p> <p>If a match is found, the related ECOM plug-in is loaded by its UID. The loaded plug-in matches the incoming SIP requests based on their fields. If the request matches, the plug-in returns the UID of the matching client. SIP Client Resolver requests the resolved ECom plug-in to connect to the Symbian OS server that uses SIP. </p> <p>The resource (<filepath>.rss</filepath>) file contains the information in the Central Repository and also the following information: </p> <ul><li id="GUID-6CF8E2D5-5BF3-5E56-93BE-97A0D2054B0E"><p> <codeph> dll_uid</codeph> and <codeph>implementation_uid</codeph>: These UIDs are obtained from <xref scope="external" href="http://www.symbiansigned.com">Symbian Signed</xref>. </p> <p> <b>Note:</b> Both these UIDs can be the same. </p> </li> <li id="GUID-A2F95B01-F707-51D1-AD67-4EB364865C33"><p>The <codeph>interface_uid</codeph> must be <codeph>0x10282EE5</codeph>. </p> </li> </ul> <section><title>Resolving the target client using CSIPResolvedClient2</title> <p>The following illustration shows how the SIP Client Resolver subsystem resolves the target client implementing <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita"><apiname>CSIPResolvedClient2</apiname></xref> and requests the resolved client to connect to the SIP implementation. </p> <fig id="GUID-750221F0-A98E-5C47-B804-5A6CDD16B2E9"><title>
    12 <concept id="GUID-AFE7F3DA-6D61-5A4C-A08F-C998C8805A06" xml:lang="en"><title>How
    13              Call flow of resolving a target client implementation using
    13 the target Client is Resolved using CSIPResolvedClient2</title><prolog><metadata><keywords/></metadata></prolog><conbody>
    14              CSIPResolvedClient2 
    14 <p>The SIP Client Resolver determines the target clients by comparing the
    15           </title> <image href="GUID-8EF8CDD3-9FFE-5C39-8303-67A661C67F6B_d0e544793_href.jpg" placement="inline"/></fig> <p>The target clients must implement the <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita"><apiname>CSIPResolvedClient2</apiname></xref> interface to receive SIP requests including SIP dialogs and enable the client resolution mechanism. <b/><b>Note</b>: The channel UIDs must be unique across all SIP clients. For example clients may use UIDs assigned for binaries. </p> <p>The SIP stack uses the plug-ins that implement the <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita"><apiname>CSIPResolvedClient2</apiname></xref> interface as follows: </p> <ol id="GUID-E0C735BE-BBBD-533B-AB2B-59F8936060BA"><li id="GUID-7854B67A-2143-5EA4-949D-B3C96CA51866"><p>If the SIP request does not contain an Accept-Contact-header, go to step 2. If it does, the SIP stack calls <codeph>CSIPResolvedClient2::MatchAcceptContactsL</codeph> for all the plug-ins and applies the following logic: </p> <ul><li id="GUID-E975B348-52DB-519A-9AC0-98821BA27E95"><p>If none of the clients match, go to step 2 </p> </li> <li id="GUID-99DB2FEE-470B-5E76-8183-AD2C0E1B6FF0"><p>If one of the client match, the SIP request is sent to the matching client </p> </li> <li id="GUID-5F420FD9-2AEE-5517-A216-FA3868941902"><p>If more than one of the clients match, go to step 2 </p> </li> </ul> </li> <li id="GUID-F28D6940-D404-5E0F-B52A-6A47980ADA68"><p>If the SIP request does not contain an Event-header go to step 3. If it does, the SIP stack calls <codeph>CSIPResolvedClient2::MatchEventL</codeph> for all the plug-ins and applies the following logic: </p> <ul><li id="GUID-390E2FBC-305E-59C0-BE1F-E7C961B47251"><p>If none of the clients match, go to step 3 </p> </li> <li id="GUID-6A41D1A5-7636-51CC-864D-F2AB095D97E6"><p>If one of the client match, the SIP request is sent to the matching client </p> </li> <li id="GUID-8C51B40C-FC7B-566E-B56F-4279233C192E"><p>If more than one of the clients match, go to step 3 </p> </li> </ul> </li> <li id="GUID-9C094348-B7F4-572D-B49B-B99F81C902F2"><p>The SIP stack calls <codeph>CSIPResolvedClient2::MatchRequestL</codeph> for all the plug-ins and applies the following logic: </p> <ul><li id="GUID-63351732-E32A-58BC-8F32-7BA3832788FD"><p>If none of the clients match, the SIP generates an error response </p> </li> <li id="GUID-9E8765F8-A55F-5EA3-A63E-ACBF8A4BEF24"><p>If one of the client match, the SIP request is sent to the matching client </p> </li> <li id="GUID-AE679FD1-163D-5F3B-ADE8-1C6AEF490552"><p>If more than one of the clients match, SIP selects one of these clients randomly and sends the request to it. The ROM-based clients are preferred. </p> </li> </ul> </li> </ol> </section> <section><title>See also</title> <p> <xref href="GUID-0D579DDC-0A8A-5CFA-8194-CAA955B65A57.dita">Example of a SIP Client Resolver Plug-in</xref>  </p> </section> </conbody></concept>
    15 Request-URI of the incoming SIP request to the information stored in SIP Client
       
    16 Resolver mapping table in the Central Repository. The information required
       
    17 to access the map table in the Central Repository is defined in the <filepath>sipclientresolverconfigcrkey.h</filepath> file.
       
    18 The incoming SIP request compares with the Request-URI’s user part in the
       
    19 Central Repository mapping table. </p>
       
    20 <p>If a match is found, the related ECOM plug-in is loaded by its UID. The
       
    21 loaded plug-in matches the incoming SIP requests based on their fields. If
       
    22 the request matches, the plug-in returns the UID of the matching client. SIP
       
    23 Client Resolver requests the resolved ECom plug-in to connect to the Symbian
       
    24 platform server that uses SIP. </p>
       
    25 <p>The resource (<filepath>.rss</filepath>) file contains the information
       
    26 in the Central Repository and also the following information: </p>
       
    27 <ul>
       
    28 <li id="GUID-6CF8E2D5-5BF3-5E56-93BE-97A0D2054B0E"><p> <codeph> dll_uid</codeph> and <codeph>implementation_uid</codeph>:
       
    29 These UIDs are obtained from <xref href="http://www.symbiansigned.com" scope="external">Symbian
       
    30 Signed</xref>. </p> <p> <b>Note:</b> Both these UIDs can be the same. </p> </li>
       
    31 <li id="GUID-A2F95B01-F707-51D1-AD67-4EB364865C33"><p>The <codeph>interface_uid</codeph> must
       
    32 be <codeph>0x10282EE5</codeph>. </p> </li>
       
    33 </ul>
       
    34 <section id="GUID-D0D9C1C9-C0A1-4C4C-ACA6-14C23D651E38"><title>Resolving the target client using CSIPResolvedClient2</title> <p>The
       
    35 following illustration shows how the SIP Client Resolver subsystem resolves
       
    36 the target client implementing <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita"><apiname>CSIPResolvedClient2</apiname></xref> and
       
    37 requests the resolved client to connect to the SIP implementation. </p> <fig id="GUID-750221F0-A98E-5C47-B804-5A6CDD16B2E9">
       
    38 <title>              Call flow of resolving a target client implementation
       
    39 using              CSIPResolvedClient2            </title>
       
    40 <image href="GUID-8EF8CDD3-9FFE-5C39-8303-67A661C67F6B_d0e565311_href.jpg" placement="inline"/>
       
    41 </fig> <p>The target clients must implement the <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita"><apiname>CSIPResolvedClient2</apiname></xref> interface
       
    42 to receive SIP requests including SIP dialogs and enable the client resolution
       
    43 mechanism. <b/><b>Note</b>: The channel UIDs must be unique across all
       
    44 SIP clients. For example clients may use UIDs assigned for binaries. </p> <p>The
       
    45 SIP stack uses the plug-ins that implement the <xref href="GUID-30BC7BC4-0FBE-3C60-A2E4-2E5AE206C61E.dita"><apiname>CSIPResolvedClient2</apiname></xref> interface
       
    46 as follows: </p> <ol id="GUID-E0C735BE-BBBD-533B-AB2B-59F8936060BA">
       
    47 <li id="GUID-7854B67A-2143-5EA4-949D-B3C96CA51866"><p>If the SIP request does
       
    48 not contain an Accept-Contact-header, go to step 2. If it does, the SIP stack
       
    49 calls <codeph>CSIPResolvedClient2::MatchAcceptContactsL</codeph> for all the
       
    50 plug-ins and applies the following logic: </p> <ul>
       
    51 <li id="GUID-E975B348-52DB-519A-9AC0-98821BA27E95"><p>If none of the clients
       
    52 match, go to step 2 </p> </li>
       
    53 <li id="GUID-99DB2FEE-470B-5E76-8183-AD2C0E1B6FF0"><p>If one of the client
       
    54 match, the SIP request is sent to the matching client </p> </li>
       
    55 <li id="GUID-5F420FD9-2AEE-5517-A216-FA3868941902"><p>If more than one of
       
    56 the clients match, go to step 2 </p> </li>
       
    57 </ul> </li>
       
    58 <li id="GUID-F28D6940-D404-5E0F-B52A-6A47980ADA68"><p>If the SIP request does
       
    59 not contain an Event-header go to step 3. If it does, the SIP stack calls <codeph>CSIPResolvedClient2::MatchEventL</codeph> for
       
    60 all the plug-ins and applies the following logic: </p> <ul>
       
    61 <li id="GUID-390E2FBC-305E-59C0-BE1F-E7C961B47251"><p>If none of the clients
       
    62 match, go to step 3 </p> </li>
       
    63 <li id="GUID-6A41D1A5-7636-51CC-864D-F2AB095D97E6"><p>If one of the client
       
    64 match, the SIP request is sent to the matching client </p> </li>
       
    65 <li id="GUID-8C51B40C-FC7B-566E-B56F-4279233C192E"><p>If more than one of
       
    66 the clients match, go to step 3 </p> </li>
       
    67 </ul> </li>
       
    68 <li id="GUID-9C094348-B7F4-572D-B49B-B99F81C902F2"><p>The SIP stack calls <codeph>CSIPResolvedClient2::MatchRequestL</codeph> for
       
    69 all the plug-ins and applies the following logic: </p> <ul>
       
    70 <li id="GUID-63351732-E32A-58BC-8F32-7BA3832788FD"><p>If none of the clients
       
    71 match, the SIP generates an error response </p> </li>
       
    72 <li id="GUID-9E8765F8-A55F-5EA3-A63E-ACBF8A4BEF24"><p>If one of the client
       
    73 match, the SIP request is sent to the matching client </p> </li>
       
    74 <li id="GUID-AE679FD1-163D-5F3B-ADE8-1C6AEF490552"><p>If more than one of
       
    75 the clients match, SIP selects one of these clients randomly and sends the
       
    76 request to it. The ROM-based clients are preferred. </p> </li>
       
    77 </ul> </li>
       
    78 </ol> </section>
       
    79 <section id="GUID-026A9B43-E096-4D32-AC3B-2DDC7974FFF6"><title>See also</title> <p> <xref href="GUID-0D579DDC-0A8A-5CFA-8194-CAA955B65A57.dita">Example
       
    80 of a SIP Client Resolver Plug-in</xref>  </p> </section>
       
    81 </conbody></concept>