Table of Contents
Table of Contents
Selects are read-only functions that can be used in the script and that always return a string value. In the script a select always starts with a '@'. In an expression context a select always evaluates to either a string or undef.
For more informations see http://sip-router.org/wiki/cookbooks/selects/devel.
This document lists all the selects implemented by each module.
The following notations are used:
@ - all selects always start with '@'.
"string" - string type.
integer - integer type.
[] - Parameter markers. Can be either [integer] or ["string"]. Note that instead of ["string"] one could write .string, e.g.: @foo.bar["string"] is equivalent to @foo.bar.string.
{} - denotes an optional parameter. E.g.: @ruri.params{["string"]} means you could use @ruri.params by itself or you could specify an extra parameter: @ruri.params["trasnport"] or @ruri.params.transport.
<string> - means the next member is not fixed and can take any string value (it is a string parameter). It is equivalent with ["string"], e.g.: @msg.header.<string> is the same as @msg.header["string"]. It is used only to expose an internal implementation detail (SEL_PARAM_* vs. CONSUME_NEXT_*), but from the script writer point of view it is the same thing.
.* - means the select can be followed by a variable number of string parameters. E.g.: @cfg_get.* means that @cfg_get.core.version is a valid usage.
* (without a '.' in front) - it means the last member might be a class that might expand further (but the "expansion" is not defined in the same module). E.g. @foo.nameaddr* means that nameaddr is most likely a class that expands further (for example into @foo.nameaddr.uri a.s.o).