Symbian
Symbian Developer Library

SYMBIAN OS V9.4

Feedback

[Index] [Previous] [Next]


SIP client Resolver API Overview

[Top]


Purpose

The SIP Client Resolver defines the architecture for resolving, or identifying, the target client on receipt of SIP requests from the default port.

[Top]


Architectural relationships

The Client Resolver API requires the SIP Codec API and the SAP Codec API

The target clients interested in receiving SIP requests must implement this API. The following are the two different ways in which a target client can receive SIP requests:

This means that every target client must provide an ECom plug-in that can be 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, to decide which target client plug-in to load.

[Top]


Description


Class structure

Clients must create a class derived from CSIPResolvedClient or CSIPResolvedClient2 to receive requests outside SIP dialogs. If the target client is not running, it must be launched to be able to receive SIP requests.


CSIPResolvedClient

CSIPResolvedClient is an interface that the target clients must implement in order to receive SIP requests outside SIP dialogs and enable client resolution mechanism.

SIP uses the data provided in the ECom resource file or, optionally, as requested by the implementation to decide which target client to be used.

CSIPResolvedClient2

CSIPResolvedClient2 is an interface that the target clients must implement in order to receive SIP requests outside SIP dialogs and enable client resolution mechanism.

The SIP stack utilizes the plug-ins that implement this interface in the following manner:

  1. If the SIP request does not contain Accept-Contact-header(s), next step is performed. If it does, SIP stack calls the CSIPResolvedClient2::MatchAcceptContactsL() method on all the plug-ins and applies the following logic:

    • If none of the clients match, go to next step.

    • If a client matches, the SIP request is routed to the matching client.

    • If several clients match, go to next step.

  2. If the SIP request does not contain Event-header, next step is performed. If it does, SIP stack calls CSIPResolvedClient2::MatchEventL() method on all the plug-ins and applies the following logic:

    • If none of the clients match, go to next step.

    • If a client matches, the SIP request is routed to the matching client.

    • If several clients match, go to next step.

  3. SIP stack calls the CSIPResolvedClient2::MatchRequestL() method on all the plug-ins and applies the following logic:

    • If none of the clients match, an error response is generated.

    • If a client matches, the SIP request is routed to the matching client.

    • If several clients match, one of these clients are randomly picked and the SIP request is routed to it. Normally, the ROM-based clients are preferred.

Note: The channel UIDs must be unique across all SIP clients. The clients may use UIDs assigned for the binaries.

[Top]


See also