| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- 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 ser/doc/timers.txt documentation. Use enable to
- enable timer when ser 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,ena
- ble");
- ...
- 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 ser 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");
- }
|