/**
* io_new_listener - create a new accepting listener.
* @fd: the file descriptor.
- * @start: the first function to call on new connections.
- * @finish: the function to call when the connection is closed or fails.
- * @arg: the argument to both @start and @finish.
+ * @init: the function to call for a new connection
+ * @arg: the argument to @init.
*
- * When @fd becomes readable, we accept() and turn that fd into a new
- * connection.
+ * When @fd becomes readable, we accept() and pass that fd to init().
*
* Returns NULL on error (and sets errno).
*/
-#define io_new_listener(fd, start, finish, arg) \
+#define io_new_listener(fd, init, arg) \
io_new_listener_((fd), \
- typesafe_cb_preargs(struct io_plan, void *, \
- (start), (arg), \
- struct io_conn *), \
- typesafe_cb_preargs(void, void *, (finish), \
- (arg), struct io_conn *), \
+ typesafe_cb_preargs(void, void *, \
+ (init), (arg), \
+ int fd), \
(arg))
struct io_listener *io_new_listener_(int fd,
- struct io_plan (*start)(struct io_conn *,
- void *arg),
- void (*finish)(struct io_conn *,
- void *arg),
+ void (*init)(int fd, void *arg),
void *arg);
/**