[prev in list] [next in list] [prev in thread] [next in thread] 

List:       asterisk-dev
Subject:    Re: [asterisk-dev] [Code Review] data api gsoc2009
From:       "Russell Bryant" <russell () digium ! com>
Date:       2009-06-29 22:42:06
Message-ID: 20090629224206.2484.50948 () hotblack ! digium ! internal
[Download RAW message or body]


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



/trunk/include/asterisk/data.h
<http://reviewboard.digium.com/r/275/#comment2173>

    I would have expected the put() callback to receive some kind of argument that \
specifies what field is being set.  Is the design of this part of it still in \
progress?



/trunk/include/asterisk/data.h
<http://reviewboard.digium.com/r/275/#comment2174>

    I think both of these structures should have version fields to be able to detect \
ABI changes in the core.  
    For an example of what I mean, see the security event code that I have up on \
reviewboard right now.  I use version fields for all of the structures defined as \
part of the API in security_event_defs.h.



/trunk/include/asterisk/data.h
<http://reviewboard.digium.com/r/275/#comment2172>

    What is the value of a string registrar argument?  Is it for debugging purposes?
    
    I think it would be a good idea to have an optional ast_module argument, though.  \
That way, you can automatically handle updating the module reference count when you \
call a callback in a module.



/trunk/include/asterisk/data.h
<http://reviewboard.digium.com/r/275/#comment2175>

    I think this function could use some additional documentation to describe when \
you would want to use this over the normal ast_data_get() API call.  Is it just for \
debugging?



/trunk/include/asterisk/xml.h
<http://reviewboard.digium.com/r/275/#comment2176>

    A picky comment, but can you make the formatting of each block consistent?
    
    I would prefer \brief on the 2nd line, and each item only 1 space from the '*'.



/trunk/main/data.c
<http://reviewboard.digium.com/r/275/#comment2177>

    Would it make sense to declare these as int32_t and uint32_t to be more explicit \
about the data type?



/trunk/main/data.c
<http://reviewboard.digium.com/r/275/#comment2178>

    Will node order ever be important?  If so, the current astobj2 may not fit the \
bill, since you have no control over ordering amongst the items in the container.



/trunk/main/data.c
<http://reviewboard.digium.com/r/275/#comment2180>

    I would add a note that this gets initialized in ast_data_init(), or someone may \
come around and replace this with AST_RWLOCK_DEFINE_STATIC().  
    I actually prefer not using constructor based initialization for globals, though, \
so I think this way is better.



/trunk/main/data.c
<http://reviewboard.digium.com/r/275/#comment2181>

    There is a small bug here.
    
    If you want to make the comparison not case sensitive, then you should use \
ast_str_case_hash() as the hash function.  Otherwise, you can run into problems.



/trunk/main/data.c
<http://reviewboard.digium.com/r/275/#comment2182>

    In general, inline functions are better for the sake of type safety.  However, by \
writing it this way, the lock debugging code will always report that the locking \
comes from these functions, instead of where it was _really_ being locked/unlocked.  \
So, I would just use #defines.



/trunk/main/data.c
<http://reviewboard.digium.com/r/275/#comment2183>

    use ast_strlen_zero() here instead.



/trunk/main/data.c
<http://reviewboard.digium.com/r/275/#comment2184>

    Use ast_debug()



/trunk/main/data.c
<http://reviewboard.digium.com/r/275/#comment2185>

    Use ast_strdupa()



/trunk/main/data.c
<http://reviewboard.digium.com/r/275/#comment2186>

    There is no benefit from checking the result of strdupa().  Just assume it was \
successful.



/trunk/main/data.c
<http://reviewboard.digium.com/r/275/#comment2187>

    There is a memory leak here.  You have to unref the container itself.
    
    Also, once you unref the container, the rest of this code is not necessary.  When \
the container gets destroyed, it will automatically unlink all elements that were \
still in the container.



/trunk/main/data.c
<http://reviewboard.digium.com/r/275/#comment2188>

    I wouldn't put a default case here.  It will force you to reconsider this block \
of code every time you add an entry to the enum if you don't, which is a good thing.



/trunk/main/data.c
<http://reviewboard.digium.com/r/275/#comment2189>

    no need for this check



/trunk/main/data.c
<http://reviewboard.digium.com/r/275/#comment2191>

    I think it would be handy to make the test code a CLI command.  In fact, I think \
it would be a great idea to build up some test code in a test module for the tests \
directory, instead of here.


- Russell


On 2009-06-26 19:19:30, Eliel SardaƱons wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviewboard.digium.com/r/275/
> -----------------------------------------------------------
> 
> (Updated 2009-06-26 19:19:30)
> 
> 
> Review request for Asterisk Developers, Russell Bryant and Tilghman Lesher.
> 
> 
> Summary
> -------
> 
> This is the first review request for the Data API GSoC 2009 project.
> An architectural review is requested.
> 
> 
> Diffs
> -----
> 
> /trunk/include/asterisk/_private.h 203905 
> /trunk/include/asterisk/data.h PRE-CREATION 
> /trunk/include/asterisk/xml.h 203905 
> /trunk/main/asterisk.c 203905 
> /trunk/main/data.c PRE-CREATION 
> /trunk/main/xml.c 203905 
> 
> Diff: http://reviewboard.digium.com/r/275/diff
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Eliel
> 
> 


_______________________________________________
--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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic