Table of Contents
List of Examples
Table of Contents
The module supports triggering a specific route block on a specific timer. The timer can be activated and de-activated from the routing script at runtime.
... timer_id = alphanum slow_fast = "slow" | "fast" declare_timer_syntax = timer_id "=" (route#|route_name) "," interval "," slow_fast "," ["enable"] enable_disable = "0" | "1" ...
Declares timer route which will be called in specific interval.
The format is:
declare_timer = declare_timer_syntax
timer_enable
to start it later.
Example 1.1. Example declare_timer
... modparam("timer", "declare_timer", "MY_TIMER=MY_TIMER_ROUTE,10,slow,enable"); ...
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.
declare_timer
.
Example 1.5. Common example using timer module
... loadmodule "xlog.so" loadmodule "timer.so" modparam("timer", "declare_timer", "tmr1=ONTIMER,1000"); modparam("timer", "declare_timer", "tmr2=ONTIMER2,2000,slow,enable"); route["print"] { xlog("fired: $sel(@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 with kemi
... loadmodule "timer.so" modparam("timer", "declare_timer", "tmr1=ksr_timer,1000"); ... ... -- timer event callback function implemented in Lua function ksr_timer(evname) KSR.info("===== timer module triggered event\n"); return 1; end ...
Example 1.7. 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 "xlog"; modparam("timer", "declare_timer", "TIMER_TEST=TEST,100,,enable"); request_route { xlog("main route"); } route[TEST] { timer_enable("TIMER_TEST", "0"); xlog("test start\n"); # add here tested functionality xlog("test end\n"); } ...