Miklos Tirpak 8216129fc2 script callback: modules updated to the new API 16 anni fa
..
doc 1806270880 New makefiles for module documentation of ser modules 16 anni fa
Makefile 7a7f1a7b92 ser modules ported to sip-router 16 anni fa
README 3058abe429 - added example and README regenerated 17 anni fa
timer.c 8216129fc2 script callback: modules updated to the new API 16 anni fa

README


1. timer module

Tomas Mandys

Iptel.org

Copyright © 2007 iptelorg GmbH
Revision History
Revision $Revision$ $Date$
_________________________________________________________________

1.1. Overview
1.2. Dependencies
1.3. ABNF syntax
1.4. Parameters

1.4.1. declare_timer (string)

1.5. Functions

1.5.1. timer_enable(timer_id, enable_disable)
1.5.2. @timer.timer.timer_id.enabled
1.5.3. @timer.executed

1.6. Examples

1.1. Overview

The module supports triggering specific route block on timer.

1.2. Dependencies

none

1.3. ABNF syntax

timer_id = alphanum
slow_fast = "slow" | "fast"
declare_timer_syntax = timer_id "=" (route#|route_name) "," interval ",
" slow_fast "," ["enable"]
enable_disable = "0" | "1"

1.4. Parameters

1.4.1. declare_timer (string)

Declares timer route which will be called in specific interval.

The format is:
declare_timer = declare_timer_syntax

timer_id is timer identifier, route is handler to be called when timer is
triggered, interval is timer interval in milliseconds, slow_fast 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 ser/doc/timers.txt documentation. Use enable to enable timer when ser is
starting, otherwise use timer_enable to start it later.

Example 1. Example declare_timer
...
modparam("timer", "declare_timer", "MY_TIMER=MY_TIMER_ROUTE,10,slow,ena
ble");
...

1.5. Functions

1.5.1. timer_enable(timer_id, enable_disable)

Enable/disable timer route specified by timer_id. 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. timer_id references to timer declared by declare_timer.

Example 2. timer_enable usage
...
timer_enable("MY_TIMER", 1);
...

1.5.2. @timer.timer.timer_id.enabled

Return true ("1") if timer specified by timer_id is enabled, otherwise
returns false ("0").

Example 3. timer.timer.timer_id.enabled usage
if (@timer.timer.MY_TIMER.enabled == "1") {
....
}

1.5.3. @timer.executed

Returns name of timer which has been executed, i.e. non empty value is
returned only when handler is being processed.

Example 4. timer.executed usage
if (@timer.executed != "") {
# timer is being handled
....
}

1.6. Examples

Example 5. timer common example
loadmodule "modules/xlog/xlog.so"
loadmodule "modules/timer/timer.so"

modparam("timer", "declare_timer", "tmr1=ONTIMER,1000");
modparam("timer", "declare_timer", "tmr2=ONTIMER2,2000,slow,enable");

route["print"] {
xlog("L_INFO", "fired: %@timer.executed\n");
}

route["ONTIMER"] {
# do something
route("print");}


route["ONTIMER2"] {
# do something
timer_enable("tmr1", 0);
route("print");
}

Example 6. Using timer module for testing a functionality

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 ser starts.
loadmodule "timer";
loadmodule "xlog";

modparam("timer", "declare_timer", "TIMER_TEST=TEST,100,,enable");

route {
xlog("L_E","main route");
}

route[TEST] {
timer_enable("TIMER_TEST", "0");
xlog("L_E","test start\n");

# add here tested functionality

xlog("L_E","test end\n");
}