[sr-dev] Question about config framework (ser)
marius zbihlei
marius.zbihlei at 1and1.ro
Tue Feb 16 13:41:45 CET 2010
Andrei Pelinescu-Onciul wrote:
> On Feb 16, 2010 at 12:47, marius zbihlei <marius.zbihlei at 1and1.ro> wrote:
>
> You need this callback to be called the moment the value is set (1),
> in each process, before the updated config is used (2) or once, before
> the updated config is use the 1st time (by the first process that needs
> to access it) (3)?
>
> If (2) is ok, then use the on_set_child_cb (next field in the cfg_def).
> If (3) is ok, then set CFG_CB_ONLY_ONCE among the flag and use the
> on_set_child_cb, like for (2).
>
>
Hello,
What I really wanted was 1, when the cfg value was change the statistics
are also updated. But I guess this can't be easy done (requires changes
to cfg framework). As I only need the value changed once, and
statistics aren't per process, I guess 3 is the better option.
I don't completely understand the whole "before the updated config is
used". This means a cfg_update() is required or I don't have to do
anything the update being done transparently from the user(myself) point
of view. If I issue a sercmd cfg.set_now_int this will mean that the
child_cb will be called at the time of the update(the value being
changed now ?!) ?!
If I need to call cfg_update(), then I can call it from the "save"
function export of the registrar module(and all other function exports
called from ser cfg script). If this will make the child_cb to get
called, then I can update the statistics from there. The window between
the cfg value is changed and the changed is reflected to statistics is
limited by the next call to a registrar function export when a sip
messages is processed.
Another thing. Do I need to use cfg_update() periodically to ensure that
values from cfg framework are consistent in the modules?! After looking
at some examples in modules/tm I presumed that a call to cfg_get(...) is
enough to get the updated value (Note that I don't have any child
processes in the module - if there were children I would call
cfg_update() from the infinite loop of the child).
> So far I guess nobody had a fixup that didn't change the value :-)
>
I can think of two cases when the value is not changed/transformed
1. A change in cfg framework generates some internal module changes
(like a reread of a database, update of statistics). I think this can be
achieved via child_cb.
2. The fixup tests to see if the value is correct (like expecting a
string from a already known lists of strings). No changes are possible
and if the user gave smth wrong, sercmd will inform it at once . This
can't be achieved via child_cb.
Thanks for the help
Marius
>> Any ideas welcome.
>>
>
>
> In the long run we have to fix somehow the var. w/ fixup unreadable
> problem. Maybe we should add a cfg_on_display callback (but then we
> would have to update a lot of cfg_defs).
>
> Andrei
>
>
More information about the sr-dev
mailing list