---- Constants: * `LEAVE` - When returned will cause event callback to be cancelled * `EV_READ` * Marks read readiness/event capture. * Read readiness can also mean that an 'accept' operation will succeed, or a disconnection on the other end is detected (read will return nothing). * `EV_WRITE` * Marks write readiness/event capture. * Can also mark the successful completion of a non-blocking connect if `SO_ERROR`@`SOL_SOCKET` is zero. * `EV_SIGNAL` * Marks signal received/event capture * `EV_TIMEOUT` * Timeout occurred while waiting for an event * `EV_PERSIST` * Marks an event as persistent and not one-shot * `EV_*` * Can be OR'd together to capture multiple events that make sense. (Should not OR `EV_READ`/`EV_WRITE` with `EV_SIGNAL`) * Can be received OR'd together. For example: `EV_READ` | `EV_TIMEOUT` means that a timeout occurred while waiting for a read event. * `EVBUFFER_READ` * Marks that the input buffer has data available > low watermark * `EVBUFFER_WRITE` * Marks that the output buffer level is below low watermark * `EVBUFFER_EOF` * Received tagged with either read/write based on location received in the error callback * `EVBUFFER_ERROR` * An error occurred (tagged w/ either read/write) and the error is in `errno` * `EVBUFFER_TIMEOUT` * A timeout occurred (tagged w/ either read/write) Functions: [[toc levels=1]] ## luaevent.core.new * Allocates a new event 'core' (`event base`) ## event_callback fn * Input: `(event)` * Output: `(newEvent, [newTimeout])` * `newEvent` - New event to register, typically `LEAVE`, `EV_READ`, `EV_WRITE`, or `EV_READ`|`EV_WRITE` * `newTimeout` - New timeout value to use ## core:addevent * Adds a new event to the eventloop * Input: `(fd, event, event_callback, [timeout])` * `fd` - File descriptor to read from / or NIL for pure timeout event * `event` - `EV_*` flagset to mark what events to capture * `EV_SIGNAL` and `EV_PERSIST` is unavailable currently * `EV_PERSIST` is used internally. * `event_callback` - Callback to call... (see above) * `timeout` - Time in seconds to timeout (decimal values supported) * Output: `event_callback` object * Has a `close` and `__gc` FN which will erase the callback, so preserve this until done. ## core:loop * Begins the event loop and doesn't return until there are no events left ## core:close (__gc) * Closes the event base * Do not allow this to be called while `core:loop` is running