123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- ASYNC Module
- Daniel-Constantin Mierla
- <[email protected]>
- Edited by
- Daniel-Constantin Mierla
- <[email protected]>
- Copyright © 2011 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_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.
- 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(...).
- 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.4. async_task_route usage
- ...
- async_task_route("RESUME");
- ...
- route[RESUME] {
- t_relay();
- exit;
- }
- ...
|