There were discussions in the list about getting rid of the MI interface and sticking with the RPC one. We should stop adding new MI commands. I see that the RPC commands are already implemented.
Regards, Ovidiu Sas On Nov 12, 2014 5:59 AM, "Federico Cabiddu" federico.cabiddu@gmail.com wrote:
Module: sip-router Branch: master Commit: a255911902788bf74a7f4279fce4758b2f2a4613 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=a2559119...
Author: Federico Cabiddu federico.cabiddu@gmail.com Committer: Federico Cabiddu federico.cabiddu@gmail.com Date: Wed Nov 12 11:52:29 2014 +0100
modules/tsilo: added MI commands
modules/tsilo/Makefile | 5 +++- modules/tsilo/README | 51 +++++++++++++++++++++++++++++-------- modules/tsilo/doc/tsilo_admin.xml | 44 ++++++++++++++++++++++++++------ modules/tsilo/ts_hash.c | 2 +- modules/tsilo/ts_hash.h | 16 ++++++------ modules/tsilo/tsilo.c | 30 ++++++++++++++++----- 6 files changed, 112 insertions(+), 36 deletions(-)
diff --git a/modules/tsilo/Makefile b/modules/tsilo/Makefile index 40b04cb..c179aec 100644 --- a/modules/tsilo/Makefile +++ b/modules/tsilo/Makefile @@ -9,10 +9,13 @@ include ../../Makefile.defs auto_gen= NAME=tsilo.so LIBS= -DEFS+= -DSER_MOD_INTERFACE +DEFS+=-DKAMAILIO_MOD_INTERFACE
ifeq ($(INSTALL_FLAVOUR),kamailio) DEFS+= -DWITH_EVENT_LOCAL_REQUEST endif # INSTALL_FLAVOUR
+SERLIBPATH=../../lib +SER_LIBS+=$(SERLIBPATH)/kmi/kmi
include ../../Makefile.modules diff --git a/modules/tsilo/README b/modules/tsilo/README index 4790ad1..297c435 100644 --- a/modules/tsilo/README +++ b/modules/tsilo/README @@ -10,7 +10,7 @@ Federico Cabiddu
<federico.cabiddu@gmail.com>
- Copyright © 2014 Federico Cabiddu
Copyright © 2014 Federico Cabiddu __________________________________________________________________
Table of Contents
@@ -33,7 +33,10 @@ Federico Cabiddu 4.2. ts_append(domain, ruri) 4.3. ts_append_to(tindex, tlabel, domain)
5. Statistics
5. MI Commands
5.1. ts_dump
5.2. ts_lookup
List of Examples
@@ -62,19 +65,26 @@ Chapter 1. Admin Guide 4.2. ts_append(domain, ruri) 4.3. ts_append_to(tindex, tlabel, domain)
- Statistics
- MI Commands
5.1. ts_dump
5.2. ts_lookup
Overview
This modules provides transaction storage for the Kamailio SIP Server
- Platform. It stores in an internal table transactions for an user and
- add branches to them if new contacts are added.
- Platform. It stores in an internal table transactions for a Request-URI
- (R-URI) and add branches to them later if new contacts for the AOR are
- added.
- For each message, the modules stores "Request-URI" ("R-URI"), URI and
- the internal transaction index and label.
- When the ts_store function is called, the modules stores the current
- transaction R-URI URI, index and label. Two functions (ts_append and
- ts_append_to) provide the ability to add new branches either to a
- specific transaction or to all of the transactions stored for a given
- R-URI.
- When the transaction is destroyed (by the TM module, the transaction is
- removed from the module table.
- When a transaction is destroyed by the TM module, it is removed from
- the module's table too.
- Dependencies
@@ -105,7 +115,7 @@ Chapter 1. Admin Guide must be a power of two, otherwise it will be rounded down to the nearest power of two.
- Default value is "2048".
Default value is “2048”.
Example 1.1. Set hash_size parameter
... @@ -182,4 +192,23 @@ if (is_method("REGISTER")) { } ...
-5. Statistics +5. MI Commands
- 5.1. ts_dump
- 5.2. ts_lookup
+5.1. ts_dump
- Dumps the entire content of the TSILO table
- Parameters:
* brief - (optional, may not be present); if equals to string
“brief”, a brief dump will be done (only RURI, without the
transaction(s) details)
+5.2. ts_lookup
- Dumps the transactions stored for the given RURI
- Parameters:
* ruri - RURI for which we want to show the transactions.
diff --git a/modules/tsilo/doc/tsilo_admin.xml b/modules/tsilo/doc/tsilo_admin.xml index 4c35e69..36180d1 100644 --- a/modules/tsilo/doc/tsilo_admin.xml +++ b/modules/tsilo/doc/tsilo_admin.xml @@ -17,17 +17,15 @@ <title>Overview</title> <para> This modules provides transaction storage for the &kamailioname;. It
stores in an internal table transactions for an user and
add branches
to them if new contacts are added.
stores in an internal table transactions for a Request-URI
(R-URI) and add branches
to them later if new contacts for the AOR are added. </para> <para>
For each message, the modules stores
<quote>Request-URI</quote>
(<quote>R-URI</quote>), &uri; and the internal transaction
index
and label.
When the <emphasis>ts_store</emphasis> function is called,
the modules stores the current transaction R-URI &uri;, index and label. Two functions (<emphasis>ts_append</emphasis> and <emphasis>ts_append_to</emphasis>) provide the ability to add new branches either to a specific transaction or to all of the transactions stored for a given R-URI. </para> <para>
When the transaction is destroyed (by the
<emphasis>TM</emphasis> module,
the transaction is removed from the module table.
When a transaction is destroyed by the
<emphasis>TM</emphasis> module,
it is removed from the module's table too. </para> </section> <section>
@@ -201,6 +199,36 @@ if (is_method("REGISTER")) { </section>
<section>
<title>Statistics</title>
<title>MI Commands</title>
<section id="tsilo.mi.ts_dump">
<title>
<function moreinfo="none">ts_dump</function>
</title>
<para>
Dumps the entire content of the TSILO table
</para>
<para>Parameters: </para>
<itemizedlist>
<listitem><para>
<emphasis>brief</emphasis> -
(optional, may not be present); if
equals to string
<quote>brief</quote>, a brief dump will be
done (only RURI, without the
transaction(s) details)
</para></listitem>
</itemizedlist>
</section>
<section id="tsilo.mi.ts_lookup">
<title>
<function moreinfo="none">ts_lookup</function>
</title>
<para>
Dumps the transactions stored for the given RURI
</para>
<para>Parameters: </para>
<itemizedlist>
<listitem><para>
<emphasis>ruri</emphasis> - RURI
for which we want to show the transactions.
</para></listitem>
</itemizedlist>
</section> </section>
</chapter> diff --git a/modules/tsilo/ts_hash.c b/modules/tsilo/ts_hash.c index 089f425..6225db6 100644 --- a/modules/tsilo/ts_hash.c +++ b/modules/tsilo/ts_hash.c @@ -162,7 +162,7 @@ void unlock_entry(ts_entry_t *entry) {
void lock_entry_by_ruri(str* ruri) {
unsigned int sl;
unsigned int sl; sl = core_hash(ruri, 0, 0) & (t_table->size-1); ts_lock(t_table, &t_table->entries[sl]);
diff --git a/modules/tsilo/ts_hash.h b/modules/tsilo/ts_hash.h index b895c26..bc7adf1 100644 --- a/modules/tsilo/ts_hash.h +++ b/modules/tsilo/ts_hash.h @@ -26,8 +26,8 @@
- Module: \ref tsilo
*/
-#ifndef _DIALOG_TS_HASH_H_ -#define _DIALOG_TS_HASH_H_ +#ifndef _TS_HASH_H_ +#define _TS_HASH_H_
#include "../../locking.h" #include "../../lib/kmi/mi.h" @@ -64,10 +64,10 @@ typedef struct ts_urecord /*! entries in the main transaction table */ typedef struct ts_entry {
int n; /*!< Number of elements in the
collision slot */
int n; /*!< Number of elements in the
collision slot */ struct ts_urecord *first; /*!< urecord list */
struct ts_urecord *last; /*!< optimisation, end of the
urecord list */
unsigned int next_id; /*!< next id */
struct ts_urecord *last; /*!< optimisation, end of the
urecord list */
unsigned int next_id; /*!< next id */ unsigned int lock_idx; /*!< lock index */
} ts_entry_t;
@@ -75,13 +75,13 @@ typedef struct ts_entry /*! main transaction table */ typedef struct ts_table {
unsigned int size; /*!< size of the dialog table */
unsigned int size; /*!< size of the tsilo table */ struct ts_entry *entries; /*!< urecord hash table */ unsigned int locks_no; /*!< number of locks */
gen_lock_set_t *locks; /*!< lock table */
gen_lock_set_t *locks; /*!< lock table */
} ts_table_t;
-/*! global dialog table */ +/*! global transactions table */ extern ts_table_t *t_table;
/*! diff --git a/modules/tsilo/tsilo.c b/modules/tsilo/tsilo.c index 90eb292..9c404dd 100644 --- a/modules/tsilo/tsilo.c +++ b/modules/tsilo/tsilo.c @@ -32,11 +32,13 @@ #include "../../modules/tm/tm_load.h" #include "../../modules/registrar/api.h" #include "../../dset.h" +#include "../../lib/kmi/mi.h"
#include "ts_hash.h" #include "ts_handlers.h" #include "ts_append.h" #include "ts_store.h" +#include "ts_mi.h"
MODULE_VERSION
@@ -57,20 +59,24 @@ static int w_ts_append_to(struct sip_msg* msg, char *idx, char *lbl, char *d); static int fixup_ts_append_to(void** param, int param_no); static int w_ts_append(struct sip_msg* _msg, char *_table, char *_ruri); static int fixup_ts_append(void** param, int param_no);
static int w_ts_store(struct sip_msg* msg);
static cmd_export_t cmds[]={ {"ts_append_to", (cmd_function)w_ts_append_to, 3,
fixup_ts_append_to, REQUEST_ROUTE | FAILURE_ROUTE },
fixup_ts_append_to, 0, REQUEST_ROUTE | FAILURE_ROUTE }, {"ts_append", (cmd_function)w_ts_append, 2,
fixup_ts_append, REQUEST_ROUTE | FAILURE_ROUTE },
fixup_ts_append, 0, REQUEST_ROUTE | FAILURE_ROUTE }, {"ts_store", (cmd_function)w_ts_store, 0,
0 , REQUEST_ROUTE | FAILURE_ROUTE },
0 , 0, REQUEST_ROUTE | FAILURE_ROUTE }, {0,0,0,0,0}
};
+static mi_export_t mi_cmds[] = {
{ "ts_dump", mi_tsilo_dump, 0, 0, 0
},
{ "ts_lookup", mi_tsilo_lookup, 0, 0, 0
},
- { 0, 0, 0, 0, 0}
+};
static param_export_t params[]={ {"hash_size", INT_PARAM, &hash_size}, {0,0,0} @@ -80,13 +86,16 @@ static param_export_t params[]={ /** module exports */ struct module_exports exports= { "tsilo",
- DEFAULT_DLFLAGS, cmds,
0, /* RPC methods */ params,
0, /* exported statistics */
- mi_cmds, /* exported MI functions */
- 0,
- 0, mod_init, /* module initialization function */ 0, (destroy_function) destroy, /* destroy function */
0, 0
};
@@ -97,6 +106,13 @@ static int mod_init(void) { unsigned int n;
/* register the MI commands */
if(register_mi_mod(exports.name, mi_cmds)!=0)
- {
LM_ERR("failed to register MI commands\n");
return -1;
- }
/* load the TM API */ if (load_tm_api(&_tmb)!=0) { LM_ERR("can't load TM API\n");
sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev