Olle E. Johansson 17999042f6 module makefiles - remove SVN id and replace "example" with module name 10 年 前
..
doc 910ab2f17e timer Update documentation ("ser" => "Kamailio") 10 年 前
Makefile 17999042f6 module makefiles - remove SVN id and replace "example" with module name 10 年 前
README 910ab2f17e timer Update documentation ("ser" => "Kamailio") 10 年 前
timer.c bc2b423dc6 timer Update header in source code 10 年 前

README

timer module

Tomas Mandys

Iptel.org

Copyright � 2007 iptelorg GmbH
__________________________________________________________________

Table of Contents

1. Admin Guide

1. Overview
2. Dependencies
3. ABNF syntax
4. Parameters

4.1. declare_timer (string)

5. Functions

5.1. timer_enable(timer_id, enable_disable)
5.2. @timer.timer.timer_id.enabled
5.3. @timer.executed

6. Examples

List of Examples

1.1. Example declare_timer
1.2. timer_enable usage
1.3. timer.timer.timer_id.enabled usage
1.4. timer.executed usage
1.5. timer common example
1.6. Using timer module for testing a functionality

Chapter 1. Admin Guide

Table of Contents

1. Overview
2. Dependencies
3. ABNF syntax
4. Parameters

4.1. declare_timer (string)

5. Functions

5.1. timer_enable(timer_id, enable_disable)
5.2. @timer.timer.timer_id.enabled
5.3. @timer.executed

6. Examples

1. Overview

The module supports triggering specific route block on timer.

2. Dependencies

none

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"

4. Parameters

4.1. declare_timer (string)

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 kamailio/doc/timers.txt documentation. Use
enable to enable timer when Kamailio is starting, otherwise use
timer_enable to start it later.

Example 1.1. Example declare_timer
...
modparam("timer", "declare_timer", "MY_TIMER=MY_TIMER_ROUTE,10,slow,enab
le");
...

5. Functions

5.1. timer_enable(timer_id, enable_disable)
5.2. @timer.timer.timer_id.enabled
5.3. @timer.executed

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 1.2. timer_enable usage
...
timer_enable("MY_TIMER", 1);
...

5.2. @timer.timer.timer_id.enabled

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

Example 1.3. timer.timer.timer_id.enabled usage
if (@timer.timer.MY_TIMER.enabled == "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 1.4. timer.executed usage
if (@timer.executed != "") {
# timer is being handled
....
}

6. Examples

Example 1.5. timer common example
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");
}

Example 1.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 Kamailio starts.
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");
}