/*** Run the event processing loop and dispatch callbacks. @function aura.eventloop_dispatch @param loop [loop] eventloop instance @param flags [number, optional] bitmask of the following flags aura.EVTLOOP_ONCE and aura.EVTLOOP_NONBLOCK */ static int l_eventloop_dispatch(lua_State *L) { struct laura_eventloop *lloop; int flags = 0; TRACE(); aura_check_args(L, 1); if (!lua_isuserdata(L, 1)) aura_typeerror(L, 1, "ludata"); lloop = lua_touserdata(L, 1); if (lua_gettop(L) == 2) flags = lua_tonumber(L, 2); aura_eventloop_dispatch(lloop->loop, flags); return 0; }
int main() { slog_init(NULL, 18); int ret; struct aura_node *n = aura_open("dummy", NULL); aura_wait_status(n, AURA_STATUS_ONLINE); ret = aura_start_call(n, "echo_u16", calldonecb, (void *) ARG, 0x0102); printf("call started with ret %d\n", ret); if (ret !=0) return ret; ret = aura_set_event_callback(n, "ping", pingcb, (void *) ARG2); printf("event handler set with ret %d\n", ret); aura_eventloop_dispatch(aura_node_eventloop_get(n), 0); printf("Closing the shop..."); aura_close(n); return 0; }