[sr-dev] [kemi] porting module functions with input/output PV parameters

Daniel-Constantin Mierla miconda at gmail.com
Fri Jan 13 18:16:50 CET 2017



On 13/01/2017 17:30, Mititelu Stefan wrote:
>
>>     1. What would be the best practice for porting module functions
>>     that read/write data from/to a pseudo-variable? ...At the moment
>>     I'm thinking of using str for input and return; probably this
>>     will lead to partially duplicating the code of the existing
>>     module functions.
>
>     The idea is to no longer pass names of variables to the functions
>     in the embedded language, but the string value for it. 
>
>     The functions that get a variable name to set can have to receive
>     it as string, then use pv_cache_get(name) to resolve to the PV
>     strctures. These functions will need a wrapper that will call the
>     function in C expecting already the PV structure.
>
>     Now there is a wrapping system that together with the fixups
>     convert from the parameters given as string values in kamailio.cfg
>     to the PV structure.
>
>     The idea is to no longer pass names of variables to the functions
>     in the embedded language, but the string value for it.
>
>>     2. Will kemi support some other types besides int/str/none?
>>     (i.e. SR_KEMIP_*PV*)
>>
>     Of course the goal is to extend kemi and make it easier to use for
>     common cases. If you have some proposal to make, just open a
>     discussion about it.
>
>     The goal is to be able to have very small wrappers for native
>     config language and kemi (and in many cases no wrappers) that will
>     call a common C functions.
>
>     The common C function should accept only int, str* and pv_spec_t*
>     (for functions that need to write in a pv) parameters.
>
>     The current fixup system for native config converts at some point
>     to  int/str using fixup_get_ivalue() and fixup_get_svalue().
>
>
> I will also have a look in apy_kemi.c for KSR.pv.get/set methods for a
> better understanding. Thanks! :D

Note that the KSR.pv and KSR.x submodules are the only ones implemented
in the interpreter modules at this moment. All the other submodules are
not tied to the interpreter modules. Probably the KSR.pv will get out of
interpreter, the KSR.x is intended to be interpreter-specific extensions
(right now is exporting the function to execute any kind of kamailio.cfg
function exported by its modules and the implementation of an "exit"
equivalent in the embedded languages -- Lua has an exit, but that does a
kill of the interpreter and by that, of kamailio).


>
>  
>
>     If something is not clear regarding kemi, just ask more, I am
>     happy to try to clarify better.
>
>
> 3. From what I've understood so far, kamailio becomes the interpreter
> itself. This actually mean that in the scripts I can do something like
> this:
> "
> import myPythonFramework
> import otherPythonLib
> # play with myPythonFramework
> # play with otherPythonLib
> "
> right?

Yes, you can import any Python lib/framwork available outside there,
with no relation to Kamailio, and combine it with the KSR to build
whatever python script you need.

As a side remark, I am not a common Python user/devel, I added the kemi
support in an existing module and then did some basic tests, but the
statement above should stay true. In my Lua scripts I used http/s,
twitter, db and other Lua-specific libs.

Probably you already noticed the examples in misc/examples/kemi/ -- they
are a good starting point.

Cheers,
Daniel

-- 
Daniel-Constantin Mierla
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio World Conference - May 8-10, 2017 - www.kamailioworld.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20170113/ae7a5ccb/attachment.html>


More information about the sr-dev mailing list