--- EV/EV.xs 2008/01/31 20:10:28 1.105 +++ EV/EV.xs 2008/02/01 13:08:54 1.106 @@ -79,7 +79,8 @@ *stash_prepare, *stash_check, *stash_embed, - *stash_fork; + *stash_fork, + *stash_async; #ifndef SIG_SIZE /* kudos to Slaven Rezic for the idea */ @@ -377,6 +378,7 @@ stash_embed = gv_stashpv ("EV::Embed" , 1); stash_stat = gv_stashpv ("EV::Stat" , 1); stash_fork = gv_stashpv ("EV::Fork" , 1); + stash_async = gv_stashpv ("EV::Async" , 1); { SV *sv = perl_get_sv ("EV::API", TRUE); @@ -647,6 +649,16 @@ OUTPUT: RETVAL +ev_async *async (SV *cb) + ALIAS: + async_ns = 1 + CODE: + RETVAL = e_new (sizeof (ev_async), cb, default_loop_sv); + ev_async_set (RETVAL); + if (!ix) START (async, RETVAL); + OUTPUT: + RETVAL + void once (SV *fh, int events, SV *timeout, SV *cb) CODE: ev_once ( @@ -1137,6 +1149,21 @@ OUTPUT: RETVAL +MODULE = EV PACKAGE = EV::Async PREFIX = ev_async_ + +void ev_async_start (ev_async *w) + CODE: + START (async, w); + +void ev_async_stop (ev_async *w) + CODE: + STOP (async, w); + +void DESTROY (ev_async *w) + CODE: + STOP (async, w); + e_destroy (w); + MODULE = EV PACKAGE = EV::Loop PREFIX = ev_ SV *new (SV *klass, unsigned int flags = 0) @@ -1332,6 +1359,16 @@ OUTPUT: RETVAL +ev_async *async (struct ev_loop *loop, SV *cb) + ALIAS: + async_ns = 1 + CODE: + RETVAL = e_new (sizeof (ev_async), cb, ST (0)); + ev_async_set (RETVAL); + if (!ix) START (async, RETVAL); + OUTPUT: + RETVAL + void once (struct ev_loop *loop, SV *fh, int events, SV *timeout, SV *cb) CODE: ev_once (