1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
|
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");
}
|