EV

 view release on metacpan or  search on metacpan

EV.xs  view on Meta::CPAN

        signal_ns = 1
	CODE:
{
	Signal signum = s_signum (signal);
        CHECK_SIG (signal, signum);

        RETVAL = e_new (sizeof (ev_signal), cb, default_loop_sv);
        ev_signal_set (RETVAL, signum);
        if (!ix) START_SIGNAL (RETVAL);
}
	OUTPUT:
        RETVAL

ev_idle *idle (SV *cb)
	ALIAS:
        idle_ns = 1
	CODE:
        RETVAL = e_new (sizeof (ev_idle), cb, default_loop_sv);
        ev_idle_set (RETVAL);
        if (!ix) START (idle, RETVAL);
	OUTPUT:
        RETVAL

ev_prepare *prepare (SV *cb)
	ALIAS:
        prepare_ns = 1
	CODE:
        RETVAL = e_new (sizeof (ev_prepare), cb, default_loop_sv);
        ev_prepare_set (RETVAL);
        if (!ix) START (prepare, RETVAL);
	OUTPUT:
        RETVAL

ev_check *check (SV *cb)
	ALIAS:
        check_ns = 1
	CODE:
        RETVAL = e_new (sizeof (ev_check), cb, default_loop_sv);
        ev_check_set (RETVAL);
        if (!ix) START (check, RETVAL);
	OUTPUT:
        RETVAL

ev_fork *fork (SV *cb)
	ALIAS:
        fork_ns = 1
	CODE:
        RETVAL = e_new (sizeof (ev_fork), cb, default_loop_sv);
        ev_fork_set (RETVAL);
        if (!ix) START (fork, RETVAL);
	OUTPUT:
        RETVAL

#if CLEANUP_ENABLED

ev_cleanup *cleanup (SV *cb)
	ALIAS:
        cleanup_ns = 1
	CODE:
        RETVAL = e_new (sizeof (ev_cleanup), cb, default_loop_sv);
        SvREFCNT_dec (RETVAL->loop); /* must not keep loop object alive */
        ev_cleanup_set (RETVAL);
        if (!ix) START (cleanup, RETVAL);
	OUTPUT:
        RETVAL

#endif

ev_child *child (int pid, int trace, SV *cb)
	ALIAS:
        child_ns = 1
	CODE:
#if EV_CHILD_ENABLE
        RETVAL = e_new (sizeof (ev_child), cb, default_loop_sv);
        ev_child_set (RETVAL, pid, trace);
        if (!ix) START (child, RETVAL);
#else
        croak ("EV::child watchers not supported on this platform");
#endif
	OUTPUT:
        RETVAL


ev_stat *stat (SV *path, NV interval, SV *cb)
	ALIAS:
        stat_ns = 1
	CODE:
        RETVAL = e_new (sizeof (ev_stat), cb, default_loop_sv);
        e_fh (RETVAL) = newSVsv (path);
        ev_stat_set (RETVAL, SvPVbyte_nolen (e_fh (RETVAL)), interval);
        if (!ix) START (stat, RETVAL);
	OUTPUT:
        RETVAL

#ifndef EV_NO_LOOPS

ev_embed *embed (struct ev_loop *loop, SV *cb = 0)
	ALIAS:
        embed_ns = 1
	CODE:
{
        if (!(ev_backend (loop) & ev_embeddable_backends ()))
          croak ("passed loop is not embeddable via EV::embed,");

        RETVAL = e_new (sizeof (ev_embed), cb, default_loop_sv);
        e_fh (RETVAL) = newSVsv (ST (0));
        ev_embed_set (RETVAL, loop);
        if (!ix) START (embed, RETVAL);
}
	OUTPUT:
        RETVAL

#endif

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 (
           evapi.default_loop,
           s_fileno (fh, events & EV_WRITE), events,
           SvOK (timeout) ? SvNV (timeout) : -1.,
           e_once_cb,
           newSVsv (cb)
        );

PROTOTYPES: DISABLE

MODULE = EV		PACKAGE = EV::Watcher	PREFIX = ev_

int ev_is_active (ev_watcher *w)

int ev_is_pending (ev_watcher *w)

void ev_invoke (ev_watcher *w, int revents = EV_NONE)
	C_ARGS: e_loop (w), w, revents

int ev_clear_pending (ev_watcher *w)
	C_ARGS: e_loop (w), w

void ev_feed_event (ev_watcher *w, int revents = EV_NONE)
	C_ARGS: e_loop (w), w, revents

int keepalive (ev_watcher *w, SV *new_value = NO_INIT)
	CODE:
{
        RETVAL = w->e_flags & WFLAG_KEEPALIVE;

        if (items > 1)
          {
            int value = SvTRUE (new_value) ? WFLAG_KEEPALIVE : 0;

            if ((value ^ w->e_flags) & WFLAG_KEEPALIVE)
              {
                w->e_flags = (w->e_flags & ~WFLAG_KEEPALIVE) | value;
                REF (w);
                UNREF (w);
              }
          }
}
	OUTPUT:
        RETVAL

SV *cb (ev_watcher *w, SV *new_cb = NO_INIT)
	CODE:
{
        if (items > 1)
          {
            new_cb = s_get_cv_croak (new_cb);
            RETVAL = newRV_noinc (w->cb_sv);
            w->cb_sv = SvREFCNT_inc (new_cb);
          }
        else
          RETVAL = newRV_inc (w->cb_sv);
}
	OUTPUT:
        RETVAL

SV *data (ev_watcher *w, SV *new_data = NO_INIT)
	CODE:
{
	RETVAL = w->data ? newSVsv (w->data) : &PL_sv_undef;

        if (items > 1)
          {
            SvREFCNT_dec (w->data);
            w->data = newSVsv (new_data);
          }
}
	OUTPUT:
        RETVAL

SV *loop (ev_watcher *w)
	CODE:
	RETVAL = newRV_inc (w->loop);
	OUTPUT:
        RETVAL

int priority (ev_watcher *w, SV *new_priority = NO_INIT)
	CODE:
{
        RETVAL = w->priority;

        if (items > 1)

EV.xs  view on Meta::CPAN

	CODE:
        START (prepare, w);

void ev_prepare_stop (ev_prepare *w)
	CODE:
        STOP (prepare, w);

void DESTROY (ev_prepare *w)
	CODE:
        STOP (prepare, w);
        e_destroy (w);

MODULE = EV		PACKAGE = EV::Check	PREFIX = ev_check_

void ev_check_start (ev_check *w)
	CODE:
        START (check, w);

void ev_check_stop (ev_check *w)
	CODE:
        STOP (check, w);

void DESTROY (ev_check *w)
	CODE:
        STOP (check, w);
        e_destroy (w);

MODULE = EV		PACKAGE = EV::Fork	PREFIX = ev_fork_

void ev_fork_start (ev_fork *w)
	CODE:
        START (fork, w);

void ev_fork_stop (ev_fork *w)
	CODE:
        STOP (fork, w);

void DESTROY (ev_fork *w)
	CODE:
        STOP (fork, w);
        e_destroy (w);

#if CLEANUP_ENABLED

MODULE = EV		PACKAGE = EV::Cleanup	PREFIX = ev_cleanup_

void ev_cleanup_start (ev_cleanup *w)
	CODE:
        START (cleanup, w);

void ev_cleanup_stop (ev_cleanup *w)
	CODE:
        STOP (cleanup, w);

void DESTROY (ev_cleanup *w)
	CODE:
        STOP (cleanup, w);
        SvREFCNT_inc (w->loop); /* has been dec'ed on creation */
        e_destroy (w);

int keepalive (ev_watcher *w, SV *new_value = 0)
	CODE:
        RETVAL = 1;
	OUTPUT:
        RETVAL

#endif

MODULE = EV		PACKAGE = EV::Child	PREFIX = ev_child_

#if EV_CHILD_ENABLE

void ev_child_reinit ()
	CODE:
        ev_signal_stop  (evapi.default_loop, &childev);
        ev_signal_start (evapi.default_loop, &childev);

void ev_child_start (ev_child *w)
	CODE:
        START (child, w);

void ev_child_stop (ev_child *w)
	CODE:
        STOP (child, w);

void DESTROY (ev_child *w)
	CODE:
        STOP (child, w);
        e_destroy (w);

void set (ev_child *w, int pid, int trace)
	CODE:
        RESET (child, w, (w, pid, trace));

int pid (ev_child *w)
	ALIAS:
        rpid    = 1
        rstatus = 2
	CODE:
        RETVAL = ix == 0 ? w->pid
               : ix == 1 ? w->rpid
               :           w->rstatus;
	OUTPUT:
        RETVAL

#endif

MODULE = EV		PACKAGE = EV::Stat	PREFIX = ev_stat_

void ev_stat_start (ev_stat *w)
	CODE:
        START (stat, w);

void ev_stat_stop (ev_stat *w)
	CODE:
        STOP (stat, w);

void DESTROY (ev_stat *w)
	CODE:
        STOP (stat, w);
        e_destroy (w);

EV.xs  view on Meta::CPAN

        signal_ns = 1
	CODE:
{
	Signal signum = s_signum (signal);
        CHECK_SIG (signal, signum);

        RETVAL = e_new (sizeof (ev_signal), cb, ST (0));
        ev_signal_set (RETVAL, signum);
        if (!ix) START_SIGNAL (RETVAL);
}
	OUTPUT:
        RETVAL

ev_idle *idle (struct ev_loop *loop, SV *cb)
	ALIAS:
        idle_ns = 1
	CODE:
        RETVAL = e_new (sizeof (ev_idle), cb, ST (0));
        ev_idle_set (RETVAL);
        if (!ix) START (idle, RETVAL);
	OUTPUT:
        RETVAL

ev_prepare *prepare (struct ev_loop *loop, SV *cb)
	ALIAS:
        prepare_ns = 1
	CODE:
        RETVAL = e_new (sizeof (ev_prepare), cb, ST (0));
        ev_prepare_set (RETVAL);
        if (!ix) START (prepare, RETVAL);
	OUTPUT:
        RETVAL

ev_check *check (struct ev_loop *loop, SV *cb)
	ALIAS:
        check_ns = 1
	CODE:
        RETVAL = e_new (sizeof (ev_check), cb, ST (0));
        ev_check_set (RETVAL);
        if (!ix) START (check, RETVAL);
	OUTPUT:
        RETVAL

ev_fork *fork (struct ev_loop *loop, SV *cb)
	ALIAS:
        fork_ns = 1
	CODE:
        RETVAL = e_new (sizeof (ev_fork), cb, ST (0));
        ev_fork_set (RETVAL);
        if (!ix) START (fork, RETVAL);
	OUTPUT:
        RETVAL

#if CLEANUP_ENABLED

ev_cleanup *cleanup (struct ev_loop *loop, SV *cb)
	ALIAS:
        cleanup_ns = 1
	CODE:
        RETVAL = e_new (sizeof (ev_cleanup), cb, ST (0));
        SvREFCNT_dec (RETVAL->loop); /* must not keep loop object alive */
        ev_cleanup_set (RETVAL);
        if (!ix) START (cleanup, RETVAL);
	OUTPUT:
        RETVAL

#endif

ev_child *child (struct ev_loop *loop, int pid, int trace, SV *cb)
	ALIAS:
        child_ns = 1
	CODE:
#if EV_CHILD_ENABLE
        RETVAL = e_new (sizeof (ev_child), cb, ST (0));
        ev_child_set (RETVAL, pid, trace);
        if (!ix) START (child, RETVAL);
#else
        croak ("EV::child watchers not supported on this platform");
#endif
	OUTPUT:
        RETVAL

ev_stat *stat (struct ev_loop *loop, SV *path, NV interval, SV *cb)
	ALIAS:
        stat_ns = 1
	CODE:
        RETVAL = e_new (sizeof (ev_stat), cb, ST (0));
        e_fh (RETVAL) = newSVsv (path);
        ev_stat_set (RETVAL, SvPVbyte_nolen (e_fh (RETVAL)), interval);
        if (!ix) START (stat, RETVAL);
	OUTPUT:
        RETVAL

ev_embed *embed (struct ev_loop *loop, struct ev_loop *other, SV *cb = 0)
	ALIAS:
        embed_ns = 1
	CODE:
{
        if (!(ev_backend (other) & ev_embeddable_backends ()))
          croak ("passed loop is not embeddable via EV::embed,");

        RETVAL = e_new (sizeof (ev_embed), cb, ST (0));
        e_fh (RETVAL) = newSVsv (ST (1));
        ev_embed_set (RETVAL, other);
        if (!ix) START (embed, RETVAL);
}
	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:



( run in 1.549 second using v1.01-cache-2.11-cpan-98e64b0badf )