[sr-dev] git:master: modules/tsilo: added MI commands

Federico Cabiddu federico.cabiddu at gmail.com
Wed Nov 12 17:49:13 CET 2014


Basically I added those commands for "completness" since I was adding the
corresponding RPC commands.
In the future if I  will need to add more I'll add only the RPC ones.
Thanks for the feedback.

Regards,

Federico

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 at 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=a255911902788bf74a7f4279fce4758b2f2a4613
>
> Author: Federico Cabiddu <federico.cabiddu at gmail.com>
> Committer: Federico Cabiddu <federico.cabiddu at 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 at 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)
>
> -   5. Statistics
> +   5. MI Commands
> +
> +        5.1. ts_dump
> +        5.2. ts_lookup
>
>  1. 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.
>
>  2. 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 at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
>
_______________________________________________
sr-dev mailing list
sr-dev at lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20141112/38f1ef2b/attachment-0001.html>


More information about the sr-dev mailing list