The SIP Client Resolver defines the architecture used to resolve or identify the target client when SIP requests are received from the default port. The Symbian SIP stack is implemented as a Symbian server and uses the default UDP and TCP port 5060 to send and receive SIP messages. Many applications or target clients receive SIP messages that use the default port, and the correct target client must be determined.
The SIP Client Resolver determines the target client based on the SIP request and the XML-description provided by every SIP Client Resolver API implementation. It requests the resolved ECOM plug-in to connect to the SIP or another server which uses SIP.
The Client Resolver API requires the SIP Codec API and the SIP Codec API.
The target clients that receive SIP requests must implement the API Client Resolver API. The following are the two methods in which a target client can receive SIP requests:
Implement the CSIPResolvedClient interface and provide an XML description with their capabilities
The XML description describes the supported content-types and media formats that use SIP headers and SDP m-lines in the ECOM resource file. Client Resolver framework determines the target client by comparing the incoming SIP request to the XML descriptions provided by the CSIPResolvedClient implementation.
Implement the CSIPResolvedClient2 interface and add Request-URIs user-part, plug-ins UID, and the client UID to the SIP Client Resolver mapping table in the Central Repository
The table maps the user-part of the incoming SIP request’s Request-URI to the related CSIPResolvedClient2 implementation’s UID. SIP Client Resolver framework gives the SIP request to only the plug-ins for which a mapping entry is found in the Central Repository.
This implies that every target client must provide an ECOM plug-in that is used by the Client Resolver Framework. The Client Resolver Framework uses the information in the SIP request and matches it with the XML description or the mapping table entry provided by the target clients. It then decides which target client plug-in to load.
SIP Client Resolver must create a class derived from CSIPResolvedClient or CSIPResolvedClient2 to receive requests outside the SIP dialogs. If the target client is not running, it must be started to enable it to receive SIP requests.
The target clients must implement the CSIPResolvedClient interface to receive SIP requests outside SIP dialogs and enable the client resolution mechanism.
SIP uses the data provided in the ECOM resource file or, as requested by the implementation to decide which target client is used.
The target clients must implement the CSIPResolvedClient2 interface to receive SIP requests outside SIP dialogs and enable the client resolution mechanism.
The SIP stack uses the plug-ins that implement this interface as follows:
If the SIP request does not contain the Accept-Contact-header, go to step 2. If it does, the SIP stack calls the CSIPResolvedClient2::MatchAcceptContactsL() method on all the plug-ins and applies the following logic:
If the SIP request does not contain the Event-header, go to step 3. If it does, SIP stack calls the CSIPResolvedClient2::MatchEventL() method on all the plug-ins and applies the following logic:
The SIP stack calls the CSIPResolvedClient2::MatchRequestL() method on all the plug-ins and applies the following logic:
The channel UIDs must be unique across all SIP clients. The clients may use UIDs assigned for the binaries.
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License v1.0.