README 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. timer module
  2. Tomas Mandys
  3. Iptel.org
  4. Copyright © 2007 iptelorg GmbH
  5. _________________________________________________________________
  6. Table of Contents
  7. 1. Admin Guide
  8. 1. Overview
  9. 2. Dependencies
  10. 3. ABNF syntax
  11. 4. Parameters
  12. 4.1. declare_timer (string)
  13. 5. Functions
  14. 5.1. timer_enable(timer_id, enable_disable)
  15. 5.2. @timer.timer.timer_id.enabled
  16. 5.3. @timer.executed
  17. 6. Examples
  18. List of Examples
  19. 1.1. Example declare_timer
  20. 1.2. timer_enable usage
  21. 1.3. timer.timer.timer_id.enabled usage
  22. 1.4. timer.executed usage
  23. 1.5. timer common example
  24. 1.6. Using timer module for testing a functionality
  25. Chapter 1. Admin Guide
  26. Table of Contents
  27. 1. Overview
  28. 2. Dependencies
  29. 3. ABNF syntax
  30. 4. Parameters
  31. 4.1. declare_timer (string)
  32. 5. Functions
  33. 5.1. timer_enable(timer_id, enable_disable)
  34. 5.2. @timer.timer.timer_id.enabled
  35. 5.3. @timer.executed
  36. 6. Examples
  37. 1. Overview
  38. The module supports triggering specific route block on timer.
  39. 2. Dependencies
  40. none
  41. 3. ABNF syntax
  42. timer_id = alphanum
  43. slow_fast = "slow" | "fast"
  44. declare_timer_syntax = timer_id "=" (route#|route_name) "," interval ",
  45. " slow_fast "," ["enable"]
  46. enable_disable = "0" | "1"
  47. 4. Parameters
  48. 4.1. declare_timer (string)
  49. 4.1. declare_timer (string)
  50. Declares timer route which will be called in specific interval.
  51. The format is:
  52. declare_timer = declare_timer_syntax
  53. timer_id is timer identifier, route is handler to be called when timer
  54. is triggered, interval is timer interval in milliseconds, slow_fast
  55. determines if handler will be hooked in slow or fast timer queue, fast
  56. timer handler returns as quickly as possible, slow timer handler may
  57. spend longer time, see ser/doc/timers.txt documentation. Use enable to
  58. enable timer when ser is starting, otherwise use timer_enable to start
  59. it later.
  60. Example 1.1. Example declare_timer
  61. ...
  62. modparam("timer", "declare_timer", "MY_TIMER=MY_TIMER_ROUTE,10,slow,ena
  63. ble");
  64. ...
  65. 5. Functions
  66. 5.1. timer_enable(timer_id, enable_disable)
  67. 5.2. @timer.timer.timer_id.enabled
  68. 5.3. @timer.executed
  69. 5.1. timer_enable(timer_id, enable_disable)
  70. Enable/disable timer route specified by timer_id. Because of timer
  71. core API the callback is not disabled immediately but is removed from
  72. handler by itself not to decrease performance. Disabling and enabling
  73. in sequence may be tricky. timer_id references to timer declared by
  74. declare_timer.
  75. Example 1.2. timer_enable usage
  76. ...
  77. timer_enable("MY_TIMER", 1);
  78. ...
  79. 5.2. @timer.timer.timer_id.enabled
  80. Return true ("1") if timer specified by timer_id is enabled, otherwise
  81. returns false ("0").
  82. Example 1.3. timer.timer.timer_id.enabled usage
  83. if (@timer.timer.MY_TIMER.enabled == "1") {
  84. ....
  85. }
  86. 5.3. @timer.executed
  87. Returns name of timer which has been executed, i.e. non empty value is
  88. returned only when handler is being processed.
  89. Example 1.4. timer.executed usage
  90. if (@timer.executed != "") {
  91. # timer is being handled
  92. ....
  93. }
  94. 6. Examples
  95. Example 1.5. timer common example
  96. loadmodule "modules/xprint/xprint.so"
  97. loadmodule "modules/timer/timer.so"
  98. modparam("timer", "declare_timer", "tmr1=ONTIMER,1000");
  99. modparam("timer", "declare_timer", "tmr2=ONTIMER2,2000,slow,enable");
  100. route["print"] {
  101. xplog("L_INFO", "fired: %@timer.executed\n");
  102. }
  103. route["ONTIMER"] {
  104. # do something
  105. route("print");}
  106. route["ONTIMER2"] {
  107. # do something
  108. timer_enable("tmr1", 0);
  109. route("print");
  110. }
  111. Example 1.6. Using timer module for testing a functionality
  112. The timer module may be used to test a functionality being developed
  113. and not requiring real request.A developer may put tested code in
  114. route section which is called once after ser starts.
  115. loadmodule "timer";
  116. loadmodule "xprint";
  117. modparam("timer", "declare_timer", "TIMER_TEST=TEST,100,,enable");
  118. route {
  119. xplog("L_E","main route");
  120. }
  121. route[TEST] {
  122. timer_enable("TIMER_TEST", "0");
  123. xplog("L_E","test start\n");
  124. # add here tested functionality
  125. xplog("L_E","test end\n");
  126. }