[asterisk-dev] Named lists: app submission

Donny Kavanagh donnyk at gmail.com
Tue Aug 14 18:32:34 CDT 2007


Ideally, this should be a function rather then an application.

Secondly, you should have your developer look at the ast_datastore
struct, as well as the ast_channel_datastore_* group of functions.
When you register a datastore you provide a hook such that when a
channel is destroyed asterisk will call your destroy function, thus
removing the possibility of any leaks.

The source code for func_odbc is a fantastic example of this.


On 8/14/07, John Todd <jtodd at loligo.com> wrote:
> My company has built app_list.c, which creates named arrays.  It's
> not the prettiest app in the world, but it does what we need it to
> do.  It's biggest fault right now is that it won't auto-destroy the
> lists when the channel exits, so anyone wanting to build a flag for
> that would be welcome to submit to me any patches.
> Since the bugtracker is now deemed "off-limits" for submitting
> feature requests, I suppose that leaves only the list as a location
> for discussion of such things, though I don't quite know where to
> submit the code for archival review, as I don't want to publish it on
> our corporate website.  I suppose I'll put it on my website, eh?  The
> credit for writing this app goes to Ritesh Bansal at TalkPlus, and he
> has signed the disclaimer as well.
> Anyway, it could probably suffer to be a function, but I don't know
> if the action features of the application would lend themselves to
> being split away from the setting/getting features.   And developing
> both a function and an app seems redundant.
> So, here's the description.  Let me know if anyone thinks this might
> be a useful addition, and I'll put it in bugs.digium.com.  Otherwise,
> it will live on my web server.
> http://www.loligo.com/asterisk/misc/apps/app_list.c
> static char *descrip = "This application gives the user a name based
> list capabilities in the dialplan.\n"
>   "This is useful in creating array-like list in the dialplan.\n"
>   "The following commands are available\n"
>   "    List(INIT|name|len|reinitialize|[var1|var2|...])\n"
>   "      name is the name of the list in this channel. You can have many \n"
>   "      lists with different names for the same channel.\n"
>   "      len is the length of the list.\n"
>   "      reinitialize has values of 0 and 1. If 1 then if the list exists\n"
>   "      then it will be reinitailized. If 0 and the list exists then it\n"
>   "             will return an error.\n"
>   "      You can additionally pass up to 99 variables to be put in the list.\n"
>   "    List(SET|name|index|[value])\n"
>   "      index is the element you want to set and value is the value.\n"
>   "      If value is not passed then the element value is set to NULL.\n"
>   "    List(GET|name|index|variable)\n"
>   "      index is the element you want to get and variable is the name of the\n"
>   "      dialplan variable in which the value will be stored\n"
>   "    List(LEN|name|variable)\n"
>   "      Returns the length of the list in the variable.\n"
>   "    List(SIZE|name|variable)\n"
>   "      Returns size integer in the variable. Size is the number of elements\n"
>   "      that are not null and have some value. These may not be contiguous\n"
>   "      elements.\n"
>   "    List(INSERT|name|index|value)\n"
>   "      Insert a element with the value at index position. This
> increases the\n"
>   "      length of the list by 1.\n"
>   "    List(REMOVE|name|index|variable)\n"
>   "      Remove a element at index position. This decreases the\n"
>   "      length of the list by 1. The value removed is returned in variable.\n"
>   "    List(DESTROY|name)\n"
>   "      This frees up the memory and the list. This must be called before\n"
>   "      exit of the dialplan for a call or the system will have a
> memory leak.\n"
>   "    List(DUMP|name)\n"
>   "      Dumps the list info using a LOG_NOTICE mechanism.\n"
>   "\n";
> JT
> _______________________________________________
> --Bandwidth and Colocation Provided by http://www.api-digital.com--
> asterisk-dev mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-dev

More information about the asterisk-dev mailing list