mirror of https://github.com/sipwise/kamailio.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
207 lines
5.3 KiB
207 lines
5.3 KiB
ASYNC Module
|
|
|
|
Daniel-Constantin Mierla
|
|
|
|
<miconda@gmail.com>
|
|
|
|
Edited by
|
|
|
|
Daniel-Constantin Mierla
|
|
|
|
<miconda@gmail.com>
|
|
|
|
Copyright © 2011-2016 asipto.com
|
|
__________________________________________________________________
|
|
|
|
Table of Contents
|
|
|
|
1. Admin Guide
|
|
|
|
1. Overview
|
|
2. Dependencies
|
|
|
|
2.1. Kamailio Modules
|
|
2.2. External Libraries or Applications
|
|
|
|
3. Parameters
|
|
|
|
3.1. workers (int)
|
|
|
|
4. Functions
|
|
|
|
4.1. async_route(routename, seconds)
|
|
4.2. async_sleep(seconds)
|
|
4.3. async_task_route(routename)
|
|
|
|
List of Examples
|
|
|
|
1.1. Set workers parameter
|
|
1.2. async_route usage
|
|
1.3. async_sleep usage
|
|
1.4. async_workers usage
|
|
1.5. async_task_route usage
|
|
|
|
Chapter 1. Admin Guide
|
|
|
|
Table of Contents
|
|
|
|
1. Overview
|
|
2. Dependencies
|
|
|
|
2.1. Kamailio Modules
|
|
2.2. External Libraries or Applications
|
|
|
|
3. Parameters
|
|
|
|
3.1. workers (int)
|
|
|
|
4. Functions
|
|
|
|
4.1. async_route(routename, seconds)
|
|
4.2. async_sleep(seconds)
|
|
4.3. async_task_route(routename)
|
|
|
|
1. Overview
|
|
|
|
This module provides asynchronous operations for handling SIP requests
|
|
in the configuration file.
|
|
|
|
Async uses t_suspend() and t_continue() from the TM and TMX modules.
|
|
|
|
Note that after invoking the asynchronous operation, the processing
|
|
will continue later in another application process. Therefore variables
|
|
stored in private memory should not be used, try to use shared memory
|
|
if you want to get values after the processing is resumed (e.g.,
|
|
$avp(...), $xavp(...), $shv(...), htable $sht(...)).
|
|
|
|
2. Dependencies
|
|
|
|
2.1. Kamailio Modules
|
|
2.2. External Libraries or Applications
|
|
|
|
2.1. Kamailio Modules
|
|
|
|
The following modules must be loaded before this module:
|
|
* tm - transaction management.
|
|
* tmx - transaction management extensions.
|
|
|
|
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. workers (int)
|
|
|
|
3.1. workers (int)
|
|
|
|
Number of worker processes to be started to handle the asynchronous
|
|
tasks for async_route() and async_sleep().
|
|
|
|
Default value is 1.
|
|
|
|
Example 1.1. Set workers parameter
|
|
...
|
|
modparam("async", "workers", 2)
|
|
...
|
|
|
|
4. Functions
|
|
|
|
4.1. async_route(routename, seconds)
|
|
4.2. async_sleep(seconds)
|
|
4.3. async_task_route(routename)
|
|
|
|
4.1. async_route(routename, seconds)
|
|
|
|
Simulate a sleep of 'seconds' and then continue the processing of the
|
|
SIP request with the route[routename]. In case of internal errors, the
|
|
function returns false, otherwise the function exits the execution of
|
|
the script at that moment (return 0 behaviour).
|
|
|
|
The routename parameter can be a static string or a dynamic string
|
|
value with config variables.
|
|
|
|
The sleep parameter represent the number of seconds to suspend the
|
|
processing of a SIP request. Maximum value is 100. The parameter can be
|
|
a static integer or a variable holding an integer.
|
|
|
|
Since the SIP request handling is resumed in another process, the
|
|
config file execution state is practically lost. Therefore beware that
|
|
the execution of config after resume will end once the route[routename]
|
|
is finished.
|
|
|
|
This function can be used from REQUEST_ROUTE.
|
|
|
|
Example 1.2. async_route usage
|
|
...
|
|
async_route("RESUME", "4");
|
|
...
|
|
route[RESUME] {
|
|
send_reply("404", "Not found");
|
|
exit;
|
|
}
|
|
...
|
|
|
|
4.2. async_sleep(seconds)
|
|
|
|
Simulate a sleep of 'seconds' and then continue the processing of SIP
|
|
request with the next action. In case of internal errors, the function
|
|
returns false.
|
|
|
|
The sleep parameter represent the number of seconds to suspend the
|
|
processing of SIP request. Maximum value is 100. The parameter can be a
|
|
static integer or a variable holding an integer.
|
|
|
|
This function can be used from REQUEST_ROUTE.
|
|
|
|
Example 1.3. async_sleep usage
|
|
...
|
|
async_sleep("4");
|
|
send_reply("404", "Not found");
|
|
exit;
|
|
...
|
|
|
|
4.3. async_task_route(routename)
|
|
|
|
Continue the processing of the SIP request with the route[routename] in
|
|
one of the processes from core asynchronous framework. The core
|
|
parameter async_workers has to be set to enable asynchronous framework.
|
|
The task is executed as soon as a process from asynchronous framework
|
|
is idle, there is no wait time for the task like for async_route(...).
|
|
|
|
To enable the core asynchronous framework, you need to set the
|
|
async_workers core parameter in the configuration file. See the core
|
|
cookbook for more information.
|
|
|
|
Example 1.4. async_workers usage
|
|
...
|
|
; Enable 8 worker processes used by async and other modules
|
|
async_workers=8
|
|
...
|
|
|
|
In case of internal errors, the function returns false, otherwise the
|
|
function exits the execution of the script at that moment (return 0
|
|
behaviour).
|
|
|
|
The routename parameter can be a static string or a dynamic string
|
|
value with config variables.
|
|
|
|
Since the SIP request handling is resumed in another process, the
|
|
config file execution state is practically lost. Therefore beware that
|
|
the execution of config after resume will end once the route[routename]
|
|
is finished.
|
|
|
|
This function can be used from REQUEST_ROUTE.
|
|
|
|
Example 1.5. async_task_route usage
|
|
...
|
|
async_task_route("RESUME");
|
|
...
|
|
route[RESUME] {
|
|
t_relay();
|
|
exit;
|
|
}
|
|
...
|