[SR-Dev] script parsing: string switch support

Andrei Pelinescu-Onciul andrei at iptel.org
Fri Feb 20 16:01:44 CET 2009


On Feb 20, 2009 at 15:54, Henning Westerholt <henning.westerholt at 1und1.de> 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. ;-)

Good luck with runtime debugging then :-)

> 
> > 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. 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 

Sorry, but that's just broken (mixed expressions).

Andrei



More information about the sr-dev mailing list