You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kamailio/modules/timer/doc/timer.xml

225 lines
5.5 KiB

<?xml version="1.0" encoding='ISO-8859-1'?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!-- Include general documentation entities -->
<!ENTITY % docentities SYSTEM "../../../docbook/entities.xml">
%docentities;
]>
<book id="timer" xmlns:xi="http://www.w3.org/2001/XInclude">
<bookinfo>
<title>timer module</title>
<authorgroup>
<author>
<firstname>Tomas</firstname>
<surname>Mandys</surname>
<affiliation><orgname>Iptel.org</orgname></affiliation>
<address>
<email>tomas dot mandys at iptel dot org</email>
</address>
</author>
</authorgroup>
<copyright>
<year>2007</year>
<holder>iptelorg GmbH</holder>
</copyright>
</bookinfo>
<toc></toc>
<chapter>
<title>Admin Guide</title>
<section id="timer.overview">
<title>Overview</title>
<para>
The module supports triggering specific route block on timer.
</para>
</section>
<section id="timer.dep">
<title>Dependencies</title>
<para>
none
</para>
</section>
<section id="timer.syntax">
<title>ABNF syntax</title>
<programlisting>
timer_id = alphanum
slow_fast = "slow" | "fast"
declare_timer_syntax = timer_id "=" (route#|route_name) "," interval "," slow_fast "," ["enable"]
enable_disable = "0" | "1"
</programlisting>
</section>
<section id="timer.parameters">
<title>Parameters</title>
<section id="timer.p.declare_timer">
<title><varname>declare_timer</varname> (string)</title>
<para>
Declares timer route which will be called in specific interval.
</para>
<para>
The format is:
</para>
<programlisting>
declare_timer = declare_timer_syntax
</programlisting>
<para>
<emphasis>timer_id</emphasis> is timer identifier, <emphasis>route</emphasis> is handler to be called when
timer is triggered, <emphasis>interval</emphasis> is timer interval in milliseconds, <emphasis>slow_fast</emphasis>
determines if handler will be hooked in slow or fast timer queue, fast timer handler returns
as quickly as possible, slow timer handler may spend longer time, see kamailio/doc/timers.txt documentation. Use <emphasis>enable</emphasis>
to enable timer when &kamailio; is starting, otherwise use <function>timer_enable</function> to start it later.
</para>
<example>
<title>Example <varname>declare_timer</varname></title>
<programlisting>
...
modparam("timer", "declare_timer", "MY_TIMER=MY_TIMER_ROUTE,10,slow,enable");
...
</programlisting>
</example>
</section>
</section>
<section id="timer.functions">
<title>Functions</title>
<section id="timer.p.timer_enable">
<title>
<function>timer_enable(timer_id, enable_disable)</function>
</title>
<para>
Enable/disable timer route specified by <varname>timer_id</varname>. Because of timer core API the callback
is not disabled immediately but is removed from handler by itself not to decrease performance.
Disabling and enabling in sequence may be tricky.
<emphasis>timer_id</emphasis> references to timer declared by <varname>declare_timer</varname>.
</para>
<example>
<title><function>timer_enable</function> usage</title>
<programlisting>
...
timer_enable("MY_TIMER", 1);
...
</programlisting>
</example>
</section>
<section id="timer.timer.timer_id.enabled">
<title>
<function>@timer.timer.timer_id.enabled</function>
</title>
<para>
Return true ("1") if timer specified by <varname>timer_id</varname> is enabled,
otherwise returns false ("0").
</para>
<example>
<title><function>timer.timer.timer_id.enabled</function> usage</title>
<programlisting>
if (@timer.timer.MY_TIMER.enabled == "1") {
....
}
</programlisting>
</example>
</section>
<section id="timer.executed">
<title>
<function>@timer.executed</function>
</title>
<para>
Returns name of timer which has been executed, i.e. non empty value is returned only
when handler is being processed.
</para>
<example>
<title><function>timer.executed</function> usage</title>
<programlisting>
if (@timer.executed != "") {
# timer is being handled
....
}
</programlisting>
</example>
</section>
</section>
<section id="timer.examples">
<title>Examples</title>
<example>
<title>timer common example</title>
<programlisting>
loadmodule "modules/xprint/xprint.so"
loadmodule "modules/timer/timer.so"
modparam("timer", "declare_timer", "tmr1=ONTIMER,1000");
modparam("timer", "declare_timer", "tmr2=ONTIMER2,2000,slow,enable");
route["print"] {
xplog("L_INFO", "fired: %@timer.executed\n");
}
route["ONTIMER"] {
# do something
route("print");}
route["ONTIMER2"] {
# do something
timer_enable("tmr1", 0);
route("print");
}
</programlisting>
</example>
<example>
<title>Using timer module for testing a functionality</title>
<para>
The timer module may be used to test a functionality being developed and
not requiring real request.A developer may put tested code in route section
which is called once after &kamailio; starts.
</para>
<programlisting>
loadmodule "timer";
loadmodule "xprint";
modparam("timer", "declare_timer", "TIMER_TEST=TEST,100,,enable");
route {
xplog("L_E","main route");
}
route[TEST] {
timer_enable("TIMER_TEST", "0");
xplog("L_E","test start\n");
# add here tested functionality
xplog("L_E","test end\n");
}
</programlisting>
</example>
</section>
</chapter>
</book>