# &adminguide;

## 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.

## Dependencies

### &kamailio; Modules

The following modules must be loaded before this module:

- No dependencies on other &kamailio; modules.

### External Libraries or Applications

The following libraries or applications must be installed before running &kamailio; with this module loaded:

- None.

## Parameters

### `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.

#### Set `default_interval` parameter

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

### `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.

#### Set `timer` parameter

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

### `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.

#### 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");
    }
    ...

#### 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
    ...