/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }