Ejemplo n.º 1
0
/**
 * Create a new idle object.  Arguments:
 *   1 - callback function.
 *
 * @see watcher_new()
 *
 * [+1, -0, ?]
 */
static int idle_new(lua_State* L) {
    ev_idle*  idle;

    idle = watcher_new(L, sizeof(ev_idle), IDLE_MT);
    ev_idle_init(idle, &idle_cb);
    return 1;
}
Ejemplo n.º 2
0
/**
 * Create a new io object.  Arguments:
 *   1 - callback function.
 *   2 - fd (file descriptor number)
 *   3 - READ | WRITE (what operation to watch)
 *
 * @see watcher_new()
 *
 * [+1, -0, ?]
 */
static int io_new(lua_State* L) {
    int     fd     = luaL_checkint(L, 2);
    int     events = luaL_checkint(L, 3);
    ev_io*  io;

    io = watcher_new(L, sizeof(ev_io), IO_MT);
    ev_io_init(io, &io_cb, fd, events);
    return 1;
}
Ejemplo n.º 3
0
/**
 * Create a new child object.  Arguments:
 *   1 - callback function.
 *   2 - pid number (0 for any pid)
 *   3 - trace (either false - only activate the watcher when the process
 *       terminates or true - additionally activate the watcher when the
 *       process is stopped or continued).
 *
 * @see watcher_new()
 *
 * [+1, -0, ?]
 */
static int child_new(lua_State* L) {
    int         pid = luaL_checkint(L, 2);
    int         trace = luaL_checkbool(L, 3);
    ev_child*   child;

    child = (ev_child*)watcher_new(L, sizeof(ev_child), CHILD_MT);
    ev_child_init(child, &child_cb, pid, trace);
    return 1;
}
Ejemplo n.º 4
0
/**
 * Create a new timer object.  Arguments:
 *   1 - callback function.
 *   2 - after (number of seconds until timer should trigger).
 *   3 - repeat (number of seconds to wait for consecutive timeouts).
 *
 * @see watcher_new()
 *
 * [+1, -0, ?]
 */
static int timer_new(lua_State* L) {
    ev_tstamp after  = luaL_checknumber(L, 2);
    ev_tstamp repeat = luaL_optnumber(L, 3, 0);
    ev_timer* timer;

    if ( after <= 0.0 )
        luaL_argerror(L, 2, "after must be greater than 0");
    if ( repeat < 0.0 )
        luaL_argerror(L, 3, "repeat must be greater than or equal to 0");

    timer = watcher_new(L, sizeof(ev_timer), TIMER_MT);
    ev_timer_init(timer, &timer_cb, after, repeat);
    return 1;
}