SipDeveloperGuide

Version 33 (Adrian Georgescu, 03/13/2009 12:17 pm)

1 1 Adrian Georgescu
= Developer guide =
2 1 Adrian Georgescu
3 1 Adrian Georgescu
[[TOC(WikiStart, Sip*, depth=2)]]
4 1 Adrian Georgescu
5 16 Adrian Georgescu
The main goal of this library is to provide a simple to use API to create real-time communications applications between end-points based on SIP protocol. 
6 16 Adrian Georgescu
7 28 Adrian Georgescu
To use the library and the concepts described below you must be familiar with Python programming language. Familiarity with SIP and related protocols protocol is not required but having a good understanding of TCP/IP networking and real time application development in general are strongly recommended.
8 1 Adrian Georgescu
9 32 Adrian Georgescu
Instructions for installing the library are found [wiki:SipInstallation here].
10 31 Adrian Georgescu
11 11 Adrian Georgescu
== Middleware ==
12 1 Adrian Georgescu
13 33 Adrian Georgescu
To develop your application you should use the middleware API that hides the complexity and interactions of the lower level SIP, SDP, RTP, MSRP, XCAP and related protocols.
14 1 Adrian Georgescu
15 26 Adrian Georgescu
 * [wiki:SipMiddlewareApi Middleware API] - event driven middleware suitable for developing interactive user interfaces
16 25 Adrian Georgescu
 * [wiki:SipSettingsAPI Settings API] - used to reading and writing settings used by the middleware
17 24 Adrian Georgescu
18 24 Adrian Georgescu
The middleware API is used by the command line tools used for [wiki:SipTesting testing the library].
19 1 Adrian Georgescu
20 11 Adrian Georgescu
== Components ==
21 1 Adrian Georgescu
22 17 Adrian Georgescu
To develop your own middleware or application while controlling the underlying lower layers and protocols yourself, you must use the following APIs that provides granular control over their respective components:
23 1 Adrian Georgescu
24 1 Adrian Georgescu
 * [wiki:SipCoreApiDocumentation SIP core API] - The API for the SIP, RTP, ICE and audio engine
25 29 Adrian Georgescu
 * [wiki:SipMSRPApi MSRP API]  - The API for Message Session Relay Protocol (MSRP) used for instant messaging and file transfer
26 30 Adrian Georgescu
 * [wiki:SipPresenceApi Presence API]  - The API for payloads carried within SIP signaling used for publication, subscription and notifications of SIP events
27 19 Adrian Georgescu
 * [wiki:SipXCAPApi XCAP API]  - The API for XCAP document manipulation used for storage of buddy lists and presence policy documents
28 1 Adrian Georgescu
29 1 Adrian Georgescu
== Contributing ==
30 1 Adrian Georgescu
31 1 Adrian Georgescu
If you want to help us fixing a bug that you found or if you want to contribute with a new feature you must be familiar with the darcs version control system from http://darcs.net. 
32 1 Adrian Georgescu
33 1 Adrian Georgescu
First make sure you are using the latest version by doing a 'darcs pull'. 
34 1 Adrian Georgescu
35 1 Adrian Georgescu
Then record your changes using 'darcs record'. Follow the following guidelines for recording your changes:
36 1 Adrian Georgescu
37 1 Adrian Georgescu
 * Keep a patch name under 74 characters, so that a darcs changes in a 80 char console is consistent and readable. If you need to write more than that, use --edit-long-comment or do not specify -m "patch name" and it will automatically ask for a patch name and a long comment.  Also keep the long comment inside the 80 char frame
38 1 Adrian Georgescu
 * When you add a long comment, you have the patch name on the first line.  After that, leave an empty line and then add the long comment starting from the 1st column. If you need to add bulleted entries in the long comment, use a dash (-) not an asterisk (*), to avoid confusion with the asterisk darcs places before every patch name. 
39 1 Adrian Georgescu
 * Record separate patches for each distinct changes you make. Do not mix different changes in a single record.
40 1 Adrian Georgescu
 * Use darcs replace to rename tokens if possible instead of using a  search and replace in your editor. It correctly handles cases where someone else still kept using the old name (it will automatically rename this uses of the old name when he pull the darcs replace patch, which a simple token rename done by the editor and recorded as a standard diff will never do, requiring further patches to rename the old tokens that the other developer added in his code while you were doing the renaming).
41 1 Adrian Georgescu
42 1 Adrian Georgescu
Finally open a ticket at http://sipsimpleclient.com/newticket describing your patch and the problem solved and submit the patch using:
43 1 Adrian Georgescu
44 1 Adrian Georgescu
{{{
45 1 Adrian Georgescu
darcs send --to devel@ag-projects.com
46 1 Adrian Georgescu
}}}
47 1 Adrian Georgescu
48 1 Adrian Georgescu
 * [wiki:SipContributions Third-party contributions] page.