[asterisk-dev] [asterisk-commits] rizzo: trunk r89379 - /trunk/include/asterisk/network.h

Simon Perreault simon.perreault at viagenie.ca
Sun Nov 18 12:57:29 CST 2007


On Saturday 17 November 2007 09:34:38 Luigi Rizzo wrote:
> in my view network.h is just to hide system differences
> (and provide trivial functions such as the one above),
> while netwock provides additional services
> for sockets (container, tls, etc.)

Yes, so why did you add inaddrcmp() to network.h? It doesn't exist on any 
platform, it's specific to Asterisk. So it goes into netsock.h, not 
network.h.

> you keep saying that, and i don't understand why.

Sorry, I kept repeating because I thought my voice did not carry to you.

> The reason for aggregating is
> avoid repreating the #ifdef THIS #ifdef THAT all over the place.

I feel that's not a good enough reason. The better solution is to put the 
#ifdef magic in

asterisk/compat/socket.h
asterisk/compat/stdint.h
asterisk/compat/...

, prepend asterisk/compat to the include path, and in the .c's use

#include <socket.h>
#include <stdint.h>

> In terms of compile times, i already posted them and as you see
> there is no measurable difference between the two versions.

The real problem is not with compile times. It's with good software 
engineering practices. By aggregating headers needlessly (there's no need to 
aggregate if you use the solution proposed above), you create a place where 
other people will add headers that are not supposed to be there. You know 
that the purpose of network.h is for system compat stuff, but other people in 
the future will now know this and quickly will begin adding macros, short 
inlines (you even did it with inaddrcmp()), and system headers vaguely 
related to network stuff. network.h will grow, and eventually two problem 
will appear:

1. It would be hard to tell which headers a .c that would include that big 
network.h really needs. As Russell wisely said, "there is some value in 
knowing which special headers are needed in a file".

2. Compile times. 'nuff said.

You don't *need* to aggregate. So don't.

Anyway, don't listen to me, I'm just coaching from the stands. ;)



More information about the asterisk-dev mailing list