[SR-Users] Syntax of xavp

Olle E. Johansson oej at edvina.net
Wed Dec 12 11:17:25 CET 2012


12 dec 2012 kl. 11:11 skrev Daniel-Constantin Mierla <miconda at gmail.com>:

> 
> On 12/12/12 11:08 AM, Olle E. Johansson wrote:
>> 
>> 12 dec 2012 kl. 10:44 skrev Daniel-Constantin Mierla <miconda at gmail.com>:
>> 
>>> Hello,
>>> 
>>> On 10/9/12 3:59 PM, Andreas Granig wrote:
>>>> Hi,
>>>> 
>>>> I'm playing around with xavp, but there are some things I can't wrap my
>>>> head around.
>>>> 
>>>> What basically works is this:
>>>> 
>>>> $xavp(a=>foo) = 'foo';
>>>> $xavp(a[0]=>bar) = 'bar';
>>>> 
>>>> Getting the value like this:
>>>> 
>>>> xlog("L_INFO", "a-foo='$xavp(a=>foo)' and a-bar='$xavp(a=>bar)'");
>>>> as well as
>>>> xlog("L_INFO", "a-foo='$xavp(a[0]=>foo)' and a-bar='$xavp(a[0]=>bar)'");
>>>> 
>>>> ... works, because when omitting the index, it assumes [0]. I really
>>>> like to avoid such implicit assumptions though, to make the config
>>>> really clear, so I prefer the second approach.
>>>> 
>>>> What doesn't work for me then is explicit assignment of the very first
>>>> value, like this:
>>>> 
>>>> $xavp(a[0]=>foo) = 'foo';
>>>> $xavp(a[0]=>bar) = 'bar';
>>>> 
>>>> If I do this, the "a" xavp is never created. Wouldn't it be good
>>>> practice to create the xavp on first assignment? That way, I don't have
>>>> to take care in the config file whether the xavp is used for the first
>>>> time, where I have to omit the index.
>>> 
>>> xavps are reusing the avps architecture in regards of working as a stack. So last added is first in the list.
>>> 
>>> The problem of creating the structure when providing the index is also related to it. What should happen if one does:
>>> 
>>> $xavp(a[5]=>foo) = 'foo';
>>> 
>>> Create other 5 xavps named 'a' (indexes 0 to 4)?
>>> 
>>> It seemed the right approach not to create new structures at invalid position, by simply not providing the position. For overwriting a value, the index has to be provided.
>>> 
>>> The xavps system was under rfc at some point:
>>> http://lists.sip-router.org/pipermail/users/2009-July/024180.html
>>> 
>>> Of course, it can be adjusted when something can be better, for the moment I don't see a solution to this case, unless a new operator is introduced.
>>> 
>>>> What I'm also wondering is whether it's possible to directly access
>>>> nested xavps, like this:
>>>> 
>>>> $xavp(a=>foo) = 'afoo';
>>>> $xavp(b=>foo) = 'bfoo';
>>>> $xavp(c=>a) = $xavp(a);
>>>> $xavp(c=>b) = $xavp(b);
>>>> xlog("L_INFO", "a-foo='$xavp(c=>a[0]=>foo)'");
>>>> or
>>>> xlog("L_INFO", "a-foo='$xavp(c=>a=>foo)'");
>>>> 
>>>> Both ways give me "a-foo='<<xavp:0x7f0d387fe178>>'". Is this even
>>>> intended? Would be really cool if that's possible!
>>> Internally it is possible to have as many nested xavps (the value for an xavp can be a list of xavps). At this moment, the config file syntax has support only for two levels, your example is returning the value of c=>a, which is a pointer to another xavp list.
>> 
>> A question I came up with yesterday evening:
>> 
>> I have an AVP with five values (0-4) called "jultomte".
>> 
>> Is there a way to assign the FULL avp - all five values - to an xavp value?
>> 
>> Like:
>> xavp(xmas=>tree) = $avp(jultomte)[*];
> The star index [*] for avps (also hdrs and xavps) returns all the values in a comma separated string. So all five values will be concatenated, with comma in between, the result will be stored as a string value in the xavp.

another non-documented tidbit... Arghhh. Now I will have to add to my tests, change the cookbok and my training slides. 

thank you.

But it did not solve the issue though. I got all the values, but as a string.
/O ;-)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20121212/61eed7c9/attachment-0001.htm>


More information about the sr-users mailing list