[asterisk-dev] [Code Review] This patch implements CEL in trunk.

Russell Bryant russell at digium.com
Fri Dec 19 16:11:01 CST 2008


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.digium.com/r/105/#review271
-----------------------------------------------------------


In general, I am very concerned with how the CEL modules have been done.  There is mass code duplication between them and the existing CDR modules.  I'm wondering if a better approach would be to just add the CEL handlers into the existing CDR modules to avoid duplicating the common code for configuration handling and so forth.


/trunk/apps/app_celgenuserevent.c
<http://reviewboard.digium.com/r/105/#comment565>

    These headers do not appear to be accurate.



/trunk/apps/app_celgenuserevent.c
<http://reviewboard.digium.com/r/105/#comment566>

    Please convert to xmldocs



/trunk/apps/app_celgenuserevent.c
<http://reviewboard.digium.com/r/105/#comment567>

    Isn't this done automatically?



/trunk/apps/app_celgenuserevent.c
<http://reviewboard.digium.com/r/105/#comment568>

    Fix the return value to use AST_MODULE_LOAD_SUCCESS and friends



/trunk/apps/app_queue.c
<http://reviewboard.digium.com/r/105/#comment569>

    This should actually be DEVICE_STATE, not DEVICE_STATE_CHANGE



/trunk/cdr/cdr_radius.c
<http://reviewboard.digium.com/r/105/#comment570>

    ?



/trunk/cdr/cdr_sqlite.c
<http://reviewboard.digium.com/r/105/#comment571>

    Unrelated change?



/trunk/cel/cel_csv.c
<http://reviewboard.digium.com/r/105/#comment572>

    I'm not sure there is any benefit in having cel_csv since there is also cel_custom.
    
    The only reason we have cdr_csv and cdr_custom is for historical and backwards compatibility reasons.



/trunk/cel/cel_custom.c
<http://reviewboard.digium.com/r/105/#comment573>

    coding guidelines.



/trunk/cel/cel_custom.c
<http://reviewboard.digium.com/r/105/#comment574>

    Having to allocate a channel every time we log an event is quite expensive.  Perhaps we should use a thread local dummy channel for this purpose, to optimize things a bit.



/trunk/cel/cel_custom.c
<http://reviewboard.digium.com/r/105/#comment575>

    use NULL, not 0



/trunk/cel/cel_custom.c
<http://reviewboard.digium.com/r/105/#comment576>

    Reduce indentation:
    
    if (load_config()) {
       return DECLINE;
    }
    
    .. stuff ..



/trunk/cel/cel_manager.c
<http://reviewboard.digium.com/r/105/#comment577>

    coding guidelines



/trunk/cel/cel_manager.c
<http://reviewboard.digium.com/r/105/#comment578>

    spaces after casts (coding guidelines)



/trunk/cel/cel_manager.c
<http://reviewboard.digium.com/r/105/#comment579>

    NULL, not 0



/trunk/cel/cel_odbc.c
<http://reviewboard.digium.com/r/105/#comment581>

    This module needs to be re-worked.  It should be using res_odbc, not using ODBC directly.



/trunk/cel/cel_odbc.c
<http://reviewboard.digium.com/r/105/#comment580>

    explicit initialization not necessary



/trunk/cel/cel_pgsql.c
<http://reviewboard.digium.com/r/105/#comment582>

    ast_debug()



/trunk/cel/cel_pgsql.c
<http://reviewboard.digium.com/r/105/#comment583>

    ast_free() instead of free()


- Russell


On 2008-12-19 11:28:20, Steve Murphy wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviewboard.digium.com/r/105/
> -----------------------------------------------------------
> 
> (Updated 2008-12-19 11:28:20)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Summary
> -------
> 
> CEL stands for Channel Event Logging.
> 
> (It's big, so brace yourself!)
> 
> It's like the Manager interface, but a little
> more specialized to report events that would
> be used to form CDRs or call activity logs.
> It logs to a set of backends much like CDR's
> do. Higher performance event loggers can be
> written on the CEL base, that would provide
> better thruput for generating higher-level
> event-based logging, like CDR's.
> 
> It's based in turn on Russell's event facility,
> and expands on its base, and shares in its
> advantages. For instance, the 
> ast_event_subscribe() func has been modified
> to accept a "name" argument for the subscription,
> for CLI viewing.
> 
> It also introduces a new channel field, the
> 'linkedid' field, that has 'viral' properties;
> when two channels interact, the oldest linkedid
> value of the two will override the younger. The 
> linkedID field starts being set to the uniqueID 
> field. All the channel drivers 'new' routines will
> also now accept a linkedid argument, in the
> which, if provided, will override the linkedid
> field. This would happen, for instance, in the
> Dial() app, when a peer channel is created 
> for the purpose of a call. From it's creation,
> that peer channel will have the same linkedid
> as the calling channel.
> 
> The linkedid field will be generated (by default)
> on all CEL logged events, and can be used to tie
> multi-legged calls and perhaps even call trees
> formed by 3-ways and transfers.
> 
> Brian Degenhardt of SwitchVox formed a snazzy
> real-time call logging facility using the CEL
> text logging backends.
> 
> Analogs to the CDR backends were formed for
> CEL event logging. It's been a while since they
> were originally formed, and they may profit 
> from an overhaul to re-derive them from the 
> CDR backends. The TDS backend has been
> recently re-derived, as the old version no
> longer compiles against the newer TDS libs.
> The odbc_adaptive interface has not been
> adapted for CEL, but this is always an option
> for the future.
> 
> hangupsource is also now being recorded into
> a channel field by that name.
> 
> A long and perhaps tedious design doc about
> CEL is in doc/cel-doc.tex
> 
> I added 'peeraccount', and 'linkedid' to the
> existing CDR code; these may be useful to
> folks who want to continue arranging deck chairs
> on the CDR Titanic.
> 
> Peeraccount: when two channels are bridged,
> they each update their peeraccount field with
> the accountcode of their partner in their
> respective 'peeraccount' channel fields.
> The CDR field is updated, and a new manager
> event is generated. The peeraccount info
> is reported in CEL events.
> 
> 
> Although reviewers may have issues of their own,
> my major questions are these:
> 
> 1. Should I just eliminate the cel-csv interface,
> and let everyone use the cel-custom interface if
> they want text logging?
> 
> 2. Should I bring in the odbc-adaptive stuff?
> 
> 3. Should I re-derive all the backends from
> the cdr backends as they exist today?
> 
> 4. Are the current tracked events sufficient
> for CDR generation which I'm specifying
> now in team/murf/RFCs?
> 
> 
> Diffs
> -----
> 
>   /trunk/Makefile 165819 
>   /trunk/apps/app_celgenuserevent.c PRE-CREATION 
>   /trunk/apps/app_chanisavail.c 165819 
>   /trunk/apps/app_dial.c 165819 
>   /trunk/apps/app_directed_pickup.c 165819 
>   /trunk/apps/app_followme.c 165819 
>   /trunk/apps/app_meetme.c 165819 
>   /trunk/apps/app_minivm.c 165819 
>   /trunk/apps/app_parkandannounce.c 165819 
>   /trunk/apps/app_queue.c 165819 
>   /trunk/apps/app_voicemail.c 165819 
>   /trunk/cdr/cdr_radius.c 165819 
>   /trunk/cdr/cdr_sqlite.c 165819 
>   /trunk/cel/Makefile PRE-CREATION 
>   /trunk/cel/cel_csv.c PRE-CREATION 
>   /trunk/cel/cel_custom.c PRE-CREATION 
>   /trunk/cel/cel_manager.c PRE-CREATION 
>   /trunk/cel/cel_odbc.c PRE-CREATION 
>   /trunk/cel/cel_pgsql.c PRE-CREATION 
>   /trunk/cel/cel_radius.c PRE-CREATION 
>   /trunk/cel/cel_sqlite.c PRE-CREATION 
>   /trunk/cel/cel_sqlite3_custom.c PRE-CREATION 
>   /trunk/cel/cel_tds.c PRE-CREATION 
>   /trunk/channels/chan_agent.c 165819 
>   /trunk/channels/chan_alsa.c 165819 
>   /trunk/channels/chan_console.c 165819 
>   /trunk/channels/chan_dahdi.c 165819 
>   /trunk/channels/chan_features.c 165819 
>   /trunk/channels/chan_gtalk.c 165819 
>   /trunk/channels/chan_h323.c 165819 
>   /trunk/channels/chan_iax2.c 165819 
>   /trunk/channels/chan_jingle.c 165819 
>   /trunk/channels/chan_local.c 165819 
>   /trunk/channels/chan_mgcp.c 165819 
>   /trunk/channels/chan_misdn.c 165819 
>   /trunk/channels/chan_nbs.c 165819 
>   /trunk/channels/chan_oss.c 165819 
>   /trunk/channels/chan_phone.c 165819 
>   /trunk/channels/chan_sip.c 165819 
>   /trunk/channels/chan_skinny.c 165819 
>   /trunk/channels/chan_unistim.c 165819 
>   /trunk/channels/chan_usbradio.c 165819 
>   /trunk/channels/chan_vpb.cc 165819 
>   /trunk/configs/cel.conf.sample PRE-CREATION 
>   /trunk/configs/cel_custom.conf.sample PRE-CREATION 
>   /trunk/configs/cel_manager.conf.sample PRE-CREATION 
>   /trunk/configs/cel_odbc.conf.sample PRE-CREATION 
>   /trunk/configs/cel_pgsql.conf.sample PRE-CREATION 
>   /trunk/configs/cel_sqlite3_custom.conf.sample PRE-CREATION 
>   /trunk/configs/cel_tds.conf.sample PRE-CREATION 
>   /trunk/doc/cel-doc.tex PRE-CREATION 
>   /trunk/doc/celdriver.tex PRE-CREATION 
>   /trunk/funcs/func_cdr.c 165819 
>   /trunk/funcs/func_channel.c 165819 
>   /trunk/funcs/func_odbc.c 165819 
>   /trunk/include/asterisk/cdr.h 165819 
>   /trunk/include/asterisk/cel.h PRE-CREATION 
>   /trunk/include/asterisk/channel.h 165819 
>   /trunk/include/asterisk/event.h 165819 
>   /trunk/include/asterisk/event_defs.h 165819 
>   /trunk/include/asterisk/utils.h 165819 
>   /trunk/main/Makefile 165819 
>   /trunk/main/ast_expr2.h 165819 
>   /trunk/main/ast_expr2.c 165819 
>   /trunk/main/asterisk.c 165819 
>   /trunk/main/cdr.c 165819 
>   /trunk/main/cel.c PRE-CREATION 
>   /trunk/main/channel.c 165819 
>   /trunk/main/cli.c 165819 
>   /trunk/main/devicestate.c 165819 
>   /trunk/main/dial.c 165819 
>   /trunk/main/event.c 165819 
>   /trunk/main/features.c 165819 
>   /trunk/main/logger.c 165819 
>   /trunk/main/manager.c 165819 
>   /trunk/main/pbx.c 165819 
>   /trunk/main/taskprocessor.c 165819 
>   /trunk/res/res_agi.c 165819 
> 
> Diff: http://reviewboard.digium.com/r/105/diff
> 
> 
> Testing
> -------
> 
> bmd has built a reporting system using it; I have run
> several simple tests to ensure updating with merges
> hasn't broken it, and made appropriate fixes.
> 
> 
> Thanks,
> 
> Steve
> 
>




More information about the asterisk-dev mailing list