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

Federico Cabiddu federico.cabiddu at gmail.com
Thu Nov 13 07:46:19 CET 2014


Ok I understand your point. I can remove the commands, no problem.

Regards,

Federico

On Wed, Nov 12, 2014 at 6:09 PM, Ovidiu Sas <osas at voipembedded.com> wrote:

> The plan is to remove all MI commands. The issue right now is that many
> ppl are using the MI and don't really want to migrate to RPC. If we add new
> MI commands, we are just adding more overhead.
> My suggestion would be to remove them, along with the mi lib dependency.
>
> Regards,
> Ovidiu Sas
> On Nov 12, 2014 11:49 AM, "Federico Cabiddu" <federico.cabiddu at gmail.com>
> wrote:
>
>> 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
>>
>>
>> _______________________________________________
>> 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/20141113/f8cc8417/attachment-0001.html>


More information about the sr-dev mailing list