[SR-Dev] script parsing: string switch support
Daniel-Constantin Mierla
miconda at gmail.com
Fri Feb 20 16:05:33 CET 2009
On 02/20/2009 04:54 PM, Henning Westerholt wrote:
> On Friday 20 February 2009, Andrei Pelinescu-Onciul wrote:
>
>> [..]
>>
>>>> (1) - could be changed in some cases (e.g. string case with some int
>>>> label allowed, which could be automatically converted to string), but I
>>>> think it would too confusing and I disallowed it (in general having
>>>> mixed types in a switch() are 99% an error).
>>>>
>>> I would suggest to convert numbers to strings in this case automatically.
>>> For most people things get more confusing with the increasing amount of
>>> details they have to remember about the configuration language.
>>>
>> This would only make sense if we use match() for strings and switch()
>> for ints. Otherwise it would be too confusing.
>> Anyway I don't think the amount of details of the configuration language
>> is ever a problem, as long as one gets meaningful error messages when
>> checking the config (and before ser startup).
>>
>
> Hi Andrei,
>
> the amount of detail in the config language is IMHO important. The developers
> must document and test every single statement. Every user must read, learn
> and memorize each statement too.
>
> I regulary need to check the documentation for some special cases in the
> config when i get asked for a review of some changes a co-worker did, because
> he still feel not completely confortable after years of administrating SER*
> systems. During all the time i spend on user channels i really rarely heard
> the that our server is to slow (only when some real bottlenecks were
> involved, like DB), the common complain is that the learning curve is too
> steep. Perhaps i'm lazy, but i'd not say that everybody out there is it
> too. ;-)
>
>
>> The other approaches trade-off less config details for guessing what the
>> user intended, which IMO is much more dangerous. Is much better to get
>> meaningful errors when running ser -cf ... , then getting unexpected
>> behaviour at runtime (a very good example for this are typed variables
>> vs. untyped ones or operators that try to guess the type and assume the
>> user made the right choice).
>>
>
> I just checked in kamailio, we don't throw an error if one mix strings and
> ints in a switch case.
this is because the most of PVs have the string value as well.
However, I consider that misleading, although I worked a lot the switch.
It was planned to fix as the PV callbacks had a parameter for flags.
I would prefer single type case value, and report errors at startup - it
is easier to check and optimize. It is better to use a transformation to
convert the value to a specific type (e.g., {s.int}).
Cheers,
Daniel
> We also check for a correct type of an integer in a
> mixed expression, e.g. if its a valid int value. I don't think that we
> convert them implicitly, as many pseudo-variables hold internally both a
> string and a integer value, so mixed expression will work just as intended in
> most cases.
>
> Cheers,
>
> Henning
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
>
--
Daniel-Constantin Mierla
http://www.asipto.com
More information about the sr-dev
mailing list