[OpenSER-Devel] dialog callbacks: mi enhancements

Dan Pascu dan at ag-projects.com
Sat Apr 19 00:01:28 CEST 2008


On Saturday 19 April 2008, Dan Pascu wrote:
> > can create two wrappers around the generic dialog callback:
> >  - one would be the existing run_dlg_callback (and keep the existing
> > signature), - the other one would be run_mi_callback.
>
> Again, I do not see these just as the same thing. I see them as 2
> different interfaces. The existing one and a new one to move
> information the other way around.
> They may look the same because one will most likely implement this new
> interface using a callback mechanism too, but the distinction of which
> interface moves data in which direction is important IMO.

If I think a bit more of this, the new interface doesn't have to be 
callback based. It can just be a simple function each module that wishes 
to participate in providing extra MI information would register, and this 
function should return a node list. Something like:

// in the module built on top of dialog

struct mi_node*
dialog_mi_helper(struct dlg_cell *dlg, void **param)
{
  // build node list
  return node_list;
}

...
dlg_api.register_mi_helper(dialog_mi_helper, param);
...


// in the dialog module

...
mi_helper = module_mi_helper_list; // simple linked list
while (mi_helper) {
   node_list = mi_helper->function(dlg, mi_helper->param);
   // process node_list for displaying it
   mi_helper = mi_helper->next;
}
...

-- 
Dan



More information about the Devel mailing list