[SR-Users] callback function of tm module

Bruno Bresciani bruno.bresciani at gmail.com
Fri Jun 3 20:00:19 CEST 2011


Actually I'm migrating my call routing module of version 1.5.0 of kamailio
to version 3.1.2. I want to understand why the tm module registers an event
callback after the INVITE message is processed by my routing module.
When I use the dispatcher module for routing, no event callback is
registered by the tm module.

I do not quite understand this process callback, I study a little more ...


Regards,



2011/6/3 Timo Reimann <timo.reimann at 1und1.de>

> Hey Bruno,
>
>
> On 03.06.2011 16:21, Bruno Bresciani wrote:
> > In file t_hook.c line 386 "*cbp->callback( trans, cbp->types, params )*"
> > calls the function to record register_tmcb when I received a INVITE. I'd
> > like to now how register_tmcb function is call by the function callback.
>
> register_tmcb() isn't called by a callback function, it rather works the
> other way around. For clarity, here's the call flow:
>
> (1) A user is interested in being called back on a particular tm event,
> e.g., TMCB_DESTROY. To be notified of such events, he calls
> tmcb_register() and passes the set of events (callback types) he is
> interested in (e.g., TMCB_DESTROY and possibly others) together with the
> desired callback function and a few other parameters.
> (2) In tmcb_register(), a few sanity checks are done first (e.g.,
> callback type is valid, callback function is not NULL, transaction
> exists, etc.). If they pass, the callback function and the parameters
> are stored in a list of callbacks (called cb_list in register_tmcb()).
> (3) When a particular tm event occurs, the tm module checks if any
> callbacks were registered for that specific event. If so, it executes
> each registered callback function in sequence, with each function being
> passed the callback type and callback-specific parameter. The call of
> the callback is exactly what
>
>  cbp->callback( trans, type, params )
>
> does, at least for call types other than TMCB_REQUEST_IN.
>
> For TMCB_REQUEST_IN, the handling is slightly different because
> callbacks for new SIP requests cannot be associated with an already
> existing transaction (after all, they are new). With regards to how
> TMCB_REQUEST_IN-typed callback functions are called, the only difference
> is that the callback function is being passed the set of all callback
> types the registering user was interested in, and not just TMCB_REQUEST_IN:
>
>  cbp->callback( trans, cbp->types, params )
>
> (This is line 386.) Actually, I am not quite sure why the extent of
> returned callback types differs here. I'm using tm callbacks myself but
> never had to take advantage of that.
>
>
> Anyways, if all you want to do is use tm callbacks from a module of
> yours, just call register_tmcb() passing
>
> - a callback function,
> - a transaction cell (unless you're registering for TMCB_REQUEST_IN),
> - a void pointer to something you want to be passed back on callback
> execution, and
> - an optional release function for cleanup purposes.
>
> Implement your callback-specific logic in the callback function, and
> that's it. Naturally, your callback function must fit the callback
> signature defined in t_hooks.h.
>
>
> I hope this answers your question. If not, let us know what you
> specifically have in mind, i.e., whether you would like to use tm
> callbacks, change the framework, or whatever.
>
>
> Cheers,
>
> --Timo
>
>
>
> > 2011/6/3 Timo Reimann <timo.reimann at 1und1.de <mailto:
> timo.reimann at 1und1.de>>
> >
> >     Hi Bruno,
> >
> >
> >     On 03.06.2011 00:07, Bruno Bresciani wrote:
> >     > I'm having doubts in the implementation of the callback function
> >     module
> >     > tm. As she calls the function to record register_tmcb ()?
> >     > Can someome help me?
> >
> >     Could you be more specific on which part of the tm module you are
> having
> >     trouble with?
> >
> >     If you need an example on how to use tm's callbacks you may take a
> look
> >     at the dialog module, specifically the files dialog.c and
> >     dlg_handlers.c.
> >
> >
> >     Cheers,
> >
> >     --Timo
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20110603/fd49e976/attachment-0001.htm>


More information about the sr-users mailing list