mirror of https://github.com/sipwise/kamailio.git
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.
|
9 years ago | |
---|---|---|
.. | ||
doc | 10 years ago | |
Makefile | 10 years ago | |
README | 9 years ago | |
timer.c | 10 years ago |
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"); }