announcing libeio development
Marc Lehmann
schmorp at schmorp.de
Sat May 10 19:32:54 CEST 2008
said and done, I couldn't reist to try to "out-bundle" the aio code
from IO::AIO.
here is what I came up so far, it does work when embedded into IO::AIO, so
the code is mostly sane.
http://cvs.schmorp.de/libeio/
whats missing is, obviously, documentation, Makefile and general quality
work.
the current api design is similar to what I announced, but it doesn't
support a result pipe (instead, it is completely independent of any event
loop or signalling mechanism. it would be trivial to add a result pipe to
it).
http://cvs.schmorp.de/libeio/eio.h
If there is demand, I can refine it further and add some documentation,
maybe even make releases. For this, howver, I would require somebody who
regularly made tests and would use the library (as I currently have no use
for it outside IO::AIO, which makes it hard to test it outside perl).
Comments about API design and requirements would be welcome as well (also
questions - not everything is self-evident).
Integration into libev would probbaly done like this (I am thinking about
changing ev_async, btw., from edge-triggering to level-triggering, similar
to io-events) (pseudo-code):
ev_async aio;
static want_poll (void)
{
ev_async_send (EV_DEFAULT_UC_ &aio);
}
static do_poll (ev_async *w, int)
{
if (eio_poll () < 0)
// not all requests handled, need to call again
ev_async_send (EV_DEFAULT_UC_ w);
}
ev_async_init (&aio, do_poll);
ev_async_start (EV_DEFAULT_ &aio);
eio_init (want_poll, 0);
eio_write (...
ev_loop (0);
--
The choice of a Deliantra, the free code+content MORPG
-----==- _GNU_ http://www.deliantra.net
----==-- _ generation
---==---(_)__ __ ____ __ Marc Lehmann
--==---/ / _ \/ // /\ \/ / pcg at goof.com
-=====/_/_//_/\_,_/ /_/\_\
More information about the libev
mailing list