On Mon, Nov 05, 2007 at 02:13:20PM -0800, Scott Lamb <[EMAIL PROTECTED]> wrote:
> >Its higher than necessary, and more complex than neccessary.
> Higher than necessary? I don't care; it's worth it.
> More complex than necessary? Not really.

Well, I gave an example that is less complex and more efficient, the best of
all worlds. And fully binary-compatible.

> >responsible.
> Erm, no. In the ENOMEM case, I know which fd you decided to kill, though
> not actually that you've killed it. ENOMEM is not a per-file descriptor
> problem.

The word "kill" is misleading, the fd is still there, alive and
kicking. But the event handler has been stopped.

> I'm looking at the Linux kernel source code now (core_sys_select), and 
> you are wrong on Linux as well:

Maybe differeing linux versions? I definitely get ENOMEM with gigabytes of
free memory whne exceeding the configured limit.

Of course, linux might *also* return ENOMEM for transient conditions.

> might be useful, but it's nothing the caller can't do on its own by 
> retrying the failed function.

The problem is that *all* callers will need to do this, and this is not
something I will ever require of all callers.

As a callback will solve your problem (the special case) and will make it
much easier for the general case, it definitely seems the better solution,
leading to better programs in general.

> which allowed attributes specified at eventloop creation time 
> (extensible without further API changes). One of them might have been
>     libname_eventloop_attr_setenomem(libname_eventloop_attr_t *, void 
> (*enomem_callback)(/*undecided*/), void *enomem_callback_arg);

Thats interesting, but I guess i will go for a simpler set-callback

The question still remains under what conditions exactly to call it - *alloc
is obvious, but should there be a separate handler

> >>* any X11 application is screwed if you close its connection to the server
> >
> >Uhm, no? :)
> Uhm, yes.

Repeating untruths doesn't make them any truer. You confuse the default
action of terminating your program with "being screwed", but that is
simply not true (even if libX11 makes this hard, other X libs such as the
more modern XCB don't).

Most X11 apps just exit, but thats not a law.

> Not necessarily. Servers do occasionally reload their listen sockets 
> (SIGHUP handlers); they just don't have logic to do so on demand from a 
> crazy library.

They still have to handle accept errors, though.

> >(There are userspace nfs daemons, but even if they use libevent, they are
> >far more broken and fragile than the standard nfs daemons in linux).
> Please don't assume I'm a moron. 

I don't, but you keep making untrue statements that I correct. If you think I
assume you are a moron by correcting you, you could just stop making false
generic statements such as above and we will not run into any problems :)

However, let me repeat that I do not assume you are a moron, and it probably
isn't too nice to assime I did. Its certainly not healthy for our otherwise
very productive discussion that I would hate to lose :(

> would not have said this if I hadn't actually seen libevent-based NFS
> code that ships on real systems.

> Specifically, I'm talking about the version of rpc.idmapd running by 
> default on RHEL 5.0.

which actually is not a nfs daemon (just like portmap is not an nfs
daemon, its a specific service that cna optionally be used by the nfs

                The choice of a       Deliantra, the free code+content MORPG
      -----==-     _GNU_              http://www.deliantra.net
      ----==-- _       generation
      ---==---(_)__  __ ____  __      Marc Lehmann
      --==---/ / _ \/ // /\ \/ /      [EMAIL PROTECTED]
      -=====/_/_//_/\_,_/ /_/\_\
Libevent-users mailing list

Reply via email to