Introduction and Notations
Introduction
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.
Notations
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).