Alekzander Spiridonov 71be465777 jsonrpc-c: replace STR_PARAM with PARAM_STRING 11 ani în urmă
..
doc 2d129b5538 correct url to libjson in json and jsonrpc-c module docs 12 ani în urmă
.gitignore 044a6b9187 Added jsonrpc-c module, providing a client interface to json-rpc services 14 ani în urmă
Makefile c290e58b7f json|jsonrpc-c: fix detection of json-c lib 11 ani în urmă
README 2d129b5538 correct url to libjson in json and jsonrpc-c module docs 12 ani în urmă
TODO 044a6b9187 Added jsonrpc-c module, providing a client interface to json-rpc services 14 ani în urmă
jsonrpc.c 9e1ff4488a all: updated FSF address in GPL text 11 ani în urmă
jsonrpc.h 9e1ff4488a all: updated FSF address in GPL text 11 ani în urmă
jsonrpc_io.c 9e1ff4488a all: updated FSF address in GPL text 11 ani în urmă
jsonrpc_io.h 9e1ff4488a all: updated FSF address in GPL text 11 ani în urmă
jsonrpc_mod.c 71be465777 jsonrpc-c: replace STR_PARAM with PARAM_STRING 11 ani în urmă
jsonrpc_request.c 9e1ff4488a all: updated FSF address in GPL text 11 ani în urmă
jsonrpc_request.h 9e1ff4488a all: updated FSF address in GPL text 11 ani în urmă
netstring.c 9e1ff4488a all: updated FSF address in GPL text 11 ani în urmă
netstring.h 9e1ff4488a all: updated FSF address in GPL text 11 ani în urmă

README

jsonrpc-c (client) Module

Matthew Williams



Edited by

Jordan Levy



Copyright © 2011 Flowroute LLC (flowroute.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. servers (string)

4. Functions

4.1. jsonrpc_notification(method, parameters)
4.2. jsonrpc_request(method, parameters, return_route,
error_route, result_var)

List of Examples

1.1. Set servers parameter
1.2. jsonrpc_notification usage
1.3. jsonrpc_request 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. servers (string)

4. Functions

4.1. jsonrpc_notification(method, parameters)
4.2. jsonrpc_request(method, parameters, return_route,
error_route, result_var)

1. Overview

This module provides access to json-rpc services (operating over
TCP/Netstrings).

This module uses t_suspend() and t_continue() from the TM module.

Note that after invoking an asyncronous operation, the processing will
continue later, in another application process. Therefore, do not rely
on variables stored in private memory, use shared memory if you want to
get values after the processing is resumend (e.g., $shv(...) or 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.

2.2. External Libraries or Applications

The following libraries or applications must be installed before
running Kamailio with this module loaded:
* libjson (https://github.com/json-c/json-c/wiki)
* libevent - http://libevent.org/

3. Parameters

3.1. servers (string)

3.1. servers (string)

The servers providing the remote jsonrpc service. Format is
"host1:port1,priority1 host2:port2,priority2". Requests to servers of
the same priority will be distributed evenly (round robin). Server
groups with higher priority are used first.

Example 1.1. Set servers parameter
...
modparam("jsonrpc", "servers", "localhost:9999,2 10.10.0.1:9999,2 backup.server:
9999,1")
...

4. Functions

4.1. jsonrpc_notification(method, parameters)
4.2. jsonrpc_request(method, parameters, return_route, error_route,
result_var)

4.1. jsonrpc_notification(method, parameters)

Invokes the remote 'method' with the given 'parameters' as a
notification. Unlike jsonrpc_request (below), notifications do not
receive a response. Script processing continues in the usual fashion as
soon as the notification has been sent.

The method and parameters can be a static string or dynamic string
value with config variables.

Example 1.2. jsonrpc_notification usage
...
jsonrpc_notification("update_user", "{'id': 1234, 'name': 'Petros'}")
...

4.2. jsonrpc_request(method, parameters, return_route, error_route,
result_var)

Invokes the remote 'method' with the given 'parameters'. When the
response is received, continues processing of the SIP request with the
route[return_route]. If a timeout occurs, no servers can be reached, or
a jsonrpc error message is received, continues process at
route[error_route]. In this case, the result_var will contain one of
"timeout", "failure", or the error message received back from the
jsonrpc server.

The method, parameters, return_route, and error_route 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 is lost. As mentioned above, only shared
variables ($shv, etc) should be used for any value that will be needed
when the script is resumed.

The result is stored in the pseudo-variable 'result_var'. Since this
variable is set after the response is received, it is possible to use a
$var for this parameter.

Example 1.3. jsonrpc_request usage
...
jsonrpc_request("get_user", "{'id': 1234}", "RESPONSE", "ERROR", "$var(result)")
;
...
route[RESPONSE] {
xlog("Result received: $var(result)");
...
}
...
route[ERROR] {
xlog("Error received: $var(result)");
...
}
...