[sr-dev] rpc: inter module rpc printf callback structure

Andrei Pelinescu-Onciul andrei at iptel.org
Tue Jun 29 14:59:02 CEST 2010


On Jun 29, 2010 at 08:31, Ovidiu Sas <osas at voipembedded.com> wrote:
> Hello Andrei,
> 
> 
> Thanks for getting back to me on this one.
> 
> Here's a pseudocode example.
> Let's assume that we have module a and module b.
> We have an rpc call into module a to print out some info.
> Module b has some relevant info that we would like to print out during
> the rpc call into module a.
> 
> inside module a we have:
> static void module_a_print_info(rpc_t *rpc, void *c) {
>     /*declare a variable to pass rpc stuf up to module b */
>     rpc_cb_ctx_t *rpc_cb;
> 
>     /* print stuff related to module a */
>     rpc->printf(c, "module a stuff ....");
> 
>     /*let's print stuf from mudule b now via a callback */
>     rpc_cb->rpc = rpc;
>     rpc_cb->c = c;
>     run_callback_into_module_b( ...., (void *)rpc_cb);
> }
> 
> inside module b, we have the callback:
> void module_b_callback_function(...., struct
> module_b_generic_callback_param *param)
>     /* extract rpc and c via the generic module_b_generic_callback_param */
>     rpc_cb_ctx_t* rpc_cb = (rpc_cb_ctx_t*)(param);
>     rpc_t *rpc = rpc_cb->rpc;
>     void *c = rpc_cb->c;
> 
>     rpc->printf(c, "module b stuff ....");
> }
> 
> Hope that the above pseudocode explains what I want to achieve.
> There is no impact on the core, all I want is to declare the
> rpc_cb_ctx_t structure into the rpc.h in order to make it available in
> an atomic way to both module a and b.

Ok, so you really need a common type used to pack the rpc functions and
context, defined somewhere in a file included by both of the modules.

It's fine if you add it to rpc.h, but then please add some comments
stating that is only a convenient way of packing an rpc callback
(rpc_function_t) parameters and it's not used/needed by the rpc
api/interface (to avoid confusion in the future).
> 
> 
> The real modules are:
>  - module a: modules_k/dialog (dialog.c:internal_rpc_print_dlg)
>  - module b: modules_k/qos (qos_handlers.c:qos_dialog_rpc_context_CB)
> 

Andrei
[...]



More information about the sr-dev mailing list