-event_t event_register(int fd, void *data);
-bool event_fire(event_t event);
-#define event_data(event) ((event)->data)
+server_t *server_register(int fd, run_client_t runner, void *data);
+void server_delete(server_t **server);
+void server_release(server_t *server);
+
+static inline void server_none(server_t *server)
+{
+ ev_io_stop(global_loop, &server->io);
+}
+
+static inline void server_rw(server_t *server)
+{
+ ev_io_stop(global_loop, &server->io);
+ ev_io_set(&server->io, server->fd, EV_READ | EV_WRITE);
+ ev_io_start(global_loop, &server->io);
+}
+
+static inline void server_ro(server_t *server)
+{
+ ev_io_stop(global_loop, &server->io);
+ ev_io_set(&server->io, server->fd, EV_READ);
+ ev_io_start(global_loop, &server->io);
+}