RTimer Module

Daniel-Constantin Mierla

asipto.com

Edited by

Daniel-Constantin Mierla


Table of Contents

1. Admin Guide
1. Overview
2. Dependencies
2.1. Kamailio Modules
2.2. External Libraries or Applications
3. Parameters
3.1. default_interval (int)
3.2. timer (str)
3.3. exec (str)

List of Examples

1.1. Set default_interval parameter
1.2. Set timer parameter
1.3. Set exec parameter
1.4. Use exec parameter with a Kemi engine

Chapter 1. Admin Guide

1. Overview

The module executes route blocks on a timer base. It can create new timer processes and execute many route blocks on same timer.

A static faked SIP message is given as parameter to called functions, so all functions available for REQUEST_ROUTE can be used.

2. Dependencies

2.1. Kamailio Modules

The following modules must be loaded before this module:

  • No dependencies on other Kamailio modules.

2.2. External Libraries or Applications

The following libraries or applications must be installed before running Kamailio with this module loaded:

  • None.

3. Parameters

3.1. default_interval (int)

The definition of the default interval of timers (if not present on the "timer" parameter)

The parameter can be set multiple times to get different intervals in same configuration file.

Example 1.1. Set default_interval parameter

...
# default time interval set to 300 seconds
modparam("rtimer", "default_interval", 300)
...

3.2. timer (str)

The definition of a timer. The value of the parameter must have the following format:

  • "name=_string_;mode=_number_;interval=_number_"

The parameter can be set multiple times to get more timers in same configuration file.

  • name - name of the timer.

  • mode - if set to 0, the timer will use the main (shared) timer. Any number > 0 will create the specified amount of new timer processes (which will only be handling this timer).

  • interval - timer interval in seconds or micro-seconds (the value must be ended in 'u'). For micro-seconds intervals, mode is set always to 1.

Default value is NULL.

Example 1.2. Set timer parameter

...
# time interval set to 10 seconds
modparam("rtimer", "timer", "name=ta;interval=10;mode=1;")
# time interval set to 100 mili-seconds
modparam("rtimer", "timer", "name=ta;interval=100000u;mode=1;")
...

3.3. exec (str)

Specify route to be executed on timer. The value of the parameter must have the following format:

  • "timer=_string_;route=_number_"

The parameter can be set multiple times to get more routes executed on same timer.

  • timer - name of the timer.

  • route - the name of the route block to be executed, or the name of the function from kemi script. The kemi function receives a string parameter with the value being the name of the module.

Default value is NULL.

Example 1.3. Set exec parameter

...
modparam("rtimer", "timer", "name=ta;interval=10;mode=1;")
modparam("rtimer", "exec", "timer=ta;route=ONTIMER")

route[ONTIMER] {
    xlog("timer routine: time is $TF\n");
    # delete from my sql cache table entries older than 2H
    sql_query("delete from kamailio_cache where last_updated<$TS-3600");
}
...

Example 1.4. Use exec parameter with a Kemi engine

...
modparam("rtimer", "timer", "name=ta;interval=10;mode=1;")
modparam("rtimer", "exec", "timer=ta;route=ksr_rtimer")
...
-- rtimer event callback function implemented in Lua
function ksr_rtimer(evname)
	KSR.info("===== rtimer module triggered event\n");
	return 1;
end
...