Difference between revisions of "DUM Overview"

From reSIProcate
Jump to navigation Jump to search
(Info originally from the "how to use dum page")
 
(Added link to DUMv2 planning page)
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
The DialogUsageManager(or DUM) is the class that keeps track of all of the Dialog related data structures and sits on top of the transaction layer of the SIP stack. It keeps track of multiple DialogSets which contain Dialogs.  Each DialogSet contains all the Dialogs that were created by a common initial request. They all share the same SIP Call-Id and from tag from the orginal request. Inside a specific DialogSet there can be some type of BaseCreator that represents the intial request that generated the dialog. This will only exist on the UAC side. The DialogSet also contains several objects derived from BaseUsage that are using this particular dialog. There are several types of things that are a Usage of a dialog. There can be one InviteSession, one Registration, one Publication, multiple Subscriptions and multiple OutOfDialogRequests. Note the name OutOfDialog is a little weird - OutOfDialog requests are actually in a thing a lot like a dialog but are transactions that are not in one of the other categories. Typically messages that result in OutOfDialogRequests are MESSAGE and OPTIONS.
+
The Dialog Usage Manager (also known as DUM) makes writing user agents easy by hiding complex SIP specifics. DUM provides user agent functionality (both UAC and UAS), including the handling of INVITE and SUBSCRIBE/NOTIFY dialogs, registration, and instant messaging. DUM is the main interface to the [http://www.estacado.net/resip/sip/resiprocate/dum/html/ dum library] used by your application. With DUM you can create applications like softphones, back-to-back user agents, and load generators.  
  
An initial SIP Request is created by calling the makeX interfaces on the DUM. It is then sent using the send interface on the DUM. When a response is returned for the request, a callback from one of the Handler classes will be called to notify the application about the incoming events. This will pass up some type of client or server usages class that can be used to send aditional messages and responses in the context of this particularr usage of the Dialog.
+
DUM provides the following benefits:
 +
* Manages refreshes for you:
 +
** Just set up registration binding and keep it active
 +
** Set up a subscription and keep it active. DUM will let you know when new updates come in via ** NOTIFY requests
 +
** Keep an INVITE session active
 +
** Handles forking for you
 +
** Merged requests
 +
** GRUU
 +
* Implements Offer/Answer (rfc 3264)
 +
* Manages profile information such as authorization
 +
* Manages AppDialogSetFactory, which enables DUM to create your derived AppDialogSet object instead of the default one. An AppDialogSet is equivalent to a call. It is created when a call starts.
 +
* Manages and stores Handlers, which are a way of referencing usages: DialogSetHandler, InviteSessionHandler, ClientRegistrationHandler, ServerRegistrationHandler, ClientSubscriptionHandler, ServerSubscriptionHandler, ClientPublicationHandler, ServerPublicationHandler, OutOfDialogHandler, ClientPagerMessageHandler, ServerPagerMessageHandler, RegistrationPersistenceManager
 +
* Manages redirections (RedirectManager)
 +
* Manages client authentication (ClientAuthManager)
 +
* Manages server authentication (ServerAuthManager)
 +
* Interface to add new Transports
 +
* Manages handles to Usages (HandleManager)
 +
* Provides interfaces to create new sessions as a UAC (invite, subscription, publication, registration, pager, others)
 +
* Provides interfaces to find particular usages based on a DialogId
 +
 
 +
A dum application creates a dum object, typically a single dum object for the entire application. This single dum object can manage multiple user agents. By default, the construction of the dum object creates a SipStack.
 +
 
 +
 
 +
== Working with the Dialog Usage Manager ==
 +
* [[How to use dum|How to use DUM]]
 +
* [[DUM Internals|DUM Internals]]
 +
* [http://www.estacado.net/resip/sip/resiprocate/dum/html/ Doxygen Documentation] (Generated from head periodically)
 +
 
 +
 
 +
== Planning Pages ==
 +
*[[DUMv2]] - Dumer

Latest revision as of 17:38, 18 April 2007

The Dialog Usage Manager (also known as DUM) makes writing user agents easy by hiding complex SIP specifics. DUM provides user agent functionality (both UAC and UAS), including the handling of INVITE and SUBSCRIBE/NOTIFY dialogs, registration, and instant messaging. DUM is the main interface to the dum library used by your application. With DUM you can create applications like softphones, back-to-back user agents, and load generators.

DUM provides the following benefits:

  • Manages refreshes for you:
    • Just set up registration binding and keep it active
    • Set up a subscription and keep it active. DUM will let you know when new updates come in via ** NOTIFY requests
    • Keep an INVITE session active
    • Handles forking for you
    • Merged requests
    • GRUU
  • Implements Offer/Answer (rfc 3264)
  • Manages profile information such as authorization
  • Manages AppDialogSetFactory, which enables DUM to create your derived AppDialogSet object instead of the default one. An AppDialogSet is equivalent to a call. It is created when a call starts.
  • Manages and stores Handlers, which are a way of referencing usages: DialogSetHandler, InviteSessionHandler, ClientRegistrationHandler, ServerRegistrationHandler, ClientSubscriptionHandler, ServerSubscriptionHandler, ClientPublicationHandler, ServerPublicationHandler, OutOfDialogHandler, ClientPagerMessageHandler, ServerPagerMessageHandler, RegistrationPersistenceManager
  • Manages redirections (RedirectManager)
  • Manages client authentication (ClientAuthManager)
  • Manages server authentication (ServerAuthManager)
  • Interface to add new Transports
  • Manages handles to Usages (HandleManager)
  • Provides interfaces to create new sessions as a UAC (invite, subscription, publication, registration, pager, others)
  • Provides interfaces to find particular usages based on a DialogId

A dum application creates a dum object, typically a single dum object for the entire application. This single dum object can manage multiple user agents. By default, the construction of the dum object creates a SipStack.


Working with the Dialog Usage Manager[edit]


Planning Pages[edit]